
痛点场景等高线赋值错误常见两种情况一是类型编码CLASID给错了——该计曲线的地方给了首曲线编码或者反过来二是高程值ELEV本身输错了。传统做法是人工翻图一条条看费眼又费时。本模板通过 FME 自动完成以上两项检查把赋值错误的要素批量抓出来。检查规则说明适用范围本文以1:5000 和 1:10000 DLG举例说明依据 GB/T 20257.2-2017 图式规范。其他比例尺的基本思路一致按实际等高距和计曲线间隔换算即可但需调整dgj参数。涉及的数据数据集说明DM_DGX_L等高线线要素关键字段CLASID类型编码、ELEV高程值参数dgj等高距、sqx_code首曲线编码、jqx_code计曲线编码核心逻辑依据GB/T 20257.2-2017《国家基本比例尺地图图式 第2部分1:5000 1:10000地形图图式》第4.7.1条计曲线是指从高程基准面起算每隔四条首曲线当基本等高距采用2.5m时则每隔三条加粗一条的等高线。由此得出计曲线间隔的计算规则基本等高距国标描述计曲线间隔dgj2.5m每隔三条首曲线加粗一条计曲线4 × dgj 10mdgj5m/10m等每隔四条首曲线加粗一条计曲线5 × dgj检查一等高线类型编码检查判断要素的 CLASID 编码是否和它的 ELEV 值匹配CLASID正确条件错误类型首曲线ELEV 不能整除计曲线间隔首曲线编码给了计曲线的高程计曲线ELEV 必须整除计曲线间隔计曲线编码给了首曲线的高程示例dgj2.5ELEVCLASID结果5首曲线✅ 正确10首曲线❌ 错误10可被4×2.510整除应该是计曲线10计曲线✅ 正确15首曲线✅ 正确检查二等高线高程赋值检查所有等高线的 ELEV 值必须是 dgj 的整数倍条件判断fmod(ELEV, dgj) 0✅ 高程值正确fmod(ELEV, dgj) ≠ 0❌ 高程值赋错了典型错误手误多打一位数字如5.00写成了5.5、非整倍数输入如dgj2.5时ELEV3.3等。综合判断这条模板两条检查同时执行一次跑完出两类错误要素 → [类型编码检查] → 编码赋值错误 → [高程赋值检查] → 高程值异常两个条件任一不满足就标记为等高线赋值错误输出到结果GDB。FME实现Transformer 链总览GDB读取(DM_DGX_L) ↓ ParameterFetcher读取等高距dgj、保存路径savpath等参数 ↓ TestFilter按CLASID分流首曲线 / 计曲线 / 其他 ├── 首曲线 ─→ Tester_3判断dgj是否2.5 │ ├─ PASSEDdgj2.5→ Tester_2 │ └─ FAILEDdgj≠2.5→ Tester_5 │ └── 计曲线 ─→ Tester_4判断dgj是否2.5 ├─ PASSEDdgj2.5→ Tester └─ FAILEDdgj≠2.5→ Tester_6 Tester_2 / Tester_5 / Tester / Tester_6 └─ PASSED报错要素→ AttributeCreator_12标记等高线赋值错误 └─ FAILED正常要素→ 终止不输出关键 Tester 参数Tester_3 / Tester_4标准等高距判断条件Value(_dgj) 2.5 分流PASSED → 走4×dgj逻辑 FAILED → 走5×dgj逻辑首曲线检查 — Tester_2dgj2.5条件1Evaluate(fmod(Value(ELEV), 4*Value(_dgj))) 0 → 能整除计曲线间隔编码应该是计曲线 条件2Evaluate(fmod(Value(ELEV), Value(_dgj))) ≠ 0 → ELEV不是dgj整数倍高程赋值错误 逻辑OR任一满足即PASSED→报错首曲线检查 — Tester_5dgj≠2.5条件1Evaluate(fmod(Value(ELEV), 5*Value(_dgj))) 0 → 能整除5倍等高距编码应该是计曲线 条件2Evaluate(fmod(Value(ELEV), Value(_dgj))) ≠ 0 → ELEV不是dgj整数倍高程赋值错误 逻辑OR计曲线检查 — Testerdgj2.5条件1Evaluate(fmod(Value(ELEV), 4*Value(_dgj))) ≠ 0 → 不能整除计曲线间隔编码应该是首曲线 条件2Evaluate(fmod(Value(ELEV), Value(_dgj))) ≠ 0 → ELEV不是dgj整数倍高程赋值错误 逻辑OR计曲线检查 — Tester_6dgj≠2.5条件1Evaluate(fmod(Value(ELEV), 5*Value(_dgj))) ≠ 0 → 不能整除5倍等高距编码应该是首曲线 条件2Evaluate(fmod(Value(ELEV), Value(_dgj))) ≠ 0 → ELEV不是dgj整数倍高程赋值错误 逻辑OR对比总结首曲线与计曲线的判断条件正好相反——首曲线报能整除计曲线间隔计曲线报不能整除计曲线间隔高程值检查条件2两者相同都是报不是dgj整数倍。输出结果写入GDB的结果要素字段字段值说明问题描述等高线赋值错误错误类型标识所在图层DM_DGX_L源要素类名GB原值国标分类码CLASID原值当前编码ELEV原值当前高程值注意事项本模板查的是编码与高程的匹配关系和高程值是否基本等高距整数倍不查高程值本身是否合理如5.00误输入为50.0因50是2.5的整数倍模运算无法检出。此类错误可通过相邻等高线高程值比较或叠加DEM数据辅助判断模板针对DM_DGX_L要素类设计其他数据源需调整FEATURE_TYPES参数以上是基于FME的等高线赋值正确性检查的思路和实现供同行参考。