先看看示例
作者提供的示例,实际效果取决于你的输入和使用工具。
输入
本地 stores.geojson 与 districts.geojson;片区字段 district;边界点按 intersects 关联并检查重复。
输出
编辑示例 · 未运行
import geopandas as gpd
points = gpd.read_file("stores.geojson")
areas = gpd.read_file("districts.geojson")
assert points.crs and areas.crs
points = points.to_crs(areas.crs)
joined = gpd.sjoin(points, areas[["district", "geometry"]], how="left", predicate="intersects")
counts = joined.groupby("district").size()边界点可能匹配多个片区,先审查重复,再确定归属规则。
方法说明
处理矢量地理数据的坐标系、空间关联和统计结果,适合门店覆盖与区域数据分析。
具体任务
汇总区域内设施:用空间关联判断点属于哪个区域,再输出聚合统计。
检查坐标与几何:在缓冲、距离和面积计算前确认投影及无效几何。
必需材料
矢量文件与坐标参考系
分析对象和空间规则
可选材料
字段说明
精度和导出要求
使用门槛
具备 Python 数据处理基础,知道输入坐标单位及区域边界。
这个 Skill 额外提供的方法
把“地图上看着很近”转成明确的坐标、边界和空间谓词。
编辑示例(未运行)
统计每个片区的门店数
任务:写出门店点与片区面的关联代码
输入:
本地 stores.geojson 与 districts.geojson;片区字段 district;边界点按 intersects 关联并检查重复。
结果片段:
```python
import geopandas as gpd
points = gpd.read_file("stores.geojson")
areas = gpd.read_file("districts.geojson")
assert points.crs and areas.crs
points = points.to_crs(areas.crs)
joined = gpd.sjoin(points, areas[["district", "geometry"]], how="left", predicate="intersects")
counts = joined.groupby("district").size()
```
边界点可能匹配多个片区,先审查重复,再确定归属规则。
以下为官方编辑构造的示例,未运行上游 Skill。示例代码未运行,突出坐标统一与边界重复问题,不伪造统计结果。
首次任务
任务:汇总区域内设施。
任务重点:用空间关联判断点属于哪个区域,再输出聚合统计。
必需材料:
- 矢量文件与坐标参考系:[填写或粘贴我的材料;未具备则说明]
- 分析对象和空间规则:[填写或粘贴我的材料;未具备则说明]
可选补充:
- 字段说明:[可填写,未提供不应假定存在]
- 精度和导出要求:[可填写,未提供不应假定存在]
请交付适配现有环境的代码或配置、必要说明及验证办法。仅依据这些材料处理;缺少决定结果的信息时先说明缺口,不补造事实。未执行的检查、修改或外部操作明确标为未执行。
使用前提:具备 Python 数据处理基础,知道输入坐标单位及区域边界。
处理边界:精确位置及轨迹可能敏感,发布前应聚合或脱敏;经纬度不能直接按米计算平面距离
验收要求:
1. 两份数据有明确且兼容的坐标系。
2. 空间连接前后数量变化可解释。
3. 导出不泄漏不必要的精确位置。
验收方法
两份数据有明确且兼容的坐标系
空间连接前后数量变化可解释
导出不泄漏不必要的精确位置
依赖与准备
Python 3.10+、uv 与固定兼容的 GeoPandas 地理依赖;远程路径或地理编码服务须明确授权。
使用边界
精确位置及轨迹可能敏感,发布前应聚合或脱敏
经纬度不能直接按米计算平面距离
排错
距离数值异常:确认是否在经纬度坐标中使用了平面距离。
数量增加:检查边界点、多重面和重复几何造成的一对多匹配。
固定来源
https://github.com/K-Dense-AI/scientific-agent-skills/blob/065b734670d7d990627dbc06a05b5a99be33f1f1/skills/geopandas/SKILL.md