一种利用FME完善道路拓扑的方法

2021-05-27 05:14龚其琛
地理空间信息 2021年5期
关键词:端点路线线段

龚其琛,李 磊,邹 威

(1.中南勘察设计院集团有限公司,湖北 武汉 430000;2.湖北省测绘工程院,湖北 武汉 430070;3.广东省国土资源测绘院,广东 广州 510500)

道路线层数据是1∶10 000 DLG核心要素成果的核心,其所存在的拓扑问题将严重影响后续道路通达性、最短路径查找等基于数据拓扑的分析内容。由于成果采用Shapefile格式存储,在常规地理信息处理软件中,Geoway可实现Shapefile文件悬挂点和伪节点的处理,但因某些未知原因易导致属性丢失;南方CASS不能处理Shapefile文件;ArcGIS能检查出悬挂点和伪节点问题,但不能自动修改。因此,本文选择FME作为数据拓扑处理工具,利用其丰富的地理空间数据转换器构建全自动的道路数据拓扑问题处理方案,针对数据中存在的小短线、悬挂点、伪节点进行讨论。

1 数据来源与软件介绍

1∶10 000 DLG核心要素涉及地形、地貌要素的各个方面,但核心要素更新只对交通、水系、居民地以及植被要素进行更新。本文仅处理核心要素道路图层线状要素类型,图层名为GD10K_DLG_LRD_LN,要素采集根据《广东省1∶5 000 1∶10 000基础地理信息要素分类代码与属性表(试行)》[1]执行。

FME是加拿大Safe Software公司开发的空间数据转换处理系统,是完整的空间ETL解决方案。该方案基于OpenGIS组织提出的新的数据转换理念—语义转换,通过提供在转换过程中重构数据的功能,实现了超过250种不同空间数据格式(模型)之间的转换,为进行快速、高质量、多需求的数据转换应用提供了高效、可靠的手段[2]。

2 作业方法

2.1 作业思路

总体处理流程如图1所示,对于小短线、悬挂点和伪节点,处理的先后顺序为小短线—悬挂点—伪节点[3]。小短线问题的处理方式为:删除线长为1 m以下的线段,小短线删除后,小短线问题就会变成悬挂点问题,这也是小短线问题必须先处理的原因。悬挂点的处理方式为:以线端点为对象,将数据中平面距离在1 m以内的线端点移动到其中任一个端点。伪节点的处理方式为:由于三岔路口以上的道路必须将线条打断以表达其空间通达属性,因此不能一刀切地将所有相同属性的道路融合起来,本文仅融合只有两条线段相接的道路,三岔路口以上的道路视为已人工核查完毕[4-5]。

图1 数据处理流程图

2.2 流程详解

2.2.1 小短线处理

原始数据中存在的小短线问题如图2所示。将小短线定义为长度小于1 m的小段,数据中存在的小短线可直接删除,线段的起止点可认为在现实情况中是同一个节点,将小短线删除后,小短线问题即转化为悬挂点问题,可在后面的操作中与悬挂点一起处理。

小短线处理通过FME中Tester转换器实现,Tester提供了完善的单条件或多条件属性筛选要素功能,只需在筛选前计算线要素长度即可。筛选后,长度在1 m以上的线段参与后续悬挂点与伪节点处理过程,1 m以下的线段过滤掉不作处理。

图2 典型小短线示例/m

2.2.2 悬挂点处理

悬挂点一般产生于生产过程中未打开数据编辑软件的“捕捉”功能或“捕捉”功能容差设置过小,导致线要素端点不与相邻线要素拓扑相接的情况。悬挂点的悬挂距离一般较小,属于数据生产中较难避免的数据错误。悬挂点的表现形式如图3所示。

图3 典型悬挂点的表现形式

目前悬挂点的处理一般采取人机交互的方式,如市场占有率最大的地理信息数据处理软件ArcGIS能通过拓扑检查查询出数据中存在的悬挂点位置,但不能自动修改,软件只能协助检查,生产效率较低。本文利用FME中Snapper转换器来解决数据悬挂点问题。转换器参数设置界面如图4所示。

图4 悬挂点处理转换器Snapper参数设置界面

Snapper转换器的重要参数包括Snapping Type、Snapping Distance、Add Additional Vertex等。Snapping Type包含End Point Snapping、Vertex Snapping和Segment Snapping,分别是端点捕捉、节点捕捉和要素捕捉。捕捉容差由Snapping Distance决定,此处设为1 m。捕捉模式为空间移动,不改变原始线要素中节点结构和位置,因此Add Additional Vertex参数设为Never。道路要素经该转换器处理,会自动将悬挂距离小于1 m的悬挂点自动移动到相邻线要素上,悬挂距离大于1 m的悬挂点则不予处理,认为其为合理悬挂[6-7]。

2.2.3 伪节点处理

伪节点为道路线要素中不必要的打断,但道路线中有些打断是正常的,如两条道路相交的路口,为表达道路空间连通性,将交叉点打断;反之,空间上不连通的路口则不应打断。对于路口伪节点的判断比较复杂,必须根据影像人工判断路口实际连通情况才能确定线要素打断与否,因此批量处理伪节点不适合处理路口相交处之类的复杂情况。利用FME批量连通伪节点两端线段,需要先挑选出只涉及两条线段的伪节点。实现逻辑如图5所示。很显然,道路伪节点处理的难点在于挑选出与之只有两条线要素相交的伪节点,其FME实现思路如图6所示。

图5 伪节点处理逻辑

图6 FME筛选伪节点思路

伪节点筛选紧跟悬挂点处理环节,直接利用悬挂点处理后的线要素道路,采用Intersector转换器的Node输出端口获取道路线要素的拓扑相交节点,再将交点与道路线要素在PointOnLine Overlayer转换器中空间叠加,然后在Point输出端口输出附带有相接线要素属性的节点,ListElement Counter用于计算相接线要素数量,Tester限定相接线要素数量为2的才进行输出。此后只需将输出的满足该特定条件的节点与原始道路线进行空间叠加选择,将道路线按照道路名、代码等属性融合即可。经测试,该方法可彻底消除非路口道路线不合理打断的情况[3,8]。

3 结 语

本文将道路要素的典型拓扑问题通过FME建模的方式自动检查、修改、导出,减少了人工作业量,提高了检查精度,实现了数据的拓扑自动化修改。FME以其丰富全面的转换器和流程化的模块构建理念,在日常地理信息作业中,与ArcGIS等常规地理信息处理软件做到了差异化共存,为很多地理信息工作提供了新的思路。

猜你喜欢
端点路线线段
非特征端点条件下PM函数的迭代根
画出线段图来比较
最优路线
『原路返回』找路线
不等式求解过程中端点的确定
怎样画线段图
我们一起数线段
数线段
画路线
找路线