提取多边形质心的坐标

Extract coordinates of polygons centroids

我想将所有多边形质心的纬度和经度添加到 SpatialPolygonsDataFrame 的数据框中。但是,由于我不确定在使用 gCentroid 时如何提取多边形 ID,因此我不确定如何进行合并(请参阅下面的第 3 行代码)。有人能帮我吗?非常感谢!

library(tidyverse)
library(rgeos)
ETH <- getData("GADM", country = "ETH", level = 3) # example of SpatialPolygonsDataFrame
cent <- as.data.frame(gCentroid(ETH, byid=TRUE)) # extraction of the coordinates of the polygons' centroids
ETH@data <- ETH@data %>% left_join(cent, by=?) # Here, I am not sure how to add the coordinates of the polygons' centroids to the dataframe.

您可以使用gCentroid中的id = 参数来为每个点选择ID标签。 Select 一个包含来自 ETH 的唯一条目的列来填充它。这些被添加为行名称,因此您可以使用 tibble::rownames_to_column 将它们转换为列。这允许左连接:

library(tidyverse)
library(rgeos)

ETH      <- getData("GADM", country = "ETH", level = 3) 
cent     <- as.data.frame(gCentroid(ETH, byid = TRUE, id = ETH@data$GID_3))
cent     <- tibble::rownames_to_column(cent, var = "GID_3")
ETH@data <- ETH@data %>% left_join(cent, by = "GID_3")

我们可以通过绘制结果来显示这一点,质心为红点:

plot(ETH)
points(ETH@data$x, ETH@data$y, col = "red")