多边形之间相交求交点的算法_一种水系结构线生成算法的设计与实现

作 者 信 息

王子豪,段 佳

(湖南省第三测绘院,湖南 长沙 410118)

【摘要】针对如何利用地理国情普查数据快速生成水系结构线问题,提出一种水系结构线生成算法,并对算法进行编程实现和应用验证分析。实际应用表明,该算法具有生成速度快,生成的水系结构线节点少、数据量小,可批量修改水系结构线等特点。

【关键词】水系结构线;地理国情;1:2 000DLG;Douglas-Peucker算法

【中图分类号】TP311 【文献标识码】A 【文章编号】1672-1586(2019)05-0134-05

引文格式:王子豪,段 佳. 一种水系结构线生成算法的设计与实现[J].地理信息世界,2019,26(5):134-138.

正文

0 引 言

水系网络数据是地理国情普查数据库以及水利专题信息数据库的重要数据内容。水系网络数据主要用于水系网络分析以及反映该地区的水系分布情况等,由水系弧段和水系节点、障碍点等组成,其中水系弧段包括河渠中心线、结构线以及为贯通水系而采集的河渠遇水库、坑塘和湖泊的结构线等。水系中心线是沿水系实地走向采集的中心位置线,必然存在于水系面之外,结构线是沿水系主航道、主流线、深泓线采集的起水系连通作用的水系线,必然存在于水系面之内。为满足实体化编码、河流长度统计以及水系网络分析等业务需求,本文研究将水系网络数据生产纳入数据建设内容。

目前水系弧段数据的生产方式有人工采集或修改的方式,如地理国情普查项目在数据采集阶段进行人工采集,该方式虽然能满足采集要求,但是工作量非常大。此外还有采用软件算法提取水系结构线的方式,提取方法主要分为以下几种:面状要素转化为线状要素,然后把线状要素两端封口删除,由折叠双线提取中心线法,商业软件有ESRI的ArcMap,由于水系面状要素转线状要素后两端封口删除工作量大,且该方法更适合规则的平行线,如道路边线提取中心线,对于宽窄不一的水面提取出来的水系结构线,需要进行人工编辑,工作量非常大;多边形转栅格后自动提取中心线法,该方法将矢量水系面状要素转化为栅格要素之后进行二值化、图形细化等处理后得到中心线,软件ArcMap提取的中心线不会在交叉处打断,栅格化噪点会自动产生实际不存在的中心线,需要进行图形形态学、节点抽稀处理以及确定水系流向等工作;面状要素直接提取中心线法,软件FME提取的中心线需要进行删除小短线枝杈、延长中心线等处理工作;基于约束Delaunay三角网提取中心线法,该方法会产生多余的支流,需要人工判断处理,不能确定水系流向。

针对如何快速高效生成水系结构线数据的需求,在测试、分析了上述几种生产方式并对本文选取的数据情况进行分析后,基于Douglas-Peucker矢量数据压缩算法,设计了一种水系结构线生成算法,并利用ArcGIS二次开发接口编程实现了该算法。

1 数据概况

本文试验数据为基于航空影像立体像对,通过立体采集获取的1:2 000DLG成果,主要涉及水系及附属设施、居民地及设施、交通、管线、境界与政区、地貌、植被、地名等8个大类,169个子类地理要素,覆盖湖南全省范围(城镇范围和部分敏感区域除外)。其中水系及附属设施类要素包括河流、沟渠、湖泊、水库、其他水系要素、水利及附属设施等。要求对有名称的地面河流数据生产相应的水系网络数据并进行实体化编码。基于地理国情普查项目已生产了水系网络数据和水系实体化编码,因此要求以地理国情普查水系网络数据为基础资料,对其进行修改、补充,使其空间关系与本文实验数据已采集的水系要素相匹配,减少空间位置采集和属性录入的工作量。

