最常见的是面积统计表,比如按地类统计,按乡镇统计等等。
总之是把一个shp转为一个规定格式的统计表。
常规的做法一般是shp导出excel,然后透视表,复制粘贴数据。简单的表可能只用一个透视表,复杂的表可能还涉及筛选、多个透视表等操作。
今天这篇文章讨论的是,在现在AI的加持下,能否有个程序,可以简化这个过程。
最理想的状态当然是用户只提供shp,就得到结果。但这需要每个结果表都定制代码,虽然AI可以做到,但毕竟步骤多了就容易出错。
所以,这篇文章提出的是用 1 个 SHP + 1 段 YAML来解决。
一、先晒痛点,谁痛谁知道
-
模板变了
好不容易在excel把公式都列好了,结果模板变了——格式一乱,全表报废。
-
统计规则变了
格式变了也就算了,统计规则也变了,写的vba不能用,收藏的pq也白搭了。
-
数据量大
一个县 5 万条图斑,手动透视 → 复制 → 粘贴,眼睛都花了。
-
工具链老旧
VBA 宏不知道哪就出问题了罢工;PQ 步骤一长就卡;透视表拖到怀疑人生。
二、核心思路:把「格式」和「数据」彻底拆开
谁负责 干什么 用什么
模板 表头、合并、字体、公章位、签字栏 提前画好的 .xlsx
YAML 告诉电脑「按什么维度、算什么指标、写哪一列」 30 行文本
程序 读 SHP → 算透视 → 往模板填数 10 行 Python,一键跑
要求再变?只改 YAML,不动模板,不碰代码!
三、实操演示:3 分钟出一张「地类面积交叉表」
① 准备文件(1 分钟)
宗地.shp→ 带字段 XZQDM(行政区)、DLMC(地类)、AREA(面积)模板.xlsx→ 提前画好表头、合计行、样式政策.yaml→ 下面 15 行直接复制
template: 模板.xlsx
offset: 5
groupby: XZQDM
pivot:
columns: DLMC
values: AREA
aggfunc: sum
decimals: 4
post_process:
- add_total_row
- add_total_col
② 用 Streamlit 做前端界面(1 分钟)
拖进去 → 点生成 → 自动下载 成果_20251212.xlsx
③ 验收(1 分钟)
- 列头自动出现 SHP 里所有地类
- 每行是行政区,每列是面积
- 最右「合计」、最下「总计」自动算好
- 字体、边框、公章位和模板一模一样
四、政策又双叒叕变了?只改 1 行 YAML
政策新要求 YAML 改动
新增「果园」列 无需改,SHP 里有就会自动出现
面积改 2 位小数 decimals: 2
再加「按权属人汇总」 加一行 groupby: [XZQDM, OWNER]
五、把「写 YAML」交给 AI
把政策文字粘给 豆包/Kimi,10 秒吐出最新 YAML,零手写!
六、总结:一句话记住
SHP 是米,模板是碗,YAML 是菜谱,程序就是电饭煲。
政策换菜?只换菜谱,碗和电饭煲永远不用换!