R 从改变边界的地图中获取质心
我正在使用一个名为histmaps(在这里找到)的包 )存储有关瑞典行政区历史边界的信息。我感兴趣的是找到1900年到1920年间存在的每个教区的中心。由于教区的边界随着时间的推移而变化,因此需要进行一些调整 包的创建者通过引入历史边界解决了这一问题,如:R 从改变边界的地图中获取质心,r,gis,sp,centroid,R,Gis,Sp,Centroid,我正在使用一个名为histmaps(在这里找到)的包 )存储有关瑞典行政区历史边界的信息。我感兴趣的是找到1900年到1920年间存在的每个教区的中心。由于教区的边界随着时间的推移而变化,因此需要进行一些调整 包的创建者通过引入历史边界解决了这一问题,如: period_map我建议您下载{sf}包格式的教区边界(似乎有格式参数仅用于此目的);然后,您将能够应用函数sf::st_centroid() 库(组图) 图书馆(dplyr) 图书馆(sf) polygons@johnny我已经更新了我的
period_map我建议您下载
{sf}
包格式的教区边界(似乎有格式参数仅用于此目的);然后,您将能够应用函数sf::st_centroid()
库(组图)
图书馆(dplyr)
图书馆(sf)
polygons@johnny我已经更新了我的答案来说明如何:)关键部分是历史边界()调用中的format=“sf”参数抱歉打扰你,@Jindra,但还有一件事。当多边形不存在时,您是否能够使其以相同的方式工作,但这不是质心的问题,而是hist_边界函数的问题-它返回多个周期的结果似乎不太合法。考虑对象。大小(组织边界(C(1900, 1920),格式化=“SF”))-你会期望它大致等于对象和大小的总和(组织边界(C(1900),格式化=“SF”))和对象。大小(组织边界(C(1920),格式化=“SF”))。显然不是。啊,我现在明白了。祝你周末愉快,谢谢你的耐心!
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”
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)