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

How to spatial join 2 spatial polygon data frames?

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

所以2个SpatialPolygonsDataFrames是一模一样的。相同的形状、范围、crs、数据框中的行数(形状数)。只有他们没有共同的 ID 才能将两者结合起来。所以我想我可以做一个空间连接,就像我以前在 ArcGIS 中使用的那样?!

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

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

我正在努力坚持 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 并选择重叠最大的那个。