测绘地理信息   2020, Vol. 45 Issue (5): 84-88
0
基于Python的多源地理数据高效质检系统[PDF全文]
杜田1, 许大璐2, 朱校娟2, 饶锦蒙1, 杜清运1    
1. 武汉大学资源与环境科学学院,湖北 武汉,430079;
2. 浙江省测绘科学技术研究院,浙江 杭州,310012
摘要: 针对不断增加的海量空间地理数据和愈加复杂灵活的数据质量检查需求,开发了一套基于Python和QT界面框架的开放高效的多源空间数据质量检查系统。利用开源的第三方工具类库和自主研发的算法处理多源空间地理数据,结合多进程和多线程技术提升质检效率,底层开发实现数据质量检查的各指标项,支持灵活导入质检规则,导出质检日志与质检成果报告,并在生产实践中验证了系统的可行性、可拓展性和高效性。
关键词: 数据质检    多进程和多线程    底层开发    Python    
Multi-source Geographic Data Efficient Quality Inspection System Based on Python
DU Tian1, XU Dalu2, ZHU Xiaojuan2, RAO Jinmeng1, DU Qingyun1    
1. School of Resources and Environment Sciences, Wuhan University, Wuhan 430079, China;
2. Zhejiang Institute of Surveying and Mapping Science and Technology, Hangzhou 310012, China
Abstract: For the ever-increasing massive geospatial big data and increasingly complex data quality inspection requirements, we design a comprehensive spatial data quality inspection system based on Python and QT framework. We use open source third-party tool libraries and independent research algorithms to process multiple types of spatial geographic big data, and combine with multi-process and multi-threading technology to improve quality inspection efficiency. The system uses the infrastructure development to achieve the indicator items of data quality inspection. The system can import flexible quality inspection rules, and export quality inspection logs and quality inspection results reports, and verify the feasibility, expandability and efficiency of the system in production practice.
Key words: data quality inspection    multi-process and multi-threading    infrastructure development    Python    

近年来,空天地立体观测与移动互联网技术的蓬勃发展极大地促进了高精度、高频率、全覆盖空间数据的增长,利用空间地理大数据来分析预测建模、可视化和发现新规律的时代就要到来[1]。而数据质量作为空间数据的生命线,将直接影响数据成果分析应用的正确性和可靠性,对此国内外专家学者针对数据质量的控制标准做了大量的基础理论研究[2-4],并总结了多项地理信息质量国际标准[5-8]。而为了控制这些空间数据质检指标,需要快速、高效地对各类基础地理信息数据进行统一规格的清洗、整理、汇集等检查作业。

近年来,基于ArcGIS Engine的测绘数据辅助质检系统的设计和应用已经日趋成熟[9-21],一定程度上增加了数据质检的自动化程度,但是在平台建设、拓展性以及处理效率方面仍存在一些问题。之前研究成果大多基于ArcGIS二次开发,程序独立性和拓展性较差,在应对后续不断增加的质检需求时无法实现功能的动态更新;同时,ArcObject的内在的多线程设计原理也在一定程度上限制了其数据处理效率。

本文根据浙江省测绘科学技术研究院数据质量检查过程中的多源数据以及数据规范,提取数据质检指标,基于Python与QT框架的独立桌面端系统开发技术,从底层编写质检算法并独立架构,对外提供API(application programming interface)可实现组件复用以及自定义质检规则,利用多线程和多进程技术,设计开发了一套面向空间地理大数据的数据质检系统,旨在为海量空间地理数据质量检查提供一套高效可行自动化的解决方案,从而助力大数据平台建设和城市地理空间管理应用。

1 系统总体架构

系统为多层体系结构,由4个部分构成:应用层、逻辑层和数据控制层和数据存储层,各个层级之间各自独立又相互关联。系统总体框架如图 1所示。

图 1 系统总体结构 Fig.1 Overall Structure of the System

