从边界不断变化的地图中获取质心
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)
我正在使用一个名为 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)