地理国情普查数据水系要素采集了河流、水渠、湖泊、水库、坑塘等要素以及主要河流、水渠的中心线或结构线,属性包括名称、流域、实体编码等。由于本次试验数据与地理国情普查数据在数据采集的精度上存在差异,1:2 000DLG数据采集精度为平原丘陵地区平面中误差1.2 m,山区高山区平面中误差1.6 m,地理国情普查数据采集精度要求一般情况为实地5 m以内,特殊情况在10 m以内[3],以及两水系数据的具体采集要求不相同,两套水系数据成果之间存在相交但不能完全重叠,因此地理国情普查水系网络数据中的水系结构线存在大量不能完全落入1:2 000DLG面状水系要素内的情形,针对这种情况,本文设计出一种水系结构线生成算法,实现对地理国情普查数据的充分利用。

2 算法设计与实现

2.1 Douglas-Peucker算法

Douglas-Peucker矢量数据压缩算法是一种经典的线要素压缩算法。该算法主要是通过删除曲线上的非特征点,保留特征点来减少数据量,即通过保留关键点,删除次要点来达到抽稀压缩的目的。算法的基本思路为:对每一条曲线的首末点虚连一条直线,求所有点与直线的距离,并找出最大距离值d max,用d max与限差D 相比。若d max<D ,这条曲线上的中间点全部舍去;若d max≥D ,保留d max对应的坐标点,并以该点为界,把曲线分为两部分,对这两部分重复使用该方法。

2.2 水系结构线生成算法

基于Douglas-Peucker矢量数据压缩算法的基本思路,设计出一种水系结构线生成算法。算法主要步骤如下:

1)如图1所示,获取一条首末点位于水系面内而本身未完全位于水系面内的水系结构线直线段Lab。获取方式有3种,第1种是通过水系弧段要素类与水系面状要素类进行叠置擦除运算,得到若干条未落入水系面内的曲线,对每一条未落入水系面内的曲线DLi,找到与其相交的水系弧段要素Li,并在Li找到距离DLi的两个端点最近的且位于水系面内的节点a和节点b,连接节点a和节点b得到直线段Lab;第2种是人工选中一条未完全落入水系面内的水系结构线L ,与水系面状要素进行叠置擦除运算,得到若干条未落入水系面内的曲线,对每一条未落入水系面内的曲线DLi,在L中找到距离DLi的两个端点最近的且位于水系面内的节点a和节点b,连接节点a和节点b得到直线段Lab;第3种是在水系面内人工添加水系结构线的起点a和终点b,连接起点a和终点b得到直线段Lab

f7ebda9b904c147b50cc0164b9349034.png

图1 水系结构线生成示意图

Fig.1 Schematic diagram of generating river structure line

2)求直线段Lab的中垂线Lp

3)获取中垂线Lp与水系面相交得到的线段的中点p 。在求取中垂线与水系面相交的线段时,会出现线段数量大于1条的情形。一种原因是因河流面边界弯曲较大,形成小河湾,如图2所示;另一种原因是因河流中间存在高水界之上的小岛,如图3所示。两种原因可通过相交得到的线段两个端点是否都位于水系面多边形的外环(Exterior Ring)来区分。  对于第1种原因需分别进行计算,最后取总内插点个数最少的线段,对于第2种原因需分别进行计算,小岛两侧内插的线段都保留。

781f3d1b1b08ce12170c825bc2737864.png

图2 河湾处水系结构线生成示意图

Fig.2 Schematic diagram of generating river structure line considering river bend

b1efdd9782a17ded724cb4419ccbfacd.png

图3 河中小岛处水系结构线生成示意图

Fig.3 Schematic diagram of generating river structure line considering eyot

4)以p作为内插点,用连接首点a、内插点p、末点b的曲线段Lapb代替原直线段Lab

5)对曲线段Lapb 的两部分LapLpb ,重复步骤2)~4),直至该曲线段全部位于水系面内部。

6)最后用生成的曲线段代替原水系结构线。