1) 应用层将用户与业务逻辑层之间完成解耦,面向质检作业员,作业员在应用层与系统逻辑层进行交互。该层实现系统各项质检功能、界面的定制与调整,负责显示质检数据和接收用户输入的数据,包括质检规则、参数等,是质检系统的最上层,为用户提供交互式操作的界面。

2) 逻辑层是质检系统中最核心的部分,处于数据控制层与应用层中间,维护各层中间的联系,用来处理中间过程中各种规则、算法、数据之间的业务逻辑。业务逻辑的内容包括领域实体、业务规则、数据完整性、工作流4个部分。

3) 数据控制层接受逻辑层的请求并直接关联数据存储层,是数据层对外唯一的接口,负责维护基础地理信息库和质检知识库。在逻辑层请求过后由数据控制层调取数据供系统使用。

4) 数据存储层是系统最基础的一部分,负责存储各类基础地理信息和质检知识,包括数字正射影像图(digital orthophoto map, DOM)、数字高程模型(digital elevation model, DEM)、时空专题大数据和三维景观模型数据在内的各类型质检数据以及灵活的质检规则库和算法库。其中,矢量数据支持主流的数据格式包括Shapefile、ArcGIS Personal Geodatabase,三维景观模型数据支持主流的.max文件和.directX文件;质检规则库是根据数据规范封装而成的JSON(Java Script Object Notation)文件集,支持用户增删查改;质检算法库则是由底层Python编写的算法脚本文件,是系统提前设计完成的可供外部程序调用的算法单元。

2 功能设计和实现

空间地理大数据质检系统共包括DOM数据质检、DEM数据质检、三维景观模型质检、时空专题数据质检和质检信息管理5个模块。各模块主要功能介绍如下:

1) DOM数据质量检查模块负责DOM数据的质量检查,主要有4个检查项:①影像异常值处理:系统根据输入的影像异常值范围,边缘修正因子以及扩大剔除范围的距离,自动剔除影响边缘部分顽固异常值;②覆盖范围检查:利用索引表与地名库数据中的地市及县市区境界面相交,检查该影像属性项内的覆盖范围值是否正确;③影像分辨率与坐标系检查:按输入的要求对影像分辨率和坐标系检查; ④索引与影像匹配检查:检查索引表的影像名称属性项、所在文件夹内的XML文件名(元数据名)和IMG名(影像名)三者的一致性。

以浙江省部分DOM影像数据为例,对其影像存在的异常值进行检测。操作步骤如下:①打开“影像异常值处理”功能面板并输入待检查DOM文件夹路径;②选择检查模式(简单模式或正常模式),并选定待检测异常值、近似异常值距离、边缘修正因子、内扩距离等检测参数;③设置修改参数,是否对异常值进行处理以及修改目标数值;④设置DOM输出文件夹路径、输出格式以及是否生成影像金字塔;⑤选择点击开始检查按钮进行检查。

检查完成后弹出质检报告,可选择导出.xls格式质检报告和打开质检日志,可查看单幅影像的原始位置、输出位置以及元数据信息。

2) DEM数据质量检查模块负责检查DEM的数据质量,包含两个检查项:①DEM数据异常值检查:按照质检作业员所给的DEM高程数据的正确阈值,将不满足高程正确范围的区域用矢量形式圈出并导出为.shp文件;②DEM数据接边检查:对接边后DEM数据的正确性和完整性进行检查,包括对裂缝、黑边等现象的检查,并将错误情况下涉及到的DEM数据列出。

3) 时空专题大数据质量检查模块。模块负责检查时空专题大数据的数据质量,包括3个检查项:①属性规范性检查:对要素属性字段进行命名格式、逻辑性表述、拼写和描述等问题进行检查;②同一图层要素重复性检查:检查时空专题要素类数据中,同一图层内要素名称重复度超出给定阈值的要素,并将其列出;③不同图层编码一致性检查:检查多个时空专题要素类数据中,不同图层下名称相同但编码不同的要素并将其列出。

