提取多边形质心的坐标

时间:2020-07-04 10:27:30

标签: r polygon raster

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

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.

1 个答案:

答案 0 :(得分:3)

您可以使用id = 中的gCentroid参数为每个点选择ID标签。从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")

enter image description here