从边界不断变化的地图中获取质心

Get centroid from map with changing boundaries

我正在使用一个名为 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
  )

但只有 returns:

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

有什么建议吗?

我建议您下载 {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)