首页 > 解决方案 > 从具有变化边界的地图中获取质心

问题描述

我正在使用一个名为 histmaps 的包(可在此处找到 https://github.com/junkka/histmaps),其中存储了有关瑞典行政区历史边界的信息。我有兴趣找到 1900 年到 1920 年间存在的每个教区的质心。由于教区的边界随着时间而变化,因此需要进行一些调整。

包的创建者通过引入 hist_boundaries 解决了这个问题,例如:

period_map <- hist_boundaries(c(1900, 1920))

现在,我完全不知道如何从周期图中找到每个教区的质心。

我试过这段代码:

centroids <- 
  gCentroid(
    spgeom = methods::as( object = period_map, Class = 'Spatial' )
    , byid = TRUE
  )

但这只会返回:

Error in methods::as(object = period_map, Class = "Spatial") : 
  no method or default for coercing “list” to “Spatial”

有什么建议么?

标签: rgisspcentroid

解决方案


我建议你下载{sf}包格式的教区边界(似乎有格式参数只是为了这个目的);然后,您将能够应用该功能sf::st_centroid()

library(histmaps)
library(dplyr)
library(sf)

polygons <- hist_boundaries(1900, format = "sf")

centroids <- polygons %>% 
  st_centroid()

plot(st_geometry(polygons))
plot(centroids, pch = 4, col = "red", add = T)

在此处输入图像描述


推荐阅读