r - 提取多边形质心的坐标
问题描述
我想将所有多边形质心的纬度和经度添加到 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.
解决方案
您可以使用id =
参数 ingCentroid
为每个点选择 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")
推荐阅读
- php - 用php从mysql表中形成多维数组
- xslt - XSL - 根据其他元素的可用性强制元素
- java - 在 java 版本“15.0.1”中安装 Bouncy Castle Provider
- mysql - 如何在mysql中获取自定义日期格式
- python-3.x - Python subprocess.run() 用于:kill -HUP `ps -C gunicorn fch -o pid | 头-n 1`
- c# - 为什么我的暂停菜单脚本只工作一次?SetActive 仅适用于 false
- css - Django 模板中的 CSS 继承
- r - 仅查找与我的数据的某些部分的关系
- image - 图像合并颤动
- typescript - 类属性是符号时的保护类型?