如何在PBSmapping包中对PolySet数据进行子集化?

时间:2012-02-23 07:37:47

标签: r

这是 gis.stackexchange 的重新发布。问题是fairly long and detailed,所以我没有重复。一个简单的问题是,我无法找到一种方法来对PolySet包中使用的PBSmapping数据进行子集化。一种选择是使用 maptools 转换为SpatialPolygons,将其子集化,然后转换回PolySet,但显然这只是一种解决方法。任何帮助都将受到高度赞赏。

2 个答案:

答案 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)

enter image description here

您还可以使用提供边框颜色的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)

enter image description here

答案 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)

enter image description here

或者你可以完全取消PBSmapping。

 plot(subset, axes=TRUE)

enter image description here