蔡建民,花向红,吴 帮,岳海斌,何玉剑
(1.武汉大学测绘学院,湖北武汉430079;2.武汉大学灾害监测和防治研究中心,湖北武汉430079;3.福建省莆田市国土资源局,福建莆田351100)
基于ArcEngine控制点查询管理系统的设计与实现
蔡建民1,2,花向红1,2,吴 帮1,2,岳海斌3,何玉剑3
(1.武汉大学测绘学院,湖北武汉430079;2.武汉大学灾害监测和防治研究中心,湖北武汉430079;3.福建省莆田市国土资源局,福建莆田351100)
摘 要:基于ArcEngine控制点查询管理系统的设计思路,对系统总体结构、系统数据库、系统功能进行详细设计。系统结合莆田市控制点成果管理需要,采用Visual Studio.NET语言实现控制点保存、批量入库、批量导出、查询、点位分布可视化、点之记可视化和打印等功能,并阐述系统在开发过程中遇到的技术问题和解决方案。
关键词:控制点;ArcGIS Engine;查询管理系统;批量数据入库;可视化
控制点在工程设计与施工中起到重要的作用,提供地理坐标信息基准,是测绘工作的核心内容。日常工作中的控制点管理方法极为简单,主要利用点及记录其坐标信息的纸质文档或电子文档作为存储介质。随着我国国民经济的不断发展和基础服务设施的不断完善,当工程项目中控制点数目较多时,这种传统的控制点管理方法显现出一系列的问题,如控制点数量较多不易管理,查询检索控制点会消耗较多时间,控制点数据难以具有时效性,难以找到控制点的具体地理位置等。
ArcGIS Engine是一个创建定制GIS桌面应用程序的开发产品,可用于创建要素集、实现显示,存取大量栅格数据、矢量数据,创建带有符号体系及标注功能的地图等Arc Objects的基本服务。ArcEngine为Visual Studio.NET提供了丰富的类库和应用程序编程接口(API),为控制点成果可视化管理提供了解决方案,可使用户快速高效开发综合管理系统。为此,本文提出将传统控制点管理与ArcEngine结合实现控制点集中高效管理的方法,设计并实现了一套基于ArcGIS Engine的控制点查询管理系统。
1.1 系统总体设计
基于ArcGIS Engine技术开发控制点查询管理系统可充分利用ArcGIS系统的空间数据管理优势,如数据管理功能和空间查询功能等,实现控制点数据的查询检索,控制点空间数据和属性信息的一体化,控制点图形数据与属性数据互查等操作,从而更加集中高效的管理控制点成果。系统的总体结构见图1所示。
图1 控制点查询管理系统结构
本系统根据不同的点类别、不同的坐标体系对控制点数据进行分类,设计出不同的查询检索体系。系统实现控制点近景点照片的查看、点之记查看和打印功能,并根据项目的需要对点照片和点之记进行统一处理。对于已处理好并检查合格的控制点数据可一键导入底层数据库,同时根据控制点时效性进行删除、编辑和添加控制点最新信息等操作。点位分布图模块既可查看控制点的分布概况又能同已有资料结合查看控制点周边情况,已有地图资料经矢量化、匹配坐标系后通过MapControl控件调用MapControl.AddLayer方法将地图加载到当前工作图层作为系统参考底图。
1.2 数据库设计
系统数据主要包括图形数据和属性数据。将传统的纸质点之记、点照片和点坐标等空间信息数字化并存储到数据库集中管理,需要对查询管理系统的底层数据库进行设计,同时也需要对数据格式作一定的约束。本系统涉及的坐标系较多,不适宜对每个坐标分量进行设计,只需对坐标系进行格式约束即可。ArcSDE是数据库系统中管理地理数据库的接口,该接口可将关系数据加载到空间数据中,提供控制点空间位置及附近地物形状等信息。本系统数据类型有电子地图数据和元数据,前者以.shp文件格式存储空间数据的坐标信息,后者采用关系型数据将控制点的属性信息存储在Geodatabase数据库中,二者之间建立D关联,通过两个相同的字段作为关联字段。Geodatabase采用全关系数据库管理空间数据,充分利用面向对象技术有机的将控制点的属性和行为联系在一起,将数据库引擎的图形用户界面和软件开发工具相结合,它以一定的格式将数据存储在基于Jet Engine的数据库引擎里,通过定义COM组件使开发者在基本模型上根据面向的对象对数据模型进行扩展。
Geodatabase的数据集和工作区两部分包含该数据库对象最基础最主要的类:WorkspaceFactory类、Workspace类和FeatureDataset组件类。数据集部分主要用于描述和管理各种具体的数据,工作区则对数据源进行宏观管理。WorkspaceFactory类用于生成Workspace,通过连接文件或事先指定的连接属性PropertySet连接工作空间;Workspace类为数据库的存储空间,用于存放FeatureDatasets、Rasterdatasets和Tables等空间数据和非空间数据;FeatureDataset组件类用于存储具有相同空间参考的多个FeatureClass要素集。
数据库Table结构见表1所示。
表1 系统数据库结构表设计
2.1 批量数据入库
传统数据的录入方法单一过程繁琐,随着大数据时代的来临,庞大数据量的入库工作将会极大的降低工程项目的经济效益。本系统对事先已整理好的控制点数据可通过一键导入的方式进行入库,方法简单过程明了。入库前本系统对空间数据和关系数据进行预处理,判断已整理好的控制点数据格式是否符合本系统数据库的录入要求,并对不符合入库要求的控制点数据作相应处理。Geodatabase数据库提供了可伸缩的空间数据存储方案,在单机环境下Personaldatabase只针对中小型用户,其原理同Access数据库相同,当数据文件大小超过2GB时导致数据库崩溃,批量导入数据量较大的控制点时容易出现系统假死或卡顿现象。为了解决该问题,通过对系统多次优化尝试后,探索出了一些有效解决方案。
1)数据分离。由于数据文件存储受大小限制,因此单机环境下Personaldatabase不适宜将空间数据和关系数据同时入库。本系统将空间数据与关系数据分开入库,Geodatabase数据库储存控制点的空间数据并与关系数据构建D关联,此法极大提高了数据库的运行效率。
2)设置缓冲区。PC上启动本系统时会启动一个主线程,主要负责响应软件界面的一系列操作。批量导入数据时可设置缓冲区,将缓冲区里的数据上传至数据库,并及时更新缓冲区获取下一批控制点数据,从而降低主线程的运算负载,保证主线程对UI的更新,使系统能够更流畅的运行。
3)减少数据库Table更新。设计系统数据库Table时将控制点ID数据类型设置为AutoNumber,进行删除和批量导入操作时易导致数据库表ID号冲突。为了解决该问题,需要对底层数据库控制点的ID重新编号,并对数据库Table进行更新。当数据量较大时这种更新会引起数据库卡顿不响应等现象。经过多次系统优化尝试后,可先获取Table原有控制点数据记录,利用ID自动编号的原理从缓存中最后一条记录开始追加,这种入库方式可有效避免ID号引发的冲突和减少底层数据库Table的更新。
2.2 控制点分布图
外业采集的控制点数据录入后,可根据已有地图数据设计加密点位置并根据外业所采集的控制点验证加密点位置是否合理。将控制点信息录入数据库后,系统根据空间坐标数据可自动生成点位分布图,实现上述检验功能,便于点位的管理。自动生成点位分布需利用计算机的绘图功能。在常规方法中,一般采用基于CAD或ArcGISEngine二次开发实现该功能。ArcGIS支持的数据格式种类多,面向的对象比CAD广,对查询管理类软件的后续开发更加有益,因此本系统采用基于ArcGISEngine的二次开发实现点位分布图功能。
首先,创建Table表,用于构建一个Feature-Class要素类。通过WorkspaceFactory,Feature-Workspace打开要素空间,根据Field创建点名和平面坐标字段pFieldNmae,pFieldX和pFieldY,将字段加载到当前创建的表中。添加字段之后,根据录入数据的坐标,使用Row方法将数据加载到对应的字段中,即可成功创建一个数据表格。创建该表格之后,需为数据设置参考坐标系。SpatialReferenceFactory和SpatialReference是设置坐标系中常用的接口。本系统设计时选取CGCS2000坐标系作为参考坐标系统,即esriSRGeoCSType.esriSRGeoCS_CGCS2000。其次,将表中的数据作为数据源创建FeatureClass要素类,利用要素图层FeatureLayer中的FeatureClass属性,通过Create-XYEventSource方法将Table表格加载到要素图层。最后,将要素图层显示到当前图层即可。Arc-GIS中图层的显示控件一般用MapControl,通过使用MapControl.AddLayer方法将创建的要素图层或已有矢量地图加载到当前图层,即可显示点位分布图。
系统采用Visual Studio.NET汇编语言进行开发,实现了控制点的批量入库、批量导出、查询、编辑、点位分布可视化、点照片管理及可视化、点之记管理及可视化和一些常用的基本功能,并针对不同的项目设计新建项目模块和打开已有项目模块。
3.1 数据管理模块
用户根据数据入库的格式要求将控制点空间数据和属性数据添加到本系统中,见图2。主界面上调用DataGridView控件来实现底层数据库的可视化,将所有数据缓存在DataTable中,可对其进行操作,将更新后的DataTable数据上传至控制点管理数据库,并再次更新显示在DataGridView控件中,从而越过对底层数据库的直接操作,避免误操作造成数据丢失。空间数据的输入包括控制点的概略位置、不同坐标系下的地理坐标数据,属性数据主要包括控制点点名、点类别和控制点的近景图片、点之记等图形文档数据。添加控制点近景点照片和点之记时系统会自动将选中的照片复制到项目文件夹下,点照片和点之记文件将统一以点名命名,确保控制点空间信息和属性信息的一致性。添加点照片后,系统将在界面右下角提供控制点近景照片的预览图。根据系统所提供的管理权限,可对已入库的控制点数据进行删除、修改和编辑等操作。编辑时选中一点,该点的所有信息将会显示在下方的文本框中,直接对文本框中的内容进行更改编辑,最后确认即可。
3.2 数据查询模块
根据控制点字段的属性设计,用户可通过查询语句检索感兴趣的控制点位置信息和属性信息,并结合图形输出模块查看该点在shp文件中的地理位置及周边环境情况。本系统的查询条件包括了控制点的每个属性字段,用户可以通过点名、点类别、点所属乡镇、WGS84坐标系下的XYZ和BLH、CGCS2000坐标系下的XYZ和BLH、80坐标系下120度平面高程坐标、80坐标系下119度平面高程坐标、54坐标系下120度平面高程坐标和54坐标系下119度平面高程坐标等控制点的空间信息和属性信息作为查询条件进行检索。
图2 数据管理界面
3.3 数据输入输出模块
外业采集的控制点数据成果经初步整理后一般为批量的控制点数据,将控制点的空间数据和属性数据逐个的添加到系统数据库显得不切实际,不仅过程繁琐,而且也极大降低工程项目的时间效益和经济效益,因此批量录入控制点数据就显得十分重要;另一方面,进行野外观测时需要使用已有成果中的部分控制点信息,必须将部分已知点导出。本系统可根据项目的需求对控制点数据进行批量导入和批量导出至Excel表格。录入控制点属性数据时可根据需要添加相应的近景点照片和点之记。用户查看某点的点之记时,只需选中该点,点击菜单栏查看点之记或鼠标右键查看点之记,系统将根据文档的属性调用WORD或PDF程序打开选中的点之记文档。查看点照片时只需选中该点,系统将在界面的左下方显示该点的近景照片。本系统是基于ArcGIS Engine的二次开发,以CGCS2000为空间坐标体系,利用MapControl控件生成控制点的点位分布图,见图3。录入控制点的空间信息和属性信息之后可查看点位分布效果图,以此可判断测量点特别是加密点的位置是否合理。另外,考虑到控制点数据资料的审查与提交问题,本系统添加了打印模块,可将选择的控制点打印输出为纸质文档。
图3 点位分布
外业数据采集所获得的测绘成果来之不易,利用空间地理信息系统原理和控制点管理方法将控制点成果等数据资料汇集到同一平台并建立信息输入输出流和数据要素集,可提高测绘成果资料的规范化、科学化和信息化管理水平。本文提出基于ArcGIS Engine和Visual Studio.NET框架相结合实现控制点数字化管理的方法,这套系统解决工程项目中传统控制点手工管理的局限性。本系统拥有ArcGIS强大的空间查询能力和数据管理能力,为后续开发工作提供的极大的便利和基础。
参考文献:
[1] 谢雪梅.基于GIS的控制点测量成果管理系统的设计与实现[D].长沙:中南大学,2005.
[2] 杨明.基于ArcGIS Engine的林业生态工程管理信息系统设计与图层管理模块的实现[D].北京:中国林业科学研究院,2006.
[3] 王海葳.基于ARCGIS的军事测绘成果管理系统研究与应用[D].北京:清华大学,2008.
[4] 肖海.基于ArcGIS Engine的农业资源管理信息系统研究[D].重庆:西南大学,2006.
[5] 李土旺,曾洪周.基于ArcGIS的测绘成果管理系统的设计与实现[J].城市勘测,2009(1):34-37.
[6] 权刚.基于ArcGIS的测绘成果集成管理系统的设计与实现[D].成都:电子科技大学,2012.
[7] 吴建锋.测量控制点数据管理系统开发与研究[J].大众科技,2008(7):50-51.
[8] 王飞.基础测绘成果管理系统与空间数据库动态更新研究[D].赣州:江西理工大学,2008.
[9] 王元辉.基于ArcGIS Engine的宁安市基本农田管理信息系统研究[D].哈尔滨:东北农业大学,2012.
[10]王春晓,王斐.基于ArcEngine的公路巡检系统设计与实现[J].测绘科学,2014,39(5):40-42.
[11]肖泽云,陶光贵.基于ArcGIS Engine的地籍管理信息系统设计与实现[J].灾害与防治工程,2009(2):29-32.
[12]GRITZNER M L,MARCUS A W,ASPINALL R A,et al.Assessing landslide potential using GIS,soil wetness modeling and topographic attributes,Payette River,I-daho.Geomorphology.2001.
[责任编辑:李铭娜]
Design and implementation of control point query management system based on ArcEngine
CAI Jianmin1,2,HUA Xianghong1,2,WU Bang1,2,YUE Haibin3,HE Yujian3
(1.School of Geodesy and Geomatics,Wuhan University,Wuhan 430079,China;2.Hazard Monitoring &Prevention Research Center,Wuhan University,Wuhan 430079,China;3.Fujian Putian Bureau of Land and Resources,Putiant 351100,China)
Abstract:The design idea based on the control point query management system of ArcEngine is elaborated.The presentation of the overall structure,database and function of the system are also made in details.The whole system can satisfy the needs of the control point data for Putian City.Then the critical technology and solutions to the management system in the process of implementation are stated.Visual Studio.NET language is adopted to explore this system,resulting in special features such as the control point saving,bulk storage and bulk export,query,the visualization of distribution point and the pictures,etc.
Key words:control point;ArcGIS Engine;query management system;bulk storage;visualization
作者简介:蔡建民(1990-),男,硕士研究生.
基金项目:国家自然科学基金资助项目(41174010;41374011)
收稿日期:2014-11-24
中图分类号:P208
文献标识码:A
文章编号:1006-7949(2016)01-0051-04