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

使用st_centroid获取点集质心失败,如何返回单个质心点?

解决st_centroid返回单个点簇质心的问题

你遇到的问题是因为st_centroid默认会对输入的每个独立几何对象分别计算质心。你的df_sf是包含4个单独点的sf对象,所以它会返回每个点自身的质心(也就是原点点集)。要得到整个点簇的单个质心,需要先把所有点合并成一个单一的几何对象,再计算质心。

修改后的代码:

library(dplyr)
library(sf)

df <- read.table(header=TRUE, text= "site   lat      long 
site1  41.21   -115.11
site2   45.3    -112.31
site3  41.15   -115.15 
site4  41.12   -115.19")

df_sf <- st_as_sf(df, coords = c('long', 'lat'))

# 合并所有点为一个MULTIPOINT对象,再计算质心
cluster_centroid <- df_sf %>% 
  st_union() %>% 
  st_centroid()

# 查看结果
cluster_centroid

代码说明:

  • st_union(df_sf):将sf对象中的所有独立点几何合并为一个MULTIPOINT类型的几何对象,把多个点变成一个整体。
  • st_centroid():此时对合并后的单一几何对象计算,就会返回整个点簇的质心点。

执行后你会得到一个单独的点,坐标为整个点集的算术平均中心(在未做投影的地理坐标系下,这是近似质心;如果需要更精确的地理质心,建议先投影到合适的平面坐标系)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:28:13