第06章 从 CAD 到 GIS:一段被严重低估的路
本章导读
多测合一的现实是:成果仍以 DWG 加 PDF 交付,于是实际技术路径变成“在 CAD 里画图,转成 GIS 数据入库”。本章要回答这条路难在哪、该由谁走。6.2 节先说明转换的本质不是格式转换,而是补回对象边界、对象类型、对象属性三种缺失信息的语义重建;6.3 节按图层规范化、几何清理、构面、属性挂接、拓扑检查、结构化输出六个环节逐一拆解技术动作与常见失败;6.4 节讨论转换该放在测绘单位、平台还是第三方,6.5 节把质量变成四个可写进合同的指标。容易做错的判断是:把转换收归平台以降低准入门槛,看似友好,实则让质量责任在转换环节断裂。读完你能为一个项目定转换位置、定验收指标,也能量出返工集中发生在哪一步——这是第 7 章逐项讨论六项事项作业方法的前提。
学习目标
读完本章,你应当能够:
- 说出 6.2 节 CAD 图缺失的三类信息(对象边界、对象类型、对象属性),并解释为什么把 DWG 转成 GeoJSON 只是格式转换,而非语义重建;
- 对照表 6-1 复述六个环节的目标、关键技术动作与常见失败,并指出图层规范化为什么决定后续工作量;
- 拆解 6.3.1 节图层映射表的复用与可审计两项价值,说明“把人的经验变成可复用的配置”对一个单位意味着什么;
- 判断 6.3.3 节构面容差的取值依据(精度 1.5–2 倍),分别说明容差过小与过大各会产生什么后果;
- 区分表 6-3 三种属性挂接方式的可靠性差异,解释作业阶段分配唯一编号为什么能让挂接退化为一次表连接;
- 复述 6.4 节对转换位置的判断及其责任理由,并用表 6-4 四个指标写出一组可写进合同与验收标准的条款。
6.1 现实:绝大多数成果仍然是 CAD
尽管“成果要进库”是共识,但目前的现实是:绝大多数测绘单位的交付物仍然是 DWG 加 PDF。 这不是因为测绘单位不会用 GIS,而是因为交付要求本身没有强制要求 GIS 数据,也因为 CAD 在绘图效率上的优势短期内难以替代。
于是多测合一的实际技术路径变成:在 CAD 里画图,转成 GIS 数据入库。 这条路看似简单,实际上是一个充满陷阱的过程。
本章逐层拆解这段路。
6.2 转换的本质:从“几何集合”到“要素集合”的语义重建
把 DWG 转成 GeoJSON,技术上是一个格式转换;把测绘成果从 CAD 变成 GIS 数据,本质上是一次语义重建。
原因在于,CAD 图里缺失三种信息:
缺失一:对象边界。 CAD 图里一栋楼可能是四条线段、可能是几段多段线、可能是一个闭合多段线、也可能是一个块参照。哪种情况表示“一栋楼”,取决于绘图习惯,没有机器可读的约定。
缺失二:对象类型。 一个闭合多段线,可能是建筑轮廓、可能是绿地边界、可能是宗地界线、可能是道路面。类型信息在哪?在图层名里、在图例里、在绘图者的脑子里。
缺失三:对象属性。 建筑面积、层数、结构类型这些属性在哪?在文字标注里、在 Excel 表里、在报告正文里。它们与几何之间没有机器可读的关联。
语义重建的工作,就是把这三种信息补回来。
6.3 六个环节的技术动作
表 6-1 CAD 到 GIS 转换的六个环节
| 环节 | 目标 | 关键技术动作 | 常见失败 |
|---|---|---|---|
| 图层规范化 | 建立图层与要素类的映射 | 图层命名规则、图层映射表 | 图层名随意、同类要素分散在多个图层 |
| 几何清理 | 得到干净的几何 | 删除重线、打断交叉、闭合线串、去除零长度 | 重线导致面积重复计算 |
| 构面 | 线串转多边形 | 拓扑构面、最小面积阈值、容差处理 | 微小缝隙导致构面失败 |
| 属性挂接 | 几何与属性关联 | 空间连接、关键字匹配、人工补录 | 属性与图形错位 |
| 拓扑检查 | 保证关系正确 | 规则库批量检查与修复 | 查出问题但无法自动修复 |
| 结构化输出 | 生成标准数据集 | 按数据字典组织、生成元数据 | 字段缺失、编码不符 |
下面逐一说明每个环节的技术细节。
6.3.1 图层规范化:一切的前提
图层映射是转换的第一步,也是决定后续工作量的关键。理想情况下,测绘单位在制图时就遵循统一的图层命名规则;现实中往往不是。
实用的做法是建立一张显式的“图层映射表”,把 CAD 图层名映射到 GIS 要素类:
表 6-2 图层映射表示例(示意)
| CAD 图层名(示例) | 映射到要素类 | 几何类型 | 处理说明 |
|---|---|---|---|
| JMD-A-轮廓 | 建筑基底 | 面 | 若为多段线需闭合 |
| JMD-A-标注 | 注记 | 注记 | 转为注记要素或属性 |
| LDDL | 绿地地块 | 面 | 需与绿地分类表关联 |
| ZD-JZX | 界址线 | 线 | 需与界址点建立关系 |
| ZD-JZD | 界址点 | 点 | 点号从属性或注记提取 |
| YHX | 用地红线 | 线 | 作为约束线,不参与构面 |
| 0 / Defpoints | 忽略 | — | 不转换 |
这张表的价值在于:它把“人的经验”变成了“可复用的配置”。 一旦建成,后续所有同类项目都可以复用,转换时间从小时级降到分钟级。更重要的是,它使转换过程可审计——出了问题可以查是哪条映射规则错了。
6.3.2 几何清理:脏数据的代价
CAD 图在经过多次编辑后,几乎必然积累脏数据:
- 重线(duplicate):同一条线画了两次。后果是构面时可能生成重复面,面积翻倍。
- 悬挂线(dangling):线的一端没有连接到任何东西。后果是构面失败。
- 未闭合(unclosed):看似闭合的多段线,实际首尾点不重合。后果是构面时被判为不闭合。
- 自相交(self-intersection):一条多段线自己穿过自己。后果是生成非法多边形(“蝴蝶结”)。
- 零长度线:起点与终点重合。后果是干扰拓扑运算。
- 微小面(sliver):构面时产生的碎小多边形。后果是要素数量虚高、统计失真。
每种问题都有对应的自动清理手段(删除重复、延长到相交、吸附闭合、打断自相交、删除零长度、按阈值合并碎面),但没有一种手段可以无脑全自动——清理力度过大会误删真实要素,过小会留下问题。
实用的策略是“分级清理”:先做无损清理(删重复、删零长度),再做有条件清理(按容差闭合、按阈值消除了碎面),最后把无法自动处理的问题输出成清单,交人工处理。人工处理的结果应当回写到源图,而不是只改转换结果——否则下次转换还会重现。
6.3.3 构面:从线到面的拓扑运算
构面(polygonize / build topology)是把线串集合转换成面集合的运算:把相互连接的线视为多边形的边,找出所有闭合环,生成面。
技术上,这是平面图(planar graph)的面提取问题。常见的实现算法基于半边数据结构或平面扫描。
工程上的关键参数是容差(tolerance):
- 容差太小,微小的端点不重合会导致构面失败(本该闭合的地方被判断为断开);
- 容差太大,相邻但不应连接的线会被错误合并,产生错误的面。
容差的选择应当与实际测绘精度匹配,而不是随意设定。 如果点位精度是 5 厘米,容差设成 1 毫米就会大量失败,设成 1 米就会大量误合。合理的做法是以精度的 1.5–2 倍作为初始值,再根据实际构面结果调整。
构面后必须做两件事:
-
面积合理性检查:与预期面积对比,发现数量级异常(比如一个“建筑”面积是 2 平方米,很可能是碎面);
-
面的语义赋值:构面得到的是纯几何面,必须按位置(落在哪个图层范围内)或按来源线段的图层来赋予要素类型。
6.3.4 属性挂接:最容易出错的一步
属性挂接把业务数据(Excel 表格、外业记录、报告数据)关联到几何上。常见方式有三种:
表 6-3 属性挂接的三种方式与适用场景
| 方式 | 原理 | 优点 | 缺点 | 适用 |
|---|---|---|---|---|
| 关键字匹配 | 用共同字段(如建筑编号)连接 | 精确、可验证 | 依赖双方都有唯一编号 | 首选方式 |
| 空间连接 | 按位置关系(点在面内、面与面重合)关联 | 无需共同字段 | 位置误差会导致错关联 | 无编号时使用 |
| 人工指派 | 逐条选择 | 灵活 | 效率低、易错 | 数量少、重要性高 |
实践中最可靠的是“关键字匹配”,因为它的错误是可检测的(匹配不上的会留下未匹配记录)。空间连接的隐蔽性更强——它总能给出一个结果,即使结果是错的。
因此,一个重要的设计原则是:在测绘作业阶段就为每个要素分配唯一编号,并把编号写入图形属性(CAD 中用扩展数据 XData 或块属性)。这样属性挂接就退化为一次表连接,可靠性大幅提升。
6.3.5 拓扑检查:把标准变成代码
拓扑检查在第 5 章已讨论过规则类型,这里补充工程实现要点。
拓扑检查的性能是一个实际问题:一个项目中若有数千个建筑角点、数百个绿地多边形,全组合的两两检查复杂度是 O(n²)。实际实现需要空间索引(R 树、四叉树、网格索引)来降低复杂度。
检查结果的处理方式决定了它是否有用:
- 只报告不修复:检查报告很漂亮,但没人处理,问题依旧;
- 自动修复:速度快,但修错了没人知道;
- 半自动:自动修复明确的问题(如重复点),对需要判断的问题生成待办任务,人工处理后回写。
推荐半自动。判断“这个 3 厘米的缝隙是测量误差还是真实的界线”需要业务知识,不能交给算法。
6.3.6 结构化输出:成果的“最后一公里”
转换的最后一步是按数据字典组织成果:
- 每个要素类对应一个图层/表;
- 字段名、类型、长度、必填性、取值范围符合数据字典;
- 编码值符合分类代码表;
- 坐标参考系正确声明;
- 生成元数据文件;
- 打包成规定的成果目录结构。
这一步经常出问题的地方是编码值。数据字典规定了“结构类型”的取值只能是某几个代码,但转换时从 CAD 属性里读出来的是中文文字(“框架”、“砖混”)。需要一张值映射表把这些文字映射到代码——而这张表往往需要人工整理,因为同一结构在不同项目里的写法不同。
6.4 一个绕不开的成本判断:转换该由谁做
技术上,转换可以在三个位置发生:
位置一:测绘单位在提交前转换。 优点是数据源掌握者最了解数据,转换质量相对可控;缺点是增加了测绘单位的工作量,需要配套的计价与培训。
位置二:平台在接收时转换。 优点是对测绘单位友好,降低了准入门槛;缺点是平台要承担巨大的适配工作量,而且不同单位的 CAD 习惯千差万别,适配几乎无法穷尽。
位置三:第三方服务机构转换。 优点是专业化;缺点是增加了一道环节,责任链条变长。
本报告判断:以位置一为主、位置二为辅。 理由是多测合一要求成果质量责任由测绘单位承担(1729 号文明确“落实成果质量责任”),如果转换由平台做,那么数据质量问题的责任就模糊了——测绘单位说“我交的图是对的,是你转错了”,平台说“你交的图本身就不规范”。责任必须在转换之前就明确。
平台侧应当提供的是转换工具与校验服务,而不是替测绘单位转换。工具可以免费提供、可以强制使用,但转换动作必须由测绘单位完成并承担结果责任。
6.5 转换质量的量化:可测量的四个指标
“转换做得好不好”不应该靠感觉。以下四个指标可以用来量化:
表 6-4 转换质量的四个可量化指标
| 指标 | 定义 | 目标值(建议) | 测量方式 |
|---|---|---|---|
| 要素类型正确率 | 类型判定正确的要素数 ÷ 总要素数 | ≥ 99.5% | 抽样人工核对 |
| 几何有效率 | 通过拓扑检查的要素数 ÷ 总要素数 | ≥ 99% | 自动检查 |
| 属性完整率 | 必填字段非空的要素数 ÷ 总要素数 | 100% | 自动检查 |
| 属性正确率 | 属性值正确的要素数 ÷ 抽样要素数 | ≥ 99% | 抽样人工核对 |
这四个指标的价值在于,它们可以被写进合同、写进验收标准,从而使“数据质量”从一个模糊的要求变成可以验收的条款。
本章小结
从 CAD 到 GIS 不是格式转换,而是语义重建。六个环节中,图层规范化决定了后续工作量,几何清理与构面决定了数据可用性,属性挂接与拓扑检查决定了数据可信度,结构化输出决定了数据能否入库。
关键工程判断:转换动作应当由测绘单位完成并承担责任,平台提供工具与校验,而不是代替转换。 否则质量责任会在转换环节断裂。
转换质量可以用四个指标量化,它们可以写进合同与验收标准。
思考与练习
- 某测绘项目的一张图里,同一栋楼被画成四段线段、一段闭合多段线和一个块参照三种形态。请按表 6-1 的六个环节推演:在哪一环会出现“对象边界”缺失带来的问题,各用什么技术动作补回,又该如何验证补回后的类型正确。
- 某图的构面容差先设为 1 毫米,大量本该闭合的线被判为断开;改为 1 米后,相邻但不该相连的线被错误合并。请按 6.3.3 节的取值依据,说明初始容差应当怎么定,并列出构面后必须做的两件事。
- 某项目用空间连接把 Excel 里的属性挂到房屋面上,有几个分户的面积与图形明显错位,作业组打算逐个人工修正。请按 6.3.4 节说明空间连接为什么“总能给出一个结果”,指出更可靠的做法,并说明该在下一次作业的哪一步提前避免。
- 取本单位一份 CAD 成果(或公开的成果样例),按表 6-2 的格式试做一张图层映射表:列出图中图层名、拟映射的要素类、几何类型与处理说明,并标出无法确定归属的图层、写明原因;再对照 6.5 节的四个指标,判断这张表还需补什么才能支撑验收。
- 今天就动手:在表 6-4 的四个指标里挑一个(建议先做属性完整率),为你手上一份成果写出可执行的检查步骤或查询条件,跑出当前数值,记录测量方式、抽样范围与责任人,作为下一版成果的对比基线。
| 上一章:第05章 数据模型:把“图”变成“数据” | 返回目录:多测合一业务全景教程 | 下一章:第07章 六项测绘事项的 GIS 作业方法 |