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

如何获取多边形坐标的均值点并添加至projects数据框?

解决st_centroid()报错的问题

你遇到的错误是因为多边形几何存在无效性(比如重复顶点、自相交这类Shapefile常见问题),按以下步骤就能解决:

1. 修复无效几何

用st_make_valid()自动处理几何对象的无效问题:

projects <- st_make_valid(projects)

2. 重新计算质心

修复后再调用st_centroid()即可,也可以用st_point_on_surface()(适合质心不在多边形内部的场景):

# 计算质心并添加到数据框
projects$centroid <- st_centroid(projects$geometry)

# 提取质心的经纬度到单独列
projects$lon <- st_coordinates(projects$centroid)[, 1]
projects$lat <- st_coordinates(projects$centroid)[, 2]

备选方法:直接计算顶点坐标均值

如果不想处理几何有效性,也可以从st_coordinates()的结果中按多边形分组计算均值:

# 将坐标转成数据框并分组计算均值
coord_df <- as.data.frame(st_coordinates(projects))
mean_coords <- coord_df %>%
  group_by(L1) %>%
  summarise(mean_lon = mean(X), mean_lat = mean(Y))

# 将均值合并回原数据框
projects <- projects %>%
  mutate(L1 = row_number()) %>%
  left_join(mean_coords, by = "L1")

注意:顶点坐标均值和几何质心的结果会有细微差别,前者是所有顶点的算术平均,后者是几何意义上的中心,按需选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:55:16