Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从改变边界的地图中获取质心_R_Gis_Sp_Centroid - Fatal编程技术网

R 从改变边界的地图中获取质心

R 从改变边界的地图中获取质心,r,gis,sp,centroid,R,Gis,Sp,Centroid,我正在使用一个名为histmaps(在这里找到)的包 )存储有关瑞典行政区历史边界的信息。我感兴趣的是找到1900年到1920年间存在的每个教区的中心。由于教区的边界随着时间的推移而变化,因此需要进行一些调整 包的创建者通过引入历史边界解决了这一问题,如: period_map我建议您下载{sf}包格式的教区边界(似乎有格式参数仅用于此目的);然后,您将能够应用函数sf::st_centroid() 库(组图) 图书馆(dplyr) 图书馆(sf) polygons@johnny我已经更新了我的

我正在使用一个名为histmaps(在这里找到)的包 )存储有关瑞典行政区历史边界的信息。我感兴趣的是找到1900年到1920年间存在的每个教区的中心。由于教区的边界随着时间的推移而变化,因此需要进行一些调整

包的创建者通过引入历史边界解决了这一问题,如:


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)