【问题标题】:R extract raster and histogram for different spatialpolygon attributesR提取不同空间多边形属性的栅格和直方图
【发布时间】:2019-04-28 00:09:39
【问题描述】:

我想根据多边形属性的不同组合创建栅格值的直方图。以下可重现数据:

library(raster)
library(sp)   
poly <- raster(nrow=10, ncol=10)
poly[] <- runif(ncell(poly)) * 10
poly <- rasterToPolygons(poly, fun=function(x){x > 9})
r <- raster(nrow=100, ncol=100)
r[] <- runif(ncell(r))
poly@data$place<-sample(letters[1:3], length(poly), TRUE)
poly@data$rank<-sample.int(3, length(poly), replace = TRUE)
plot(r)
plot(poly, add=TRUE, lwd=4) 
v <- raster::extract(r, poly, df=TRUE)

我可以用ggplotv 中的所有ID(即多边形)绘制直方图

ggplot(v, aes(layer)) + geom_histogram(aes(y = stat(count / sum(count))), binwidth = 0.25)

但是,我想创建一组基于 rank 属性(即 1,2,3)的三个直方图和另一组基于 place 属性的三个直方图(即 a,公元前)。也许在ggplot中使用facet,但我不确定如何将v中的ID链接到poly中的属性。

【问题讨论】:

    标签: r r-raster sp


    【解决方案1】:

    你的例子:

    library(raster)
    #Loading required package: sp
    pr <- raster(nrow=10, ncol=10)
    set.seed(1)
    values(pr) <- runif(ncell(pr)) * 10
    poly <- rasterToPolygons(pr, fun=function(x){x > 9})
    poly$place <- sample(letters[1:3], length(poly), TRUE)
    poly$rank <- sample.int(3, length(poly), replace = TRUE)
    
    r <- raster(nrow=100, ncol=100)
    values(r) <- runif(ncell(r))
    v <- raster::extract(r, poly, df=TRUE)
    

    为多边形分配一个明确的 ID,只保留感兴趣的变量,并从 SpatialPolygonsDataFrame 中提取 data.frame。

    poly$ID <- 1:length(poly)
    poly$layer <- NULL
    d <- data.frame(poly)
    

    合并

    vd <- merge(d, v, by="ID")
    

    选择一个子集并制作直方图

    x <- vd[vd$place == "a",]
    hist(x$layer)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2016-12-01
      相关资源
      最近更新 更多