DLG数据线状道路自动闭合方法研究

2022-03-23 12:39方衎孙瑞敏黄一昀赵得意
智能建筑与智慧城市 2022年3期
关键词:线状端点入库

方衎,孙瑞敏,黄一昀,赵得意

(江苏省工程勘测研究院有限责任公司)

1 引言

地形图数据入库是GIS工作者日常生产中最常见的一种任务,目前数据入库的工作主要是采用各种GIS软件[1-3],随着软件越来越成熟,数据入库的效率也变得越来越高。在入库过程中,很多要素需要进行构面处理[4],其中线状道路构面相对麻烦一些。一般通过手工先将路口闭合,再进行构面,或者通过二次开发进行构面。

2 常用的线状道路构面方法

手动跟踪构面。以双线道路为例,利用“track‐polygon”命令按顺序选择要参与构面的道路边线,选择完成后,即可完成构面(见图1a)。

利用“Boundary”命令构面。通常先在道路两头额外绘制两条多段线来封闭端口,然后利用“Bound‐ary”命令即可完成构面(见图1b)。

图1 常用的线状道路构面方法

以上两种方法,虽然数据质量得到保证,但工作效率不高。因此,为提高工作效率,本文提出一种基于近邻分析自动连接闭合线状道路的方法,并以此进行线状道路的构面。利用ArcGIS 平台以及Py‐thon 脚本实现了这一方法。实验结果表明,该方法取得了良好的效果,大大地提高了工作效率。

3 线状道路自动连接闭合的流程与方法

3.1 自动连接闭合构面的流程

首先,在自动连接之前,需对数据进行预处理,先将源数据格式为CAD 的转换成ArcGIS 软件下的shp 格式或者featureclass,再进行拓扑检查,消除一些拓扑错误(如悬挂点,伪节点等);预处理完后,即可进行线状道路自动连接闭合构面的工作,具体流程见图2。

图2 线状道路自动连接闭合构面流程图

3.2 自动连接闭合构面的方法

1)获取道路线首末两端点

由于线状道路构面的本质问题就是通过两条(或者以上)道路线端点的连接使其变成一条闭合线,然后通过闭合线来进行构面,因此,通过提取每条道路线的两端点(中间各折点则不需要提取),使之由一维线的研究转变成零维点的研究,从而简化了问题,提高了效率。

2)查找相同的端点

在实际情况中,由于道路的复杂性,往往一条完整的道路线会被分割成好几段,前一线段的末尾点就会和与之相连的线段的起始点重叠,这就导致提取的端点中存在重复点,通过提取每个点的坐标来判断点是否重复,从而提取出这些重复的端点。

3)删除重复的端点

查找出来的这些重复端点,对整条道路来说,其实并不是首末点,而是中间的各个折点,并不需要参与到后续的连接,因此,这些点作为中间数据需要将其删除,从而保证了每条道路线首末端点的唯一性。

4)端点配对(近邻分析)

将所有道路线的首尾两端点进行近邻分析,即在其他道路线的首尾端点中,获取与每条道路线端点距离最近的点,如图3 所示。以道路线AH 为例,在其他三条道路线BC、DE、FG 中,只有点B 距离端点A 最近,因此,端点A 所配对的点是B 点,其他配对点如AF、AG、AC 都不符合要求。同理,C 与D 配对,E与F配对,G与H配对。

图3 近邻分析法道路线端点配对

5)端点连接构面

端点配对好之后,互相配对的点连接构线,构好的线与之所在的道路线闭合形成封闭的面状图形,即完成构面。

4 线状道路自动连接闭合的实现

4.1 开发环境简述

Python 是一种不受局限、跨平台的开源编程语言,它功能强大,可嵌入,具有高度的可扩展性,适用于各种大中小型应用程序。Python 作为ArcGIS 的脚本语言,利用其以及附带的Arcpy站点包,能够开发出各种满足用户需求的工具和应用程序[5-6]。

4.2 相关技术的实现

1)道路线首末两端点的获取

利用FeatureVerticesToPoints 函数,在指定输出点的创建位置参数中选择“BOTH_ENDS”,表示只获取首末两端点,线段上其他的折点则不需要获取。

2)保证首末端点的唯一性

利用FindIdentical 函数,通过点的Point_X 和Point_Y 两个字段作为比较值,找出重复点,再利用DeleteIdentical 函数,删除这些重复点,从而保证了首末点的唯一性。

3)近邻分析

利用Near 函数,通过计算点与点的距离确定距离最近的点,为了防止部分不同属性的道路口距离过近导致配对错误,需要设置一个阈值,以提高配对的正确率,若搜索半径小于该阈值,则忽略不计。

4)点集转线

配对好的端点是一个点的集合,经过近邻分析后,互相配对的端点会产生一个共有的距离值字段,利用该字段值的唯一性以及PointsToLine函数,即可将配对的端点连接成线。连接好的线再和原道路线通过FeatureToPolygon函数完成最终的构面。

4.3 实例验证

为了验证上述方法的正确性和有效性,以扬州市邗江区的三块测区数据为例(结果如表1和图4所示)。该测区范围内共有城际公路、城市道路、乡村道路等142 条,其中完成正确构面的126 条,正确率为88.7%,验证了本文方法的可行性。

表1 自动构面结果测试表

图4 实例验证的结果

5 结语

本文提出的基于近邻分析来自动连接线状道路并构面的方法,简单高效,正确率较高,能够大幅减轻内业人员的工作量,提高他们的工作效率,且在其他交通要素(如双线桥梁)以及部分水系要素(如线状河流的构面)等同样适用,在实际的数据入库工作中得到了广泛应用,具有一定的实际意义。但本文的方法还可以进一步优化,在道路宽度阈值的设置上,本文每个数据源只设置一种固定值,其实可以更具有灵活性,例如,能够依据每种道路的等级属性自动的设置符合该等级的阈值,这样匹配的正确率会再次得到提高。因此,如何进一步提高正确率是本文接下来需要研究和解决的问题。

猜你喜欢
线状端点入库
重磅!广东省“三旧”改造标图入库标准正式发布!
中国食品品牌库入库企业信息公示②
中国食品品牌库入库企业信息公示①
例谈求解“端点取等”不等式恒成立问题的方法
不等式求解过程中端点的确定
关于装配式建筑发展的几点思考
线状生命
基丁能虽匹配延拓法LMD端点效应处理
身临其境探究竟 主动思考完任务——《仓储与配送实务》入库作业之“入库订单处理”教学案例