利用ArcGIS平台二次开发接口实现了该算法,开发了水系结构线检查处理软件。根据第一步获取一条首末点位于水系面内部的水系结构线直线段Lab的方式不同,软件实现了批量修改水系结构线、修改单个水系结构线、添加单个水系结构线等功能。批量修改水系结构线功能可以对需要处理的数据进行批量自动修改水系结构线,且保持水系流向和属性信息不变。对于一条未落入水系面内的部分相对较长的水系结构线(如未落入水系面内的要素节点个数超过10个),修改单个水系结构线功能比人工编辑修改更简单、更快速,且能保持水系流向和属性信息不变。添加单个水系结构线功能可以自动生成水系结构线几何信息,对于一条需要添加的节点数目相对较多的水系结构线(如要素节点个数超过10个),比人工添加更简单、更快速。

3 算法应用分析

3.1 应用流程

采用基于该算法开发的水系结构线检查处理软件,按县(市、区)为单位进行水系结构线数据的生产 工作,具体的生产工作流程如图4所示。

d1d002af943a8f2d5cbb99c206c4723a.png

图4 水系结构线数据生产流程图

Fig.4 Working flow chart of river structure line data production

1)数据准备。数据范围以县(市、区)为单位,需要准备的数据包括地理国情普查水系网络数据、本文试验数据1:2 000DLG数据、行政区划代码等。将1:2 000DLG中有名称的线状河流以及地理国情普查水系弧段数据提取至1:2 000DLG中的水系弧段数据层HYDL_E。

2)水系结构线位置检查。将HYDL_E中的水系弧段要素与1:2 000DLG中水系及附属设施类面状要素进行叠置擦除运算,得到未落入水系面内的曲线。如果有未落入水系面内的曲线则进行步骤3)处理,如果没有则进行步骤4)及后续步骤处理。

3)批量修改水系结构线。根据步骤2)得到的未落入水系面内的曲线,参考1:2 000DLG中的水系及附属设施类面状要素,找到对应的HYDL_E中的水系弧段要素,对其进行自动批量修改。通过该方法,将提取自地理国情数据不能完全位于1:2 000DLG面状水系要素内的水系结构线修改至1:2 000DLG面状水系要素内。为检查修改质量,修改完后再回到步骤2),进行水系结构线位置的复查。

4)添加单个水系结构线。对于需要有水系结构线的水系及附属设施类面状要素,在HYDL_E中没有对应的水系弧段要素,人工判断并添加水系结构线的起止点,自动生成水系结构线。同时对于不能确定主航道、主流线、深泓线的辫状河流,需要进行人工判断选择其中的一条主要水流,采集其中心线作为水系结构线,并删除在上一步骤多余生成的水系结构线。

5)尖角检查及修改。因水系面边线弯曲度较大等原因,自动生成的水系结构线可能存在尖角的问题,通过计算夹角的角度值检查出夹角小于设定值(一般设置为30°)的节点,并对这些少数尖角问题逐个人工修改。重复该步骤,直至处理完所有HYDL_E中水系弧段要素的尖角问题。

6)属性信息检查与修改补充。根据生产项目中的地理要素实体化编码相关技术要求,检查HYDL_E中水系弧段要素的属性是否完整正确,对缺失的属性信息进行补充。HYDL_E中的名称、流域、实体编码属性在步骤1)中直接保留了地理国情普查水系网络数据中相应的属性值。因两套源数据不能完全重叠,部分提取自1:2 000DLG的水系中心线和人工添加的水系结构线,无相应的地理国情普查数据,实体编码属性需人工续编,流域属性需人工判断赋值。要素分类代码及要素分类名称属性取值于源数据相应字段值,分区代码和起止时间属性由软件统一赋值。重复该步骤,直至处理完所有HYDL_E中水系弧段要素的属性信息。

3.2 应用分析

为检验该算法及基于该算法开发的水系结构线检查处理软件的运行效率情况,选取桂阳县作为试验数据进行测试。桂阳县辖区面积2 973688d496499301d21b722cf8fc1a67b8e.png,主要河道共有89条,地理国情普查数据中水系弧段要素1 344个,检查出未落入本次试验数据水系及附属设施类面状要素内的水系曲线段3 055条,在Intel Core i7 3.6 GHz,16 GB内存,Windows7,ArcGIS10.1的环境下,软件自动批量修改时间仅需4 min。水系结构线程序修改前后对比情况如图5所示,实体化处理后的桂阳县水系分布如图6所示。

