做过项目的人都有这个经历:对方甩过来一份 55 页的 PDF,里面密密麻麻全是界址点坐标表,说"这就是地块边界,你们处理一下"。
处理什么?把这几千个点连成面,变成 GIS 能用的矢量文件。
手动搞,一个人点一天。用 AI 搞,需要点技巧。
先说结果
一份 55 页的 PDF,2006 个界址点,最后生成一个带两个空洞的多边形面文件。
宗地面积 644,670.07 平方米,正好 64.47 公顷,967 亩。跟 PDF 上标注的面积比,误差 0.11 平方米。
这是南县一个回填地块。说实话,0.11 平方米的误差可以忽略不计——比一个 A4 纸大不了多少。
界址点的结构,先搞清楚
这块地不是简单的一个圈,它有三个环:
- 外环:J1 到 J1884,1883 个独立点,围出地块的外边界
- 空洞一:D1884 到 D1913,31 个点,是地块内部一个洞(不能回填的区域)
- 空洞二:D1914 到 D2003,91 个点,另一个洞
带空洞的多边形,是这次任务里最硬的一块。
踩坑记录
坑 1:PDF 表格解析,首尾重复
用 PyMuPDF 的 find_tables() 提取表格,很好用,但有个隐蔽问题——每一页末尾的点,会在下一页开头重复一遍。
一页 37 个点,最后一页接下一页第一行,表头来回切换,序号却对得上。第一次提取出来 2058 个点,实际只有 2006 个,多了 52 个重复点。
解决:按序号去重。发现这个问题后,我意识到 PDF 表格解析的"看起来对"和"真的对"之间,差一次数据体检。
坑 2:坐标系定义,WKID 的陷阱
这是最容易翻车、翻车后还最难发现的坑。
项目区在东经 111.5° 一带,应该用 CGCS2000 3 度带第 37 带(中央经线 111°E)。但查 WKID:
- 4523 = Zone 35,中央经线 105°E ❌
- 4525 = Zone 37,中央经线 111°E,但它是带号版,假东 37,500,000 ✅坐标系✅坐标错
坐标表里 y 值是 557000 左右,说明坐标是不带带号前缀的(假东 500,000)。而 4525 的假东是 37,500,000,直接套会差 37 万米。
最后我用 WKT 手动定义:中央经线 111°E + 假东 500,000,绕开 WKID,才把坐标系真正定对。
这个坑如果不踩,坐标全错,但看着还挺像那么回事——因为平移不影响相对位置,图能显示,面积也差不多,就是经纬度全偏了。
[图片待插入: 用户截图:PDF 界址点表原页,展示序号+坐标结构]
坑 3:arcpy.Point 坐标顺序
arcpy 建点:Point(easting, northing),也就是 Point(y, x)。
而 PDF 里列的坐标,x 是北距、y 是东距。名字都对不上,得先搞清楚数据源到底哪个是哪个,再对应到 arcpy 的参数上。
这个搞反了,整个多边形会镜像翻转。
坑 4:带空洞的多边形
arcpy 建带空洞的面,用嵌套数组:
parts = arcpy.Array()
parts.add(outer_ring_array)# 外环
parts.add(hole1_array)# 空洞一
parts.add(hole2_array)# 空洞二
polygon = arcpy.Polygon(parts, sr)
外环按一个方向,空洞按相反方向,arcpy 就能识别出谁是谁。搞反了方向,空洞会变成独立的小面片。
这类活值不值得交给 AI
值。
55 页表格,2006 个点,纯手工录入至少半天,还难免抄错。AI 半小时内搞定,误差 0.11 平方米。
但前提是——你要懂坐标、懂带号、懂多边形结构。AI 帮你干活,你负责把关。尤其是坐标系这种"错了但看着像对的"问题,不懂行的人,AI 给了错误结果你也看不出来。
所以我的建议是:遇到这种活,让 AI 做,但做完一定做三件事:
1. 面积对账:计算面积跟 PDF 标注面积比,差超过 1% 就要查
2. 叠底检查:把生成的面叠加到卫星影像上,看边界跟实际地形对不对得上
3. 坐标抽查:随机挑几个点,跟原表对一下坐标值
三关都过,基本就可以用了。#GIS#AI#ArcgisPro#AI指挥制图

夜雨聆风