房晓亮,王沐晨,童纯清,黄文衡,张云菲
(1.中国电建集团中南勘测设计研究院有限公司,湖南 长沙 410014;2.长沙理工大学 交通运输工程学院,湖南 长沙 410114)
当前,大多数城市地下管网数据都是以AutoCAD格式进行存储[1-3]。在CAD数据格式中,管点、管线图层与相应的注记图层独立存储,部分特征属性还以图形符号的方式呈现[4]。在智慧管网系统建设中,需借助GIS 技术实现地下管网的统一管理、查询分析以及规划设计。因此,将管网CAD数据格式转换为GIS数据格式是智慧管网建设的重要内容。
目前主流的商业软件能实现数据格式的直接转换,但是存在部分特征无法转换或者转换操作复杂、难以推广等问题。为了实现CAD管网数据与GIS数据内容互操作,特别是管径、流向等管网属性信息的相互传递共享,同时建立管网内部拓扑关系以便于空间分析,本文提出一种基于ArcGIS Engine的城市地下管网数据转换处理方法,实现地下管网数据的拓扑关系构建、属性信息关联和流向计算插值等自动处理功能[5-6]。
在CAD管网数据中,管网数据表现为注记、点和线3 种数据形式。通过GIS 软件进行格式转换之后,得到3 个shp 图层,分别是注记图层、点图层以及线图层。注记图层中包含管点编号、管径信息等;点图层包括管点图形数据;线图层包括管线、流向等图形数据。本文所需管点数据、管线数据、管径信息、流向信息均可从上述3 个图层中根据属性字段进行筛选获取。
结合管线与管点的关联特征,此特征表现为管线由2 个节点组成,此节点与点图层中包含的管点数据的几何特征完全一致,但缺乏属性信息。本文通过对管线数据行拓扑构建,快速获取管线与管点的拓扑关系。通过构建的拓扑数据反算管点,最大限度地避免了管点与管线不统一的问题。
具体流程为,通过ArcGIS Engine 提供的FeatureclassToCoverage 将管线数据转换为Coverage,再通过ICoverage.Build 生成Node 和Arc 图层,其中Node 图层为管点数据,Arc图层为管线数据,这2个图层是后续工作开展的基础。
1.2.1 管径信息提取
根据绘图原则,将距离管线最近的注记作为该管线的管线注记信息[4]。通过对管线要素与管线注记点进行位置判断,将距离管线最近的注记点信息赋予管线要素。如图1 为将管线注记的相关属性赋予对应的管线要素。
图1 管线注记与管线位置关系判断
1)读取管线数据和标注数据分别存储在IFeature-Class pFeatClsLine、IFeatureClass pFeatClsInfo 中,新建字典Dictionary
2) 遍历管线数据pFeatClsLine的各管线要素,从标注数据pFeatClsInfo中找到与该管线要素距离最近的注记点,为了提高处理的效率,采用构建缓冲区筛选出位于缓冲区内的注记点,通过每个注记点的坐标计算注记点至管线要素的欧氏距离,距离最近者即判断为该管线的标注,进而读取该注记中的管线信息写入对应管线要素属性表中。
3) 在CAD数据中,管线要素与管线注记可能不是一一对应,上述处理后部分管线要素可能没有找到对应的管线注记,需根据管线连通关系及前后连接管线的已知属性信息对匹配到管线注记的要素进行属性赋值。
1.2.2 管点信息关联
将注记图层与构建拓扑生成的Node图层进行空间关联,主要方法是通过遍历Node 图层中的管点要素,针对每个要素做缓冲区,通过缓冲区筛选管点附近的注记,如果存在多个注记点,则取距离最近的注记点作为当前管点的注记信息,并将这些信息写入属性表中。
1.3.1 流向符号计算
管线的流向信息在CAD数据中是以箭头符号进行表示,需要根据箭头方向进行流向判断。对管线要素与管线流向符号进行关联,实质上是对流向符号的线坐标与管线空间位置关系的判断。图2 为流向符号与管线的位置关系。
图2 流向符号与管线位置关系
1)读取管线数据和流向数据分别存储在IFeature-Class pFeatClsLine、IFeatureClass pFeatClsDir中,新建字典Dictionary
2)遍历管线数据pFeatClsLine的各管线要素,从流向数据pFeatClsDir中找到与该管线距离最近的流向符号,筛选出位于缓冲区内的流向符号线,并计算流向符号线与管线要素的欧氏距离,距离最短者即为该管线的流向符号。
3)判断管线流向与实际流向是否一致,若一致,赋流向值为1,若不一致,赋流向值为0,将流向值写入至管线属性表。
流向符号方向判断方法如图3 所示,通过IPoly-Line.QueryPointAndDistance 函数计算点与管线的垂点及与管线起始点的路线距离,将位于管线左侧流向符号上的点P0和P1作为输入点,输出与管线起始点的路线距离分别为d0和d1。当d1>d0时,说明管线流向与图形符号流向一致,流向属性值为1;当d1≤d0时,说明管线流向与标注流向相反,流向属性值为0。
图3 流向判断示意图
1.3.2 流向属性计算
经过上一步处理,仍然存在部分管线没有流向赋值的情况,需要进行流向计算。一般情况下,如果管线的起点和终点具有高程信息,则可根据管线起点高程和终点高程的高差,确定管线流向属性,或者根据管线连通关系,对流向属性进行赋值。
基于Microsoft Visual Studio C#与ArcGIS Engine 开发平台,实现地下管网数据自动转换处理系统。通过需求分析,设计开发了数据预处理、属性数据转换和地图展示三大功能模块。其中,数据预处理包括格式转换、构建拓扑、管网编号功能,属性数据转换包括基础信息转换、管径属性转换、流向属性转换、流向属性计算4 个功能;地图展示包括地图显示、地图缩放漫游、右键菜单、符号修改、图层属性浏览等功能。
本文使用海口市地下管网数据进行数据转换综合实验。经过系统转换处理后的管点属性表和管线属性表如表1 和表2 所示。从结果中可以看出,管径、流向等相关参数已经添加进管线属性数据;并且管线流向明确,可供后续空间分析;转换后的各要素都有其属性信息,便于对整体管线进行统计分析与管理。
表1 管点属性表
为检验本方法的转换效果,对转换成果进行抽样检测,随机抽取实验管线的管径数据、流向数据等属性信息与标注数据进行比对分析,得出随机抽样的检测结果。随机抽取管线共600 个,管线注记共300个,流向注记共300 个。人工判读600 个管线,其中正确匹配596 个,错误匹配4 个。错误原因是进行管径信息提取时,读取了其他管线的注记点信息。通过对属性信息转换结果检验,属性信息和实体对象基本匹配并实现管线信息自动传递。
本文通过对地下管网数据转换后标注符号数据与管网图形数据的对应关系研究,提出一种基于ArcGIS Engine的城市地下管网数据转换处理方法,实现了地下管网数据的拓扑关系构建、属性信息关联和流向计算等功能,可以为地下管网数据转换和管理提供技术参考。