4) 三维景观与模型数据质量检查模块负责检查三维景观与模型的数据质量,包括两个检查项:①模型平面位置精度检查:检查并计算3DMax数据中三维模型的底面的空间位置同所给的标准shp面要素的底面位置的距离偏差值,即三维数据底面同实际底面存在空间上的偏移情况;②贴图数据完整性检查:检查三维景观和模型数据中存在模型和贴图不对应的情况。

5) 质检信息管理模块负责数据质检流程中的所有工作流的记录,包括调用的数据名称、类型、路径等元数据信息,系统的数据输入、读取、检查、输出等过程的进度信息,数据标准规范等规则信息,以及质检数据成果和质检作业报告等成果信息。

3 关键技术

空间地理大数据质检软件以国家基础地理信息清洗工作为目标,既要保证所有类型的空间数据都能够检查,也要求能够快速精准完整地完成质检工作。系统创新性地运用Python语言从底层开发,不依赖于任何商业软件环境,集二三维数据处理为一体,并结合多进程多线程技术,搭建一个高效独立的数据质量检查平台。

3.1 多源数据的综合质检方式

系统中涉及到的多类数据源具有不同的数据组织和命名规范,需要对多源数据进行解析和处理。数据类型主要有矢量时空专题数据、栅格影像数据和三维景观模型数据3种,分别设计相应的底层算法进行数据处理。

矢量时空专题大数据以ESRI Shapefile(.shp)和File Geodatabase(.gdb)两种格式为主。系统使用Geopandas[22]和OGR[23]开源工具包进行数据处理,其中Geopandas结合了科学计算库Pandas和几何操作库shaply的功能,负责对.shp文件进行读写检查;OGR是开源C++的一个读取和处理矢量数据的代码库,负责对.gdb文件的读写。二维栅格数据包括DEM和DOM影像图,以GeoTiff和IMG格式为主。系统使用性能强大的开源栅格空间数据转换库GDAL(Geospatial Data Abstraction Library)进行数据操作,该库同样是ArcGIS的底层构建库,并提供了API接口方便开发人员自定义功能。系统以开源GIS工具库为基础,科学计算库为工具,结合实际需求自主编写处理算法,如DOM影像分层分块算法等,实现多类型空间二维数据的质量检查。

算法执行时,首先读取质检数据,根据数据类型来选择读写引擎,矢量数据采用Geopandas,栅格数据使用GDAL,数据读入后调用质检规则,根据检查需求读取页面上输入的参数,生成对应指标项的算法进程,并加入到系统进程池中进行并行计算,质检结果以成果数据和.xls格式的检查报告两种形式展现出来。具体的数据质检流程如图 2所示。

图 2 数据质检流程 Fig.2 Flow Chart of Data Quality Inspection

三维景观与模型数据以3DMax软件格式.max和三维模型中间交换格式.DirectX为主。系统将.max批量化转换为.DirectX格式文件统一处理,根据.DirectX文件组织规范,自主编写底层解析算法获取三维模型纹理、定点坐标、贴图、坐标系等信息,按照质检需求点对指定指标进行检查。

三维数据质检的核心要点是解析闭源数据格式.max文件并对数据的底面坐标的读取,同时和矢量面数据进行空间上的关联和对比,从而计算出三维模型底面坐标值与参考面数据的实际位置偏差值。针对此列问题,系统将.max格式数据自动转换为中间件格式数据.DirectX,由于.DirectX格式有完整开放的数据组织规范,自主编写对应读写算法,层层解析,根据方位文件内部的矩阵和坐标系计算出三维模式的底面坐标;由于参考面数据与三维模型数据没有实际的属性字段关联,故采用读取参考面数据后根据两类面数据空间位置的最邻近关系,进行一一匹配,从而计算出三维模型的偏差值。

3.2 多进程和多线程结合的高效质检方案

