张陈意,王山东,韦洛毅,韦 磊
(1.河海大学 地球科学与工程学院,江苏 南京 211100)
航道图生产过程主要包括数据预处理、CAD 数据转换为GIS 数据、数据入库前的产品质量检查、数据入库、最终质检无误后发布电子航道图。在数据生产过程中由于外界因素、仪器限差、人工操作错误等都会影响电子航道图数据的质量。数据质量是数字测绘产品的核心,在传统的地图质量检查过程中,大多数通过人工目视判读来检查,不仅费时费力,检查效率低下,而且有些细节错误无法通过人工检查直接得到,另一方面,航道图信息采集、图形绘制、属性录入依托的平台是CAD,所以保障CAD 数据质量将直接决定了GIS 数据质量[1]。综上所述,基于CAD 平台二次开实现数据质量自动化检察成为航道图数据质量控制的重要手段。
内河电子航道图技术规范(JTS195-3-2019)[2]中规定了电子航道图数据所有需要进行检查的内容,有效性检验列表包括物标、属性、数据结构等相关的详细检验内容及其特殊物标属性值的检验,检验结果分为错误和警告两类:错误用E 表示,警告用W 表示。检验中发现的错误应处理,不影响数据整体质量的警告可不处理。对于不符合质检要求的实体在做出相应修改后,应再次检查,直至航道图中无错误实体为止。
基础地理信息要素数据字典第1 部分:1∶500、1∶1 000、 1∶2 000 比例尺(GB/T20258.1-2019)[3]中详细阐述了各类地物与相关要素之间的关系,比如桥梁与桥墩之间的要素关系为连接、包含。
基于这两个标准,结合内河电子航道图普查数据,根据实际需求,确定所有需要检查的内容。根据检查的不同方面共分为6 个大类,分别为属性检查、层内拓扑、层间拓扑、接边检查、数据组织结构检查、特殊地物属性值检查,部分质量检查规则如表1 所示。程序的检查内容主要为物标的属性检查与拓扑检查[4]。
表1 质量检查规则表(部分)
CAD 图形文件作为制作内河电子航道图的主要初始数据,可以准确地获得工程相关基础数据和信息[5]。而现有航道图外业数据采集以及属性录入大多数依托CAD 平台进行,因此本文基于AutoCAD 平台结合ObjectARX 利用C#语言进行质检软件的开发[6],质检流程图如图1 所示。
图1 质检流程图
1)易用和实用性原则。将所有质检的数据参数全部放在质检规则库中,并直接后台调用。质检人员可在质检过程中对不符合质检规则的实体进行定位并做出相应修改。
2)可扩展性原则。软件动态读取所有的质检规则类与需要进行质检的内容参数,并留有接口,以便后期对质检代码进行更新与扩展
3)界面友好。质检界面整洁、实用,与CAD 交互性好,质检功能可以得到很好的展示,并可进行对物标定位。
质量检查规则库主要由三张表构成,分别为质检规则表、实例主表、实例表。
其中质检规则表中存放的是各个检查规则类,如属性检查中的属性值不为空、字段值值域符合规则、多属性约束等,层内拓扑中的点与点不能重叠、线段不能自相交、面与面不能重叠等,层间拓扑中的点与点不能重叠、面与面不能重叠等,每一个规则都对应着一个相应的功能函数,质检规则表结构如表2所示。
实例主表中存放的是对应于质检规则表中每一个规则检查项所对应的详细检查规则项,如层内拓扑检查中的点与点不能重叠包含4 个具体的检查规则项,包括检查水深点不重合、高程基准不重叠、深度基准不重叠、检查相连结点或孤立结点不重合[7],实例主表通过SortCode 与质检规则表进行关联,从而确定每一个具体的检查实例进行质检时所要调用的函数名,具体表结构如表3 所示。
实例表中存放着实例主表中详细检查规则项对应的参数,如检查具有中文名称(NOBJNM)的物标的英文名称(OBJNAM)不为空缺,而在内河的物标数据库中,具有NOBJNM 属性的物标有很多类,因此通过SortCode 与ExNo 两个字段与实例主表进行关联,可以实现对多个不同类别的物标进行同一个质检规则的检查,具体表结构如表4 所示。
通过构建的质量检查规则库可以实现跟质检有关的所有数据全部后台处理,在进行质检时只需要进行选择质检哪一项然后即可调用相关功能算法与质检参数,因此可以使程序具有较高的可定制性与可扩展性。
表2 质检规则表
表3 实例主表
表4 实例表
首先选择需要进行质检规则的大类,可进行一键式全部选择,也可自由选择,界面如图2 所示,每一个规则大类都对应若干详细的质检规则项,若选择了质检规则的大类,则与其相对应的所有质检规则项默认全部选择,并且可自由选择是否需要对具体的质检规则项质检,其中层内拓扑中点与点不重叠的相关质检规则项如图3 所示。若不需要进行质检,则取消勾选相应的检查项即可。选择完所有要进行的质检规则大类与质检规则项以后,点击检查,即可在后台调动相应的质检函数与质检项的参数,并将不符合的结果首先输出在质检结果集中,如图4 所示。质检过程方便,操作简单,用户不需要在质检过程中设置任何参数,只需要按需求进行选择质检项即可。质检界面如图2 中所示。
图2 质量规则类
图3 质检规则项
图4 质检结果集
2.3.1 属性检查
对于属性的检查,在质检结果集中双击有错误的那一列即可利用物标的ObjectID 进行定位,实体高亮并以一定的大小显示在界面的中心,并自动弹出属性的录入界面,直接对不符合质检要求的属性值进行修改。如检查河流的物标名称不为空,可以在属性录入界面对河流的物标名称属性值进行修改,如图5 所示。操作简单直观,将大量减少质检人员的任务量,简化借助质检报告去确定物标再去修改属性的操作过程。
图5 河流属性修改界面
2.3.2 拓扑检查
拓扑检查包括层间检查与层内检查,为了降低程序的复杂性,提高程序的重复使用度,很多算法对层间检查与层内检查皆适用,如层内点重叠与层间点重叠、层内面重叠与层间面重叠等的质检算法基本一致,不同之处在于层间检查传入的参数属于两个不同的图层,而层内检查传入的参数是两个相同的图层,然后在质检过程中进行判断,如果是同一个物标则不再进行两者关系判断,但其核心的算法都是一样的[8]。
在质检界面中,可根据用户勾选的检查内容进行质检,将不符合拓扑规则的实体输出在质检结果集中,再双击错误项可根据ObjectID 进行自动定位,使错误实体高亮以一定大小显示在CAD 中心,初步判断实体的拓扑情况,并对实体进行相应修改。
2.3.3 打印质检报告
根据质检结果集中的信息,打印质检报告,打印内容为对应的质检规则大类的编码、具体的检查项内容、实体的句柄,以及每一个大类中不符合质检规则的实体百分比。根据质检报告可以对实体的标准化与规范进行初步结果判断。输出实体句柄的原因在于CAD 中每一次打开物体的ObjectID 都会改变,因此可以根据句柄的唯一性确定实体。具体流程如下:首先根据句柄获取实体最新的ObjectID,然后根据ObjectID 对物标进行定位,最后根据检查项的内容可再次对实体进行相关修改。
该质检程序首先将应用于京杭运河苏北段(试验段)电子航道图生产过程中的质量检查,相较于以往的传统人工质检模式,将会大大提高质量检查效率,缩短电子航道图的生产周期,降低人工成本和时间成本。本程序将会进一步与PostGIS 空间关系数据库想结合[9],将CAD 质量检查与GIS 质量检查合并为同一类检查,最后根据错误报告将错误图形在源CAD 中进行定位,保持CAD 与GIS 图形的同步修改,实现电子航道图跨平台使用与发布。