62a51d383f43f29ec27082e903d8eee4.png

图5 水系结构线程序修改前后对比

Fig.5 Comparison of river structure line between modified and pre-modified by the program

dd865ef0be9007c7fd6641f8a341314c.png

图6 实体化处理后的桂阳县水系分布图

Fig.6 Distribution of Guiyang river system after entity processing

结合试验对该算法进行分析,可以得出以下结论:

1)该算法可以将水系结构线自动修改至水系面内,修改后的水系结构线具有Douglas-Peucker算法的一些优点,比如保留特征点,去除次要点,节点少,数据量小。虽然水系结构线的节点都在水系面中心位置,但在水系结构线的个别线段中间处,存在靠近水系面边界的情况。

2)该算法在修改水系结构线时,能保持水系流向和属性信息不变。

3)基于该算法,软件实现了批量修改水系结构线、修改单个水系结构线、添加单个水系结构线等功能,在实际应用中可以灵活选择。

4)该算法实现了批量自动修改水系结构线和属性信息自动赋值,处理速度快,能用于实际项目生产。如果采用人工修改空间位置以及人工录入属性的方式对桂阳县数据进行处理,大约需要2人/工作日,软件应用于湖南省122个县(市、区)数据的检查处理,在实际应用中节省了大量人工处理时间。

4 结束语

本文设计的水系结构线生成算法,思路简单,程序实现容易,应用灵活,实现了水系结构线的批量修改、单个修改和单个添加,修改水系结构线时能保持水系流向和属性信息不变,处理速度快。通过该算法,解决了因采集精度要求不同,地理国情普查水系网络数据中的水系结构线存在大量不能完全落入其他生产项目水系面内的情形,实现了对地理国情普查水系网络数据的充分利用。在实际应用中,节省了大量人工录入和修改数据的时间,该算法在水系结构线生成以及不同精度数据应用等方面具有一定的应用价值。

15f99acaaa32cfcb2516904bd1a1e5d0.png

本期回顾

5bbc6bceed3411b5a4ff22c145dcc560.png

文化遗产数字化修复

· 机载LiDAR点云建筑物屋顶轮廓线自动提取研究综述

· 融合多特征的兵马俑碎片分类技术研究

· 基于高光谱影像的瞿昙寺壁画颜料层脱落病害评估

理论研究

· 兼顾非期望产出的工业用地效率测度、分异与溯因 ——以东北三省为例

· 基于模体的化石能源贸易网络特征分析

· 基于自编码网络的移动轨迹异常检测

· 基于同质区和迁移学习的高光谱图像半监督分类

· SSW系统在地下大型停车场三维建模中的应用研究

· 顾及上下文信息的城区机载LiDAR建筑物自动化提取方法研究

创新应用

· 新世纪版《国家普通地图集》数学基础的系统化构建与可视化研究

· 一种融合多维信息的城市建成区提取方法

· 基于LSTM的城市道路交通速度预测

· 基于Lego机器人的低成本SLAM方法设计

· 基于时间序列的网格化城市管理案件预测模型研究

技术探讨

· 基于消费级无人机的地质露头三维建模技术研究

· 顾及轮廓特征的建筑物对象级三维变化检测方法

· 室内三维点云与BIM集成的建筑施工进度监测方法

· 山东省地理信息时空大数据中心的设计与实现

· 基于机载点云数据的高精度水域DEM快速生成方法

· 地下管网BIM数据一体化处理平台研发与应用

· 基于移动GIS的工作用图服务体系研究

邮箱变更声

·《地理信息世界》邮箱变更声明

网站开通公告

·关于开通《地理信息世界》网站的公告

诚聘特约审稿专家

·诚聘|《地理信息世界》诚聘特约审稿专家

专题组稿

·约稿函|《地理信息世界》关于开辟“博士综述论坛”专栏的约稿函

46f9197ca103d67de3f57e0b4cedc41f.png

b5ca66a2584ea4d948911c2bf9f6a40d.png

9346b41e9cb5b14342c1c23c509c6d51.png

a6e662a7967984d216c099b11cc090f7.png

279825e718fa00724ef31d964d3b766c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值