14测绘第41卷第1期2018年2月
地理国情监测数据质检工具的设计与实现
王万刚
(四川省第三测绘工程院,四川成都610500)
[摘要]本文研宄如何根据2017年基础性地理国情监测数据生产项目的技术要求,基于Python、C#程序开发语 言,设计并实现一套专门针对该项目的数据质量检查工具。通过程序自动化处理,可代替繁琐的人工检查,在 一定程度上提高生产效率、降低生产成本、保障成果质量。[关键词]质量检查;地理国情监测;Python;二次开发[中图分类号]P2〇8
[文献标识码]B
[文章编号]1674_5〇19 (2〇18) 01-0014_03
Design and Implement of Quality Inspection Tool for
Geographical Conditions Monitoring Data
WANG Wan-gang
1
引言
第一次全国地理国情普查已于2015年完成,从 2016年起,地理国情信息获取进入常态化监测阶段。 2017年,我院承担了四川省、自治区、广西壮 族自治区共21个市州约97万平方公里的基础性地理 国情监测数据生产任务,该项目工期紧、测区范围广、 数据量庞大、参与生产人员多且作业水平参差不齐。 为了进一步提高质检环节的工作效率,将更多时间留 给数据生产工序,同时确保数据成果的规范性与正确 性,我院根据2017年基础性地理国情监测数据生产 项目的技术规范,基于Python、C#程序开发语言, 设计并实现了一套专门针对该项目的数据质量检查 工具。
相邻面、悬挂点、节点间距、急锐角等。
(2) 数据范围检查:检查地表覆盖图斑及地理 国情要素范围是否超出下发的工作界。(3) 逻辑一致性检查:检查城市道路的RN、WIDTH 属性是否与覆盖它的公路要素的RN、WIDTH属性一 致;地表覆盖图斑的CC属性及图斑边线是否与外业 调查核查数据一致;水系结构线是否超出高水界范 围,单线河流、水渠是否伸入高水界内;人工地表覆 盖图斑是否存在于高水界范围内,面积超过1000m2 的水面是否采集了水系面要素,地表覆盖水面范围是 否超出了对应的高水界;互通的不同层道路要素是否 已相交打断;道路附属设施(桥梁、隧道)是否被道 路要素覆盖,道路线要素是否被道路面图斑覆盖;独 立房屋图斑是否与房屋建筑区图斑相邻等。
(4) 状态标识合理性检查:将2017年版本数据 与下发的底图数据进行对比,检查已发生空间位置或 属性变化的地表覆盖图斑的FEATID、ChangeType、 TAG属性赋值是否正确;检查已发生空间位置或属性 变化的地理国情要素的ChangeType、ChangeAtt等属 性赋值是否正确。(5) 属性合理性检查:检查地表覆盖图斑的CC 属性是否在枚举值范围内。
其中,部分检查项需要程序自动排除下发底图中 就存在的该类问题。
2. 2不分区监测数据检查模块
不分区监测数据检查模块的主要检查项及其检 查内容如下:
(1)几何与拓扑检查:检查节点个数、复合要 素、重叠、缝隙、自相交、几何异常、噪声、节点间
2功能模块设计
基础性地理国情监测数据生产项目的底图数据
和2017年版本数据均以分区数据(区县级)、不分区 数据(省级或者市级)方式存储,分区数据中主要存 储了水域、公路、地表覆盖要素,不分区数据中主要 存储了铁路、构筑物、地理单元要素等。根据成果数 据的存储特点,本质检工具分为分区监测数据检查、 不分区监测数据检查、元数据检查、数据接边检查以
及解译样本数据辅助检查五个功能模块。2. 1分区监测数据检查模块
分区监测数据检查模块的主要检查项及其检查 内容如下:
(1)几何与拓扑检查:检查节点个数、复合要 素、重叠、缝隙、自相交、几何异常、噪声、同属性
测绘第41卷第1期2018年2月____________________________________________________________________________15
距、急锐角等。业人员查看出错要素所在位置和具体错误信息。
ArcToolbox (2) 逻辑一致性检査:检査境界线要素是否被 对应的境界面边线覆盖,境界面是否被高一等级境界 面覆盖等。
(3)
R 〇地理国情监测2017
^ X>
B % 不分
4? 101、检查不分区数提要素节点个数
4* 1〇2、检查不分区怎頃要素星否为多部分
状态标识合理性检査:将2017年版本数据
方1〇3、检查拓扑:靣垔昼、线目拒交、线目垔昼、同层线重昼、点重昼/几何检查
与下发的底图数据进行对比,检查已发生空间位置或
属性变化的地理国情要素的ChangeType、ChangeAtt 等属性赋值是否正确
其中,部分检查项需要程序自动排除下发底图中 就存在的该类问题。2. 3元数据检査模块
元数据检查模块的主要检查项及其检查内容 如下:
(1) 几何与拓扑检査:检査节点个数、复合要
素、重叠、缝隙、自相交、几何异常、噪声、同属性
相邻面等。
(2)
逻辑一致性检査:检査后一工序的开始时
间是否晚于前一工序的结束时间,如外业调查核查开 始时间是否晚于内业数据采集结束时间,内业编辑整 理开始时间是否晚于外业调査核査结束时间。
(3) 属性合理性检查:检查枚举类型的属性项 赋值是否合理。
2.4数据接边检査模块
数据接边检查模块包括分区数据接边检査与不 分区数据接边检査,二者的主要区别在于接边线不一 致,分区数据接边线与下发的工作界一致,不分区数 据接边线需要由程序根据不分区数据文件名中的PAC 及下发的工作界生成。
2.5解译样本数据辅助检査模块
解译样本数据辅助检查模块是将解译样本的实 地照片、裁剪影像以及样本PHOTO中的一些关键属性 项显示在同一界面上,辅助人工检査该样本的典型 性、实地照片及裁剪影像的质量、裁剪影像的视野标 绘和地面照片的关键属性是否正确等。
3关键技术研究
3.1检査模块的实现
本质检工具的绝大多数分区监测数据检查模块、
不分区监测数据检査模块、元数据检査模块以及数据
接边检查模块都是在ArcToolbox工具箱中使用 Python语言编写的自定义脚本,如图1所示。使用 Python脚本语言进行Arcgis二次开发,可以方便地 导入Arcpy站点包,从而使用非常简洁的代码便能高 效地实现空间数据分析、管理及转换等功能。所有自定义检査脚本的检査结果均会以点、线、 面图层的形式存储在同一 GDB数据库文件中,方便作
104、检查入分区55^素是否存在急说角 4? 1〇5、检查不分区数据傲發卸极小面
^ 106、检查選辑一致性:行政区乡触被县级錄、县级被市坂驢,境界线应与境!方201、检查不分区攻居要素芳点间距
方202、检查不分区斑g是否存在误删除、误增加FEATID的情况
4, 2〇3、检查不分区国情要素ChangeType、ChangeAtt屎性斌值是否正确
曰分区监测数据检查
友1〇1、检查要素节点个数 方102、检查要素是否为多部分^ 103、
扑:面重昼、面裂缝、线自相交、线目重昼、闫层线重昼/几何检查
在1〇4、检查UV_LCTL要素与UV_LRDL要录RN、WIDTH尾性星否一致
4* 1〇5、检查UV_LCRAH星否存在同屋性相雜面(CC、FEATID均相间)/星否存在图钥方1〇6、检查道路层(UV_LCTL\\UV_LVLL\\UV_LRDL )星否存在不合理的县挂点4* 107、1t^UV_LCRA^CC、TAG^S性
4* 1〇8、检查UV_LCRA层0521、0550图斑更新范围合理性4* 1〇9、縫
UV_HYDU1%UV_HYDA^关系
方110、检查极短线和极小面各• 201、检查要素芳点间距
s
方202、检查M否存在误脚除、误逭加FEATID的情况
4\" 203、检查UV_LCRA层FEATID、ChangeType尾栏星否有渥赋、斌错的情况4* 204、检查国情要素ChangeType、ChangeAttil性賦值星否正确4* 205. t^SUV_LCRA^
UV_HYDA^5^
友206、检査要素星否存在急锐角 方301、检查地表置盖内外业一致性
在401、检查分区数据范围是否与工作界一致 | 501、检查星否存在道路拒交未打断的情况
^ 502、检查新埴或者搀改过的道路要素线星否被0601面贾盖 4* 503、检查道路附屋设旌是否被道路贾盖
图1使用Python语言编写的自定义检査脚本
3. 2数据接边检査原理
以相邻多个分区监测数据的接边检査为例,自定
义的Python脚本算法步骤如下:
(1)
将多个GDB格式的分区监测数据库合并成
一个GDB数据库。将所有待接边检査的分区监测数据 放在同一文件夹下,先创建一个空的GDB格式数据 库,再遍历文件夹中的所有GDB数据,将第一个分区 监测数据库中的要素图层采用复制的方式导入到新 创建的数据库中,将剩下的分区监测数据库中的要素 采用追加的方式导入到新创建数据库下相同层名的 要素图层中。
(2)
使用游标遍历合并后的数据库中的要素,将ChangeType属性为3的要素删除。ChangeType属 性为3表示该要素己消失,在今后的建库阶段再物理 删除,不应参与接边检查。
(3)
接边线数据处理。根据遍历到的待接边检
査数据库文件名中的PAC,从下发的工作界面图层中 提取这几个待接边检查分区数据所在的工作界面要 素,再将工作界面要素转换成线要素,并且只保留两 两重合的一段作为接边线,最后再根据接边线生成一
个2m宽的接边缓冲区面。
(4)
遍历经过步骤(2)处理后数据库中的每个
图层,首先根据接边缓冲区面要素裁剪该图层,再将
16 测绘第41卷第1期2018年2月
该图层裁剪后的要素进行数据融合处理(如果是地表 覆盖图层,只要CC属性一致即融合;如果是地理国 情要素图层,只有除EC、ECP以及建库字段外的其他 属性项均相同的才融合)。
(5)如果该图层是面图层,则将融合后的面要 素转换成线要素,再将线要素与接边线做线相交处 理,线相交后生成的线要素所在位置就是待接边检査 监测数据中面要素不接边的位置。如果该图层是线图 层,则将融合后的线要素转换成点要素,转换过程中 只保留线的起点和终点,再将点要素与接边线做点相 交处理,点相交生成的点要素所在位置就是待接边检
查监测数据中线要素不接边的位置。
3. 3用户界面实现
编写好的自定义Python脚本在ArcToolbox中测 试无误后,再采用C#语言基于第三方插件 DevExpress开发用户界面,使用ArcEngine的 Geoprocessing类调用在ArcToolbox工具箱中自定 义的脚本工具,工具参数使用IVariantArray方式输 入。通过DevExpress插件中的XtraTreeList控件, 可以实现检查项多选功能,如图2所示。
解译样本数据辅助检査模块的界面同样基于第 三方插件DevExpress开发,如图3所示。
图2分区监测数据检査
[4] [5]
图3解译样本数据辅助检査
黎建平.地理国情普査成果检验辅助系统的设计与实现 周博飞,任思思,张学之.地理国情普査项目内业检査系
4结束语
权威、客观、准确的基础性地理国情监测数据成
[J].现代测绘,2015, 38 (5): 59-61.
果能够为各项专题性监测提供基础性的支撑,并持续 满足相关行业对地理国情信息的共性需求,因此,做 好基础性地理国情监测数据生产项目的质检工作意 义重大。本文针对《GQJC 01-2017基础性地理国情 监测数据技术规定》中明确的数据汇交前检査内容与
要求,以及生产过程中的易出獅节,综合利用Python、 C#程序开发语言,设计并实现了一套适合该项目生产 的数据质量检査工具,并在我院该项目生产过程中得 到了广泛应用,降低了监测数据成果出错概率,提高 了质检效率,节约了检查成本,有效地促进了我院 2017年基础性地理国情监测项目的顺利实施。
参考文献
[1] GQJC 0卜2017,基础性地理国情监测数据技术规定[S].[2] GQJC 02-2017,基础性地理国情监测生产元数据技术规定
[S].
[3] GQJC 06-2017,遥感影像解译样本数据技术规定[S].
统的研发[J].测绘与空间地理信息,2014,37(6):56-59.
[收稿日期]2017-12-18
[作者简介]王万刚(1986-),男,四川巴中人,注册测绘师, 测绘工程师,主要从事测绘项目管理。