如何空间连接2个空间多边形数据框?

时间:2019-05-23 07:17:15

标签: r sp

我是R的新手;)我有2个SpatialPolygonsDataFrames,我想在空间上加入。但是到目前为止,我还没有找到有用的信息。

因此2个SpatialPolygonsDataFrames完全相同。相同形状,范围,crs,数据框中的行数(形状数)。只有它们没有共同的ID才能将两者结合在一起。所以我想我可以像在ArcGIS中以前使用的那样进行空间连接?

所以我找到了一些有关合并的代码,但这不是我想要的,我也不知道如何更改它,所以它符合我的意图。

作为输出,我想要1个空间多边形数据框,其中包含2个输入数据框的属性(列)。我希望有人能帮助我!

1 个答案:

答案 0 :(得分:1)

我正在尝试坚持使用sprgeos

据我了解,如果两个SpatialPolygonsDataFrames都包含可以完全相同的多边形:

library(raster)

int <- intersect(sp1, sp2)

它使用来自两个输入的数据列创建一个新的SpatialPolygonsDataFrames,并且由于多边形完全重叠,您将获得相同的多边形。

更新:如果多边形不完全相同,则取一个SpatialPolygonsDataFrames的质心,然后将其与另一个合并。

centroids <- gCentroid(sp1, byid = T)
sp1_centroid <- SpatialPointsDataFrame(centroids, sp1@data)

centroiddata <-  sp2 %over% sp1_centroid 

sp12 <- spCbind(sp2, centroiddata)

如果多边形具有怪异的形状,但总体上仍然非常相似,则可以使用gPointsOnSurface()进行相同的操作,因为gCentroid()可以明显地计算出多边形的质心。如果两个df中的多边形非常不同,则可能应该计算重叠度,例如像this并选择重叠度最大的多边形。