Python多进程技术就是利用多进程工具包multiprocessing开辟多个进程实现多个CPU核心并发执行同一函数。支持子进程、通信和共享数据、执行不同形式的同步。系统在进行数据批量处理时自动使用进程池来分配任务,根据CPU核心数量来开辟最大进程数,每个CPU处理单个数据并行异步地执行质检算法,在回调函数中将质检信息封装并传回主界面。

以DOM影像异常值检查为例,对多幅影像数据进行扫描,提取异常值影像区域并对异常值进行处理,经测试在传统人工检测下,以及分配不同进程数量下程序运行的时间如表 1所示。

表 1 各质检方式效率对比 Tab.1 Comparison of Efficiency of Each Quality Inspection Method

3.3 基于Python与QT的独立质检系统

空间地理大数据质检系统采用Python语言开发而成,Python是一种面向对象的解释型高级计算机程序设计语言[24],开发效率高,具有极强的移植性、可扩展性和可嵌入性等,包含丰富的标准类库,如正则表达式、线程、数据库、XML、HTML、GUI(graphical user interface)以及其他与系统有关的操作等,并能够轻松导入其他语言编写的各种模块。QT是由QT Company开发的跨平台C++图形用户界面应用程序开发框架[25]。该框架支持2D/3D图形渲染,支持OpenGL,具有易拓展、跨平台的特点,是桌面端、移动端和嵌入式系统开发的主流框架。

系统在研究国内外质检软件的基础上,采用Python语言与QT框架结合的方式进行底层开发,具备以下3个优点:①良好的移植性和拓展性。Python和QT都具有跨平台的特点,系统可直接运行于多种操作系统中;同时由于其拓展性,可在已有底层算法基础上进行二次拓展,调用指定质检模块完成质检作业。②底层开发的独立桌面端程序。系统使用Python及其功能强大的开源第三方库完成质检算法的底层设计与系统的功能实现,使用QT组件编程完成界面设计与封装,并通过QT的信号槽机制等实现系统的内部逻辑与事件处理,摆脱了传统空间地理系统基于商业GIS二次开发的模式,避免依赖运行环境与商业许可的传统弊端。底层开发模式具有很强的独立性和灵活性,方便对底层算法和结构进行修改。③灵活兼容的软件架构。Python语言支持主流的云计算、Web开发特别是科学计算和人工智能等技术,而随着数据量的激增和质检需求的不断增加,系统框架具有的良好兼容性可保证前沿技术的植入,比如可直接嵌入深度学习模块对数据集进行训练,提升系统智能化程度。

4 结束语

本文针对日益增加的海量数据和愈加复杂的质检规则,在分析当前数据特点、质检需求和软件架构的基础上,自主研发了一套独立开放的综合数据质量检查系统。目前空间地理大数据质检系统已成功应用于浙江省基础地理信息中心的数据质量检查工作。系统通过调用第三方标准工具类库和自主研发算法,实现了对DOM数据、DEM数据、时空专题大数据、三维模型数据的多个指标项的批量质检;同时,系统通过多线程和多进程技术和分块算法,优化了质检算法,大大提升了数据检查效率;基于Python原生开发和QT图形界面框架,增强了系统的交互性、灵活性和可拓展性,在未来可不断集成新的质检算法和人工智能技术,满足日益增长的质检需求,该系统在各数据质检单位具有广泛的应用前景。

