You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中转换加拿大选区Shapefile坐标并计算多边形质心?

空间数据处理解决方案

1. 转换为十进制经纬度(WGS84)

你之前的错误在于使用st_as_sf时多余指定了coords参数——这个参数是给非空间数据框转sf用的,而你的输入已经是带坐标系的SpatialPolygonsDataFrame。正确流程如下:

library(sf)

# 将SPDF转为sf对象,自动保留原UTM坐标系
sf_obj <- st_as_sf(MAP_HERE)

# 转换到WGS84(EPSG:4326,即十进制经纬度)
sf_wgs84 <- st_transform(sf_obj, crs = 4326)

# 此时可提取经纬度坐标
head(st_coordinates(sf_wgs84))

2. 获取原SPDF的边界框

直接用bbox()函数获取原UTM坐标系下的边界框:

# 提取边界框(返回min/max的x、y值矩阵)
map_bbox <- bbox(MAP_HERE)
print(map_bbox)

如果已经转为sf对象,也可以用st_bbox():

sf_bbox <- st_bbox(sf_obj)

3. 计算多边形质心

推荐:基于原UTM坐标系计算(平面坐标系质心精度更高)

# 计算原坐标系下的质心
centroids_utm <- st_centroid(sf_obj)

# 按需转换为经纬度格式
centroids_wgs84 <- st_transform(centroids_utm, crs = 4326)

# 提取质心的经纬度数值
centroid_coords <- st_coordinates(centroids_wgs84)
head(centroid_coords)

可选:直接在经纬度坐标系计算(精度略低)

若不需要高精度,也可以直接在WGS84下计算:

centroids_wgs84 <- st_centroid(sf_wgs84)

内容的提问来源于stack exchange,提问作者Abed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:22:06