寻找允许选择/识别与源多边形共享线段的多边形的功能

时间:2013-11-05 08:43:29

标签: r select gis shapefile

为了选择/识别shapefile的边框多边形,我想使用一个能够选择/识别与源多边形共享线段的多边形的函数。

有数字:

我有这种shapefile:

enter image description here

使用gUnionCascaded包中的rgeos,我有第二个带有“轮廓多边形”的shapefile

enter image description here

现在我正在寻找一种能够选择/识别边界多边形(图中阴影)的函数,即第一个shapefile的多边形,它与第二个shapefile的多边形共享一个线段。 :

enter image description here

2 个答案:

答案 0 :(得分:3)

根据Josh O'Brien的提议,我使用了rgeos::gRelate()函数。 我得到3个DE-9IM案例:

x <- gRelate(shapefile.1, shapefile.2, byid = TRUE)
table(x)
2FF10F212 2FF11F212 2FF1FF212 
       63      2470    174495        

生成的DE-9IM字符串代码可以解释如下:

1)2FF1FF212:表示第一个shapefile中不与第二个shapefile的多边形边界相交的多边形

2)2FF11F212:表示第一个shapefile中与第二个shapefile的多边形的边界相交的多边形与一行

3)2FF10F212:表示第一个shapefile中与第二个shapefile的多边形边界相交的多边形与点

最后两个案例是我正在寻找的边界多边形。 我有他们的ID:

poly.border <- which(x %in% c("2FF10F212","2FF11F212"))

答案 1 :(得分:1)

我想提出上述解决方案,这对我帮助很大。要在DE-9IM解决方案中添加更多内容(请参阅DE-9IM上的维基百科页面),请参阅下面的应用程序 - 在这种情况下,我如何使用它来分配没有边界任何至少有一个CAFO的县的县/ IHO(集中动物饲养作业/工业生猪作业)中。也就是说,将下面的蓝色县与超级形状进行比较(就像使用gUnionCascaded的原始提问者一样),并且该向量用于对noIHO县进行分组。

IHOblob = gUnionCascaded(hasIHOcounties)
plot(IHOblob)
touch.v = gRelate(noIHO.counties, IHOblob, byid = T)
counties.not.touching<-(touch.v %in% c("FF2FF1212")) #DE-9IM is super cool.

notouchIHO.counties = noIHO.counties[counties.not.touching,]
plot(notouchIHO.counties, co="light blue", add=T)
invisible(text(getSpPPolygonsLabptSlots(notouchIHO.counties),
  labels=as.character(notouchIHO.counties$NAME), cex=0.4))
#wish I had a better way to label polys than above...`

你可以在这里和这里看到它:

IHO map

IHO blob