似乎已经以不同的形式多次问过这个问题,但是我找不到正确的解决方案。我有一个带有多个Polygons的SpatialPoint对象,并想使用“ ID”槽子集和绘制一个多边形。
使用此问题的示例:
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
我可以提取SpatialPolygons对象的ID
SpP@polygons[[1]]@ID # one ID
sapply(SpP@polygons, function(x) x@ID) # all IDs
但是,如何使用此信息对一个多边形进行子集和绘制?非常感谢您的帮助,在此先感谢!
可以使用进行子设置[]
。请参阅SpatialPolygons类帮助(?'SpatialPolygons-class'
):
Methods [...]:
[ : select subset of (sets of) polygons; NAs are not permitted in the row index"
因此,使用您的数据:
library(sp)
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)
Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
# plot single polygon
par(mfrow=c(3,1))
plot(SpP[1])
plot(SpP[3])
# or using IDs: retrieve list of all IDs
IDs = sapply(SpP@polygons, function(x) x@ID)
# plot polygon with specific ID
plot(SpP[which(IDs == 's2')])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句