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

如何通过坐标将Shapefile与数据集聚合为一个数据集

通过坐标聚合Shapefile与点数据集的方法

你需要完成的是点与多边形的空间匹配——判断ses里的每个坐标点落在ms_shp的哪个多边形区域内,再将对应区域的属性合并到点数据集中。下面是两种主流工具的实现方法:

R 实现(基于sf包)

sf是R中处理空间数据的标准工具,步骤如下:

  • 加载依赖包
library(sf)
library(dplyr)
  • 读取并转换数据
    先读取Shapefile为sf对象:
    ms_shp_sf <- st_read("你的ms_shp文件路径.shp")
    
    把ses转换成带空间属性的点对象,注意要保证坐标参考系(CRS)和Shapefile一致:
    ses_sf <- st_as_sf(ses, coords = c("gx", "gy"), crs = st_crs(ms_shp_sf))
    
  • 执行空间连接
    用st_join把点匹配到所在的多边形,自动合并属性:
    merged_data <- st_join(ses_sf, ms_shp_sf, join = st_within)
    
    如果不需要保留空间几何信息,可以转成普通数据框:
    merged_df <- st_drop_geometry(merged_data)
    

Python 实现(基于geopandas)

geopandas是Python生态中处理空间数据的核心库,步骤如下:

  • 加载依赖库
import geopandas as gpd
  • 读取并转换数据
    读取Shapefile为GeoDataFrame:
    ms_shp_gdf = gpd.read_file("你的ms_shp文件路径.shp")
    
    将ses转换为带点几何的GeoDataFrame,确保CRS与Shapefile一致:
    ses_gdf = gpd.GeoDataFrame(
        ses,
        geometry=gpd.points_from_xy(ses.gx, ses.gy),
        crs=ms_shp_gdf.crs
    )
    
  • 执行空间连接
    使用sjoin完成点面匹配,保留所有点数据并合并对应多边形的属性:
    merged_gdf = gpd.sjoin(ses_gdf, ms_shp_gdf, how="left", predicate="within")
    
    若无需空间属性,可转为普通DataFrame:
    merged_df = merged_gdf.drop(columns="geometry")
    

关键注意事项

  • 两份数据的坐标参考系(CRS)必须完全一致,否则匹配结果会出错。如果不一致,可使用st_transform(R)或to_crs(Python)将其中一份转换为另一份的CRS。
  • 若存在不在任何多边形内的点,合并后对应的多边形属性(如Region、Residuals等)会显示为NA/NaN,可根据需求过滤或填充这些记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:45:39