统计多边形内点数量并将结果写入(Geo)Dataframe的实现问题
实现方法
你可以先统计空间连接后每个面对应的点数量,再将统计结果关联回原始的面GeoDataFrame即可,完整代码如下:
# 空间连接后按OBJECTID分组统计点数量,生成统计结果表 point_count_df = df_poly.sjoin(dfp).groupby("OBJECTID", as_index=False).size().rename(columns={"size": "contained_point_num"}) # 左连接合并到原面数据,保留所有面要素 df_poly = df_poly.merge(point_count_df, on="OBJECTID", how="left") # 无点的面计数默认是NaN,可按需填充为0 df_poly["contained_point_num"] = df_poly["contained_point_num"].fillna(0).astype(int)
说明
- 分组统计时指定
as_index=False可以避免OBJECTID转为索引,方便后续合并操作 - 左连接可以保证所有原始面要素都被保留,不会过滤掉没有包含点的面
- 最后一步填充NaN并转整数类型,可根据你的实际使用需求决定是否保留
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

