要更改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的栅格(左)和带有更改值的栅格(右): this
因此,我认为多边形的工作方式相同。因此,从此栅格数据集生成一些多边形:
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(左)和带有奇怪更改值的栅格(右)的栅格:
因此,我的问题是如何更改多边形中的栅格值。
答案 0 :(得分:3)
这已经按照Hijmans先生在评论中所承诺的方式得到修复 感谢您使用这种简单,便捷的地理数据处理方式!
最后,我自己找到了答案。
函数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
取得栅格并使用字段值更新与多边形对应的所有单元格。