这是 gis.stackexchange 的重新发布。问题是fairly long and detailed,所以我没有重复。一个简单的问题是,我无法找到一种方法来对PolySet
包中使用的PBSmapping
数据进行子集化。一种选择是使用 maptools 转换为SpatialPolygons
,将其子集化,然后转换回PolySet
,但显然这只是一种解决方法。任何帮助都将受到高度赞赏。
答案 0 :(得分:4)
您正在寻找attr:
df[attr(df, "PolyData")$NAME_1 == 'Bumthang',]
编辑:
这会有用吗?
参数col
代表颜色,并与PID值相关联。
df$Z='white'
df[attr(df, "PolyData")$NAME_1 == 'Bumthang',]$Z ="red"
plotPolys(df,col=df$Z)
您还可以使用提供边框颜色的arg border
。
如果你把它设为“白色”,那么显示的唯一区域将是Bumthang。
这样的事情会起作用:
df$W = 'white'
#borders of the region
df[attr(df, "PolyData")$NAME_1 == 'Bumthang',]$W ="red"
plotPolys(df,col=df$Z,border=df$W)
答案 1 :(得分:0)
使用另一个库来分配文件怎么样?您可以使用rgdal对数据进行子集化,保存到文件,导入包含子集的shapefile并使用PBSMapping对其进行绘制。
library(rgdal)
library(PBSmapping)
df <- readOGR(".","df")
subset <- df[df$NAME_1=="Bumthang",]
writeOGR(subset, ".", "bumthang", driver="ESRI Shapefile")
bum = importShapefile("bumthang.shp")
plotPolys(bum, projection=TRUE)
或者你可以完全取消PBSmapping。
plot(subset, axes=TRUE)