gpt4 book ai didi

r - 如何使用 sf::st_centroid 计算多边形的质心?

转载 作者:行者123 更新时间:2023-12-04 07:49:56 24 4
gpt4 key购买 nike

我正在尝试使用新的“sf”包在 R 中操作一些巴西人口普查数据。我能够导入数据,但是当我尝试创建原始多边形的质心时出现错误

library(sf)

#Donwload data
filepath <- 'ftp://geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_de_setores_censitarios__divisoes_intramunicipais/censo_2010/setores_censitarios_shp/ac/ac_setores_censitarios.zip'
download.file(filepath,'ac_setores_censitarios.zip')
unzip('ac_setores_censitarios.zip')
d <- st_read('12SEE250GC_SIR.shp',stringsAsFactors = F)

现在我尝试创建一个包含列“几何”质心的新几何列,但出现错误:
d$centroid <- st_centroid(d$geometry)
Warning message:
In st_centroid.sfc(d$geometry) :
st_centroid does not give correct centroids for longitude/latitude data

我该如何解决这个问题?

最佳答案

所有底层的 GEOS 函数 sf需要投影坐标才能正常工作,所以你应该运行 st_centroid根据适当的预测数据。我对巴西可用的 CRS 了解不多,但 EPSG:29101 似乎工作正常:

library(tidyverse)

d$centroids <- st_transform(d, 29101) %>%
st_centroid() %>%
# this is the crs from d, which has no EPSG code:
st_transform(., '+proj=longlat +ellps=GRS80 +no_defs') %>%
# since you want the centroids in a second geometry col:
st_geometry()

# check with
plot(st_geometry(d))
plot(d[, 'centroids'], add = T, col = 'red', pch = 19)

关于r - 如何使用 sf::st_centroid 计算多边形的质心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46176660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com