参考文献
[1]
李德仁, 姚远, 邵振峰. 智慧城市中的大数据[J]. 武汉大学学报·信息科学版, 2014, 39(6): 631-640.
[2]
Lee Y W, Strong D M, Kahn B K, et al. AIMQ: A Methodology for Information Quality Assessment[J]. Information & Management, 2002, 40(2): 133-146.
[3]
Pipino L L, Lee Y W, Wang R Y. Data Quality Assessment[J]. Communications of the ACM, 2002, 45(4): 211-218. DOI:10.1145/505248.506010
[4]
Blakemore M. The Accuracy of Spatial Databases[J]. Computers & Geosciences, 1991, 17(4): 593-594. DOI:10.1016/0098-3004(91)90118-W
[5]
Drobnjak S, Radojcic S, Bozio B. ISO 19157 Standard Application in Technological Process of the Production of Digital Topographic Maps[J]. Tehnika, 2014, 69(6): 931-937. DOI:10.5937/tehnika1406931D
[6]
国家质量监督检验检疫总局, 中国国家标准化管理委员会.地理信息质量原则: ISO 19113: 2002[S].北京: 中国标准出版社, 2008
[7]
国家质量监督检验检疫总局, 中国国家标准化管理委员会.地理信息质量原则: ISO 19114: 2005[S].北京: 中国标准出版社, 2008
[8]
Ali A L, Schmid F. Data Quality Assurance for Volunteered Geographic Information[M/OL]. [2020-04-05]. http://link.springer.com/10.1007/978-3-319-11593-1_9. doi: 10.1007/978-3-319-11593-1_9
[9]
李寿清, 施冬. 测绘数据质检自动化系统设计与实现[J]. 科技传播, 2018, 10(2): 71-72.
[10]
陈祥葱, 孟凡娟. 规则驱动的空间数据质检模块设计及实现[J]. 城市勘测, 2015(2): 69-73.
[11]
翟雪宁. 基于基础地理空间数据库数据质检子系统的数据检查方案研究[J]. 矿山测量, 2016, 44(4): 32-34.
[12]
冯杭建. 基于RSTT模型的空间数据质检系统研究[J]. 地球信息科学, 2007(1): 129-135.
[13]
乐恒, 高峰, 张伟伟. 空间数据质检软件的设计与实现[J]. 地理空间信息, 2016, 14(11): 41-43.
[14]
张璐.基于ArcEngine的地理国情监测矢量数据质量检查系统开发研究[D].西安: 长安大学, 2017 http://cdmd.cnki.com.cn/Article/CDMD-10710-1017868668.htm
[15]
耿健强.基于大数据质检信息多维管理系统研究[D].北京: 北京工业大学, 2016 http://cdmd.cnki.com.cn/Article/CDMD-10005-1016785169.htm
[16]
段晓冬.数据质检与分析系统设计[D].天津: 天津大学, 2015 http://cdmd.cnki.com.cn/Article/CDMD-10056-1016110029.htm
[17]
张鑫.基于ArcEngine的DLG数据质量检查系统开发[D].西安: 长安大学, 2014 http://cdmd.cnki.com.cn/Article/CDMD-10710-1014070925.htm
[18]
靖常峰, 盛林, 魏海洋, 等. 基于AutoLISP的空间数据质检与整理工具集设计与实现[J]. 测绘通报, 2013(4): 29-32.
[19]
刘建军. 基础地理信息数据质量检查软件的设计探讨[J]. 测绘通报, 2010(11): 18-21.
[20]
冯杭建, 谢炯, 潘雅辉, 等. 面向规则的智能空间数据质检模型及实现[J]. 浙江大学学报(理学版), 2008(1): 100-104.
[21]
吴长彬, 闾国年, 舒飞跃. 基于知识与规则的地籍数据质量检查方法[J]. 地理与地理信息科学, 2007(5): 22-25.
[22]
Brett M. Geopandas: Geographic Pandas Extensions[EB/OL]. [2015-08-12]. https://geopandas.org/index.html
[23]
Fischer J. GDAL Documentation Tutorials [EB/OL].[2012-10-14]. https://gdal.org/tutorials/index.html
[24]
van Rossum G. Python 3.6 Documentation[EB/OL].[2016-09-12]. https://docs.python.org/3/tutorial/
[25]
Turunen T. Qt|Cross-Platform Software Development for Embedded & Desktop[EB/OL].[2017-11-12]. https://wiki.qt.io/Qt_5.9.3_Change_Files