r - 使用空间多边形更改栅格值

标签 r plot spatial raster r-raster

要更改 SpatialPoints 下的栅格值,您只需使用 [

r <- raster(system.file("external/test.grd", package="raster"))
rTp <- rasterToPoints(r, spatial = T)

set.seed(666)
rTpS <- rTp[sample(1:length(rTp), 500),]
plot(r)
plot(rTpS, add = TRUE, pch = ".")

现在,空间点下方的栅格值更改如下:

r1 <- r
r1[rTpS] <- 99999
plot(r1)

具有 SpatialPoints 的栅格(左)和具有更改值的栅格(右): Raster with SpatialPoints (left) and raster with changed values (right)

因此,我假设多边形的工作方式相同。因此,从该栅格数据集中生成一些多边形:

rst <- as.integer(stretch(r, 0, 10))
rTpol <- rasterToPolygons(rst, dissolve = T)
rTpol <- rTpol[rTpol$layer > 3,]

plot(r)
plot(rTpol, add = T)

rst[rTpol[,]] <- 100
plot(rst)

# also tried 
# rst[rTpol] <- 100

但是,当我尝试更改某些SpatialPolygons下面的栅格值时,不知何故多边形的ID(或其他内容)。然而,它应该是 100。

具有 SpatialPolygons 的栅格(左)和具有奇怪变化值的栅格(右): Raster with SpatialPolygons (left) and raster with strangely changed values (right)

因此,我的问题是如何更改多边形内的栅格值。

最佳答案

编辑(两年后):

这个问题已按照 Hijmans 先生在评论中的 promise 得到修复。
感谢您提供这种简单、出色且方便的地理数据处理方式!

原始答案:

最后,我自己找到了答案。

函数rasterize()有助于解决这个问题。

r <- raster(system.file("external/test.grd", package="raster"))
rst <- as.integer(stretch(r, 0, 10))
plot(rst)
rTpol <- rasterToPolygons(rst, dissolve = TRUE)
rTpol <- rTpol[rTpol$layer > 3,]
plot(rTpol)

rpol <- rasterize(rTpol, rst, field = 100, update = TRUE)
plot(rpol)

rasterize()field = 值放入从多边形生成的栅格单元中,而 update = TRUE 则获取栅格并更新所有与具有字段值的多边形相对应的单元格。

结果如下所示: enter image description here

关于r - 使用空间多边形更改栅格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38609065/

相关文章:

mysql - 为什么mysql不利用这个空间索引呢?

r - RCPP +内联-创建和调用其他功能

r - 填充ggplot2散点图中叠加的椭圆

r - 增加内存限制/无法分配大小为 69.2GB 的向量

r - 用户定义的函数在两个数据集之间进行 t 检验

sql - 如何在我的 SQL Server 2008 查询中指定此 SQL 索引提示?

r - ggplot 和 plot 如何以不同方式处理 inf 值?

r - 更改绘图轴上刻度线的间距?

R Shiny 服务器段错误

python - 有效地查找 3D 空间中沿特定轴的最近点