我是R的新手;)我有2个SpatialPolygonsDataFrames,我想在空间上加入。但是到目前为止,我还没有找到有用的信息。
因此2个SpatialPolygonsDataFrames完全相同。相同形状,范围,crs,数据框中的行数(形状数)。只有它们没有共同的ID才能将两者结合在一起。所以我想我可以像在ArcGIS中以前使用的那样进行空间连接?
所以我找到了一些有关合并的代码,但这不是我想要的,我也不知道如何更改它,所以它符合我的意图。
作为输出,我想要1个空间多边形数据框,其中包含2个输入数据框的属性(列)。我希望有人能帮助我!
答案 0 :(得分:1)
我正在尝试坚持使用sp
和rgeos
。
据我了解,如果两个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并选择重叠度最大的多边形。