关于shp到固定格式统计表的思考


最常见的是面积统计表,比如按地类统计,按乡镇统计等等。

总之是把一个shp转为一个规定格式的统计表。

常规的做法一般是shp导出excel,然后透视表,复制粘贴数据。简单的表可能只用一个透视表,复杂的表可能还涉及筛选、多个透视表等操作。

今天这篇文章讨论的是,在现在AI的加持下,能否有个程序,可以简化这个过程。

最理想的状态当然是用户只提供shp,就得到结果。但这需要每个结果表都定制代码,虽然AI可以做到,但毕竟步骤多了就容易出错。

所以,这篇文章提出的是用 1 个 SHP + 1 段 YAML来解决。


一、先晒痛点,谁痛谁知道

  1. 模板变了

    好不容易在excel把公式都列好了,结果模板变了——格式一乱,全表报废。

  2. 统计规则变了

    格式变了也就算了,统计规则也变了,写的vba不能用,收藏的pq也白搭了。

  3. 数据量大

    一个县 5 万条图斑,手动透视 → 复制 → 粘贴,眼睛都花了。

  4. 工具链老旧

    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 是菜谱,程序就是电饭煲。

政策换菜?只换菜谱,碗和电饭煲永远不用换!


文章作者: 摸鱼
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 摸鱼 !
  目录