如何空间连接 2 个空间多边形数据框?
How to spatial join 2 spatial polygon data frames?
我是 R 的新手;)我有 2 个 SpatialPolygonsDataFrames,我想在空间上加入它们。但到目前为止我还没有找到有用的信息。
所以2个SpatialPolygonsDataFrames是一模一样的。相同的形状、范围、crs、数据框中的行数(形状数)。只有他们没有共同的 ID 才能将两者结合起来。所以我想我可以做一个空间连接,就像我以前在 ArcGIS 中使用的那样?!
所以我找到了一些关于合并的代码,但这不是我想要的,我也不知道如何更改它,所以它符合我的意图。
作为输出,我想要 1 个空间多边形数据框,其中包含 2 个输入数据框的属性(列)。我希望有人能帮助我!
我正在努力坚持 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 并选择重叠最大的那个。
我是 R 的新手;)我有 2 个 SpatialPolygonsDataFrames,我想在空间上加入它们。但到目前为止我还没有找到有用的信息。
所以2个SpatialPolygonsDataFrames是一模一样的。相同的形状、范围、crs、数据框中的行数(形状数)。只有他们没有共同的 ID 才能将两者结合起来。所以我想我可以做一个空间连接,就像我以前在 ArcGIS 中使用的那样?!
所以我找到了一些关于合并的代码,但这不是我想要的,我也不知道如何更改它,所以它符合我的意图。
作为输出,我想要 1 个空间多边形数据框,其中包含 2 个输入数据框的属性(列)。我希望有人能帮助我!
我正在努力坚持 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 并选择重叠最大的那个。