【问题标题】:Extract coordinates of polygons centroids提取多边形质心的坐标
【发布时间】:2020-07-04 10:27:30
【问题描述】:

我想将所有多边形质心的纬度和经度添加到 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.

【问题讨论】:

    标签: r polygon raster


    【解决方案1】:

    您可以使用gCentroid 中的id = 参数来选择每个点的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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-21
      • 2013-11-22
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      相关资源
      最近更新 更多