当前位置: 首页 > news >正文

基于FME的等高线赋值正确性检查

痛点场景

等高线赋值错误常见两种情况:一是类型编码(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时,则每隔三条)加粗一条的等高线"。

由此得出计曲线间隔的计算规则:

基本等高距国标描述计曲线间隔
dgj=2.5m每隔三条首曲线加粗一条计曲线4 × dgj =10m
dgj=5m/10m等每隔四条首曲线加粗一条计曲线5 × dgj
检查一:等高线类型编码检查

判断要素的 CLASID 编码是否和它的 ELEV 值匹配:

CLASID正确条件错误类型
首曲线ELEV 不能整除计曲线间隔首曲线编码给了计曲线的高程
计曲线ELEV 必须整除计曲线间隔计曲线编码给了首曲线的高程

示例(dgj=2.5):

ELEVCLASID结果
5首曲线✅ 正确
10首曲线❌ 错误(10可被4×2.5=10整除,应该是计曲线)
10计曲线✅ 正确
15首曲线✅ 正确
检查二:等高线高程赋值检查

所有等高线的 ELEV 值必须是 dgj 的整数倍:

条件判断
fmod(ELEV, dgj) = 0✅ 高程值正确
fmod(ELEV, dgj) ≠ 0❌ 高程值赋错了

典型错误:手误多打一位数字(如5.00写成了5.5)、非整倍数输入(如dgj=2.5时ELEV=3.3)等。

综合判断

这条模板两条检查同时执行,一次跑完出两类错误:

要素 → [类型编码检查] → 编码赋值错误 → [高程赋值检查] → 高程值异常

两个条件任一不满足,就标记为"等高线赋值错误"输出到结果GDB。

FME实现

Transformer 链总览

GDB读取(DM_DGX_L) ↓ ParameterFetcher(读取等高距dgj、保存路径savpath等参数) ↓ TestFilter(按CLASID分流:首曲线 / 计曲线 / 其他) ├── 首曲线 ─→ Tester_3:判断dgj是否=2.5 │ ├─ PASSED(dgj=2.5)→ Tester_2 │ └─ FAILED(dgj≠2.5)→ Tester_5 │ └── 计曲线 ─→ Tester_4:判断dgj是否=2.5 ├─ PASSED(dgj=2.5)→ Tester └─ FAILED(dgj≠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_2(dgj=2.5)
条件1:@Evaluate(@fmod(@Value(ELEV), 4*@Value(_dgj))) = 0 → 能整除计曲线间隔,编码应该是计曲线 条件2:@Evaluate(@fmod(@Value(ELEV), @Value(_dgj))) ≠ 0 → ELEV不是dgj整数倍,高程赋值错误 逻辑:OR(任一满足即PASSED→报错)
首曲线检查 — Tester_5(dgj≠2.5)
条件1:@Evaluate(@fmod(@Value(ELEV), 5*@Value(_dgj))) = 0 → 能整除5倍等高距,编码应该是计曲线 条件2:@Evaluate(@fmod(@Value(ELEV), @Value(_dgj))) ≠ 0 → ELEV不是dgj整数倍,高程赋值错误 逻辑:OR
计曲线检查 — Tester(dgj=2.5)
条件1:@Evaluate(@fmod(@Value(ELEV), 4*@Value(_dgj))) ≠ 0 → 不能整除计曲线间隔,编码应该是首曲线 条件2:@Evaluate(@fmod(@Value(ELEV), @Value(_dgj))) ≠ 0 → ELEV不是dgj整数倍,高程赋值错误 逻辑:OR
计曲线检查 — Tester_6(dgj≠2.5)
条件1:@Evaluate(@fmod(@Value(ELEV), 5*@Value(_dgj))) ≠ 0 → 不能整除5倍等高距,编码应该是首曲线 条件2:@Evaluate(@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的等高线赋值正确性检查的思路和实现,供同行参考。

http://www.jsqmd.com/news/1033273/

相关文章:

  • 2026年杭州GEO优化重磅盘点!国内头部生成式引擎优化服务商权威实力排名与选型全解析 - 936品牌测评网
  • Windows启动失败修复指南:手动重建BCD与引导项解决“无法修复”问题
  • okbiye AI PPT 生成器实测解析:四步零门槛打造答辩汇报幻灯片,告别熬夜排版难题
  • 2026 年 6 月最新!浙江 GEO 优化公司哪家靠谱?2026 本地服务商实力对比全解析 - 936品牌测评网
  • 2026年6月最新!杭州本地GEO优化推荐:这几家做生成式引擎优化更专业 - 936品牌测评网
  • 做德国出口生意必看风险提示汇总
  • 如何让AI Agent真正接管批量IT运维?贝锐向日葵企业CLI解析
  • 2026年当下,江苏地区值得关注的徐州爵士舞艺术中心深度解析 - 品牌鉴赏官2026
  • 2026年近期重庆GEO平台哪个好?与选型指南 - 品牌鉴赏官2026
  • 2026年绍兴代理记账公司推荐:5家专业财税服务商深度测评 - 本地品牌推荐
  • S曲线规划停止运动
  • 3种Ant Design紧凑模式实战指南:从空间优化到极致用户体验
  • 项目急用材料怎么办?这几家Nitronic60现货充足且支持快速发货 - 品牌2026
  • 多模型底层调度实测拆解:智能择优匹配全品类开发任务
  • 2026年更新:山东市场人物铜雕可靠厂家深度解析与格局洞察 - 品牌鉴赏官2026
  • 规格齐全更省心:如何筛选一家靠谱的4J36低膨胀合金生产商 - 品牌2026
  • 2026年呼叫中心系统行业报告:头部厂商技术能力与落地案例盘点
  • 线性回归的几何本质:从正交投影到梯度下降的直观理解
  • 如何选择iPhone信用卡读卡器?
  • 2026年当下常州食堂承包市场深度解析与实力服务商推荐 - 品牌鉴赏官2026
  • 不同需求怎么选MBA面试辅导机构?2026场景攻略
  • 选材不再迷茫:如何精准筛选口碑良好的17-4PH不锈钢源头厂商? - 品牌2026
  • Tensor数据设置的高效实现:优化内存管理的完整指南
  • Scrapling实战指南:构建智能反检测爬虫的终极解决方案
  • 2026年市场质量好的全彩屏生产厂家排行 - 品牌排行榜
  • pandas多维聚合实战:银行级时间+分组+业务逻辑聚合方法论
  • 边缘AI部署的技术抉择:mobilenetv3_small_100.lamb_in1k的架构权衡与实践指南
  • 2026市面上好用的轻钢龙骨厂家推荐 - 品牌排行榜
  • 设计Agent 生成代码的 Lint 规则体系,理解 Hook 机制
  • 软件测试入门——第十九课(http和https协议详解)