蔡建民,花向紅,吳 幫,岳海斌,何玉劍
(1.武漢大學測繪學院,湖北武漢430079;2.武漢大學災害監(jiān)測和防治研究中心,湖北武漢430079;3.福建省莆田市國土資源局,福建莆田351100)
?
基于ArcEngine控制點查詢管理系統(tǒng)的設計與實現(xiàn)
蔡建民1,2,花向紅1,2,吳 幫1,2,岳海斌3,何玉劍3
(1.武漢大學測繪學院,湖北武漢430079;2.武漢大學災害監(jiān)測和防治研究中心,湖北武漢430079;3.福建省莆田市國土資源局,福建莆田351100)
摘 要:基于ArcEngine控制點查詢管理系統(tǒng)的設計思路,對系統(tǒng)總體結構、系統(tǒng)數(shù)據(jù)庫、系統(tǒng)功能進行詳細設計。系統(tǒng)結合莆田市控制點成果管理需要,采用Visual Studio.NET語言實現(xiàn)控制點保存、批量入庫、批量導出、查詢、點位分布可視化、點之記可視化和打印等功能,并闡述系統(tǒng)在開發(fā)過程中遇到的技術問題和解決方案。
關鍵詞:控制點;ArcGIS Engine;查詢管理系統(tǒng);批量數(shù)據(jù)入庫;可視化
控制點在工程設計與施工中起到重要的作用,提供地理坐標信息基準,是測繪工作的核心內容。日常工作中的控制點管理方法極為簡單,主要利用點及記錄其坐標信息的紙質文檔或電子文檔作為存儲介質。隨著我國國民經(jīng)濟的不斷發(fā)展和基礎服務設施的不斷完善,當工程項目中控制點數(shù)目較多時,這種傳統(tǒng)的控制點管理方法顯現(xiàn)出一系列的問題,如控制點數(shù)量較多不易管理,查詢檢索控制點會消耗較多時間,控制點數(shù)據(jù)難以具有時效性,難以找到控制點的具體地理位置等。
ArcGIS Engine是一個創(chuàng)建定制GIS桌面應用程序的開發(fā)產(chǎn)品,可用于創(chuàng)建要素集、實現(xiàn)顯示,存取大量柵格數(shù)據(jù)、矢量數(shù)據(jù),創(chuàng)建帶有符號體系及標注功能的地圖等Arc Objects的基本服務。ArcEngine為Visual Studio.NET提供了豐富的類庫和應用程序編程接口(API),為控制點成果可視化管理提供了解決方案,可使用戶快速高效開發(fā)綜合管理系統(tǒng)。為此,本文提出將傳統(tǒng)控制點管理與ArcEngine結合實現(xiàn)控制點集中高效管理的方法,設計并實現(xiàn)了一套基于ArcGIS Engine的控制點查詢管理系統(tǒng)。
1.1 系統(tǒng)總體設計
基于ArcGIS Engine技術開發(fā)控制點查詢管理系統(tǒng)可充分利用ArcGIS系統(tǒng)的空間數(shù)據(jù)管理優(yōu)勢,如數(shù)據(jù)管理功能和空間查詢功能等,實現(xiàn)控制點數(shù)據(jù)的查詢檢索,控制點空間數(shù)據(jù)和屬性信息的一體化,控制點圖形數(shù)據(jù)與屬性數(shù)據(jù)互查等操作,從而更加集中高效的管理控制點成果。系統(tǒng)的總體結構見圖1所示。

圖1 控制點查詢管理系統(tǒng)結構
本系統(tǒng)根據(jù)不同的點類別、不同的坐標體系對控制點數(shù)據(jù)進行分類,設計出不同的查詢檢索體系。系統(tǒng)實現(xiàn)控制點近景點照片的查看、點之記查看和打印功能,并根據(jù)項目的需要對點照片和點之記進行統(tǒng)一處理。對于已處理好并檢查合格的控制點數(shù)據(jù)可一鍵導入底層數(shù)據(jù)庫,同時根據(jù)控制點時效性進行刪除、編輯和添加控制點最新信息等操作。點位分布圖模塊既可查看控制點的分布概況又能同已有資料結合查看控制點周邊情況,已有地圖資料經(jīng)矢量化、匹配坐標系后通過MapControl控件調用MapControl.AddLayer方法將地圖加載到當前工作圖層作為系統(tǒng)參考底圖。
1.2 數(shù)據(jù)庫設計
系統(tǒng)數(shù)據(jù)主要包括圖形數(shù)據(jù)和屬性數(shù)據(jù)。將傳統(tǒng)的紙質點之記、點照片和點坐標等空間信息數(shù)字化并存儲到數(shù)據(jù)庫集中管理,需要對查詢管理系統(tǒng)的底層數(shù)據(jù)庫進行設計,同時也需要對數(shù)據(jù)格式作一定的約束。本系統(tǒng)涉及的坐標系較多,不適宜對每個坐標分量進行設計,只需對坐標系進行格式約束即可。ArcSDE是數(shù)據(jù)庫系統(tǒng)中管理地理數(shù)據(jù)庫的接口,該接口可將關系數(shù)據(jù)加載到空間數(shù)據(jù)中,提供控制點空間位置及附近地物形狀等信息。本系統(tǒng)數(shù)據(jù)類型有電子地圖數(shù)據(jù)和元數(shù)據(jù),前者以.shp文件格式存儲空間數(shù)據(jù)的坐標信息,后者采用關系型數(shù)據(jù)將控制點的屬性信息存儲在Geodatabase數(shù)據(jù)庫中,二者之間建立D關聯(lián),通過兩個相同的字段作為關聯(lián)字段。Geodatabase采用全關系數(shù)據(jù)庫管理空間數(shù)據(jù),充分利用面向對象技術有機的將控制點的屬性和行為聯(lián)系在一起,將數(shù)據(jù)庫引擎的圖形用戶界面和軟件開發(fā)工具相結合,它以一定的格式將數(shù)據(jù)存儲在基于Jet Engine的數(shù)據(jù)庫引擎里,通過定義COM組件使開發(fā)者在基本模型上根據(jù)面向的對象對數(shù)據(jù)模型進行擴展。
Geodatabase的數(shù)據(jù)集和工作區(qū)兩部分包含該數(shù)據(jù)庫對象最基礎最主要的類:WorkspaceFactory類、Workspace類和FeatureDataset組件類。數(shù)據(jù)集部分主要用于描述和管理各種具體的數(shù)據(jù),工作區(qū)則對數(shù)據(jù)源進行宏觀管理。WorkspaceFactory類用于生成Workspace,通過連接文件或事先指定的連接屬性PropertySet連接工作空間;Workspace類為數(shù)據(jù)庫的存儲空間,用于存放FeatureDatasets、Rasterdatasets和Tables等空間數(shù)據(jù)和非空間數(shù)據(jù);FeatureDataset組件類用于存儲具有相同空間參考的多個FeatureClass要素集。
數(shù)據(jù)庫Table結構見表1所示。

表1 系統(tǒng)數(shù)據(jù)庫結構表設計
2.1 批量數(shù)據(jù)入庫
傳統(tǒng)數(shù)據(jù)的錄入方法單一過程繁瑣,隨著大數(shù)據(jù)時代的來臨,龐大數(shù)據(jù)量的入庫工作將會極大的降低工程項目的經(jīng)濟效益。本系統(tǒng)對事先已整理好的控制點數(shù)據(jù)可通過一鍵導入的方式進行入庫,方法簡單過程明了。入庫前本系統(tǒng)對空間數(shù)據(jù)和關系數(shù)據(jù)進行預處理,判斷已整理好的控制點數(shù)據(jù)格式是否符合本系統(tǒng)數(shù)據(jù)庫的錄入要求,并對不符合入庫要求的控制點數(shù)據(jù)作相應處理。Geodatabase數(shù)據(jù)庫提供了可伸縮的空間數(shù)據(jù)存儲方案,在單機環(huán)境下Personaldatabase只針對中小型用戶,其原理同Access數(shù)據(jù)庫相同,當數(shù)據(jù)文件大小超過2GB時導致數(shù)據(jù)庫崩潰,批量導入數(shù)據(jù)量較大的控制點時容易出現(xiàn)系統(tǒng)假死或卡頓現(xiàn)象。為了解決該問題,通過對系統(tǒng)多次優(yōu)化嘗試后,探索出了一些有效解決方案。
1)數(shù)據(jù)分離。由于數(shù)據(jù)文件存儲受大小限制,因此單機環(huán)境下Personaldatabase不適宜將空間數(shù)據(jù)和關系數(shù)據(jù)同時入庫。本系統(tǒng)將空間數(shù)據(jù)與關系數(shù)據(jù)分開入庫,Geodatabase數(shù)據(jù)庫儲存控制點的空間數(shù)據(jù)并與關系數(shù)據(jù)構建D關聯(lián),此法極大提高了數(shù)據(jù)庫的運行效率。
2)設置緩沖區(qū)。PC上啟動本系統(tǒng)時會啟動一個主線程,主要負責響應軟件界面的一系列操作。批量導入數(shù)據(jù)時可設置緩沖區(qū),將緩沖區(qū)里的數(shù)據(jù)上傳至數(shù)據(jù)庫,并及時更新緩沖區(qū)獲取下一批控制點數(shù)據(jù),從而降低主線程的運算負載,保證主線程對UI的更新,使系統(tǒng)能夠更流暢的運行。
3)減少數(shù)據(jù)庫Table更新。設計系統(tǒng)數(shù)據(jù)庫Table時將控制點ID數(shù)據(jù)類型設置為AutoNumber,進行刪除和批量導入操作時易導致數(shù)據(jù)庫表ID號沖突。為了解決該問題,需要對底層數(shù)據(jù)庫控制點的ID重新編號,并對數(shù)據(jù)庫Table進行更新。當數(shù)據(jù)量較大時這種更新會引起數(shù)據(jù)庫卡頓不響應等現(xiàn)象。經(jīng)過多次系統(tǒng)優(yōu)化嘗試后,可先獲取Table原有控制點數(shù)據(jù)記錄,利用ID自動編號的原理從緩存中最后一條記錄開始追加,這種入庫方式可有效避免ID號引發(fā)的沖突和減少底層數(shù)據(jù)庫Table的更新。
2.2 控制點分布圖
外業(yè)采集的控制點數(shù)據(jù)錄入后,可根據(jù)已有地圖數(shù)據(jù)設計加密點位置并根據(jù)外業(yè)所采集的控制點驗證加密點位置是否合理。將控制點信息錄入數(shù)據(jù)庫后,系統(tǒng)根據(jù)空間坐標數(shù)據(jù)可自動生成點位分布圖,實現(xiàn)上述檢驗功能,便于點位的管理。自動生成點位分布需利用計算機的繪圖功能。在常規(guī)方法中,一般采用基于CAD或ArcGISEngine二次開發(fā)實現(xiàn)該功能。ArcGIS支持的數(shù)據(jù)格式種類多,面向的對象比CAD廣,對查詢管理類軟件的后續(xù)開發(fā)更加有益,因此本系統(tǒng)采用基于ArcGISEngine的二次開發(fā)實現(xiàn)點位分布圖功能。
首先,創(chuàng)建Table表,用于構建一個Feature-Class要素類。通過WorkspaceFactory,F(xiàn)eature-Workspace打開要素空間,根據(jù)Field創(chuàng)建點名和平面坐標字段pFieldNmae,pFieldX和pFieldY,將字段加載到當前創(chuàng)建的表中。添加字段之后,根據(jù)錄入數(shù)據(jù)的坐標,使用Row方法將數(shù)據(jù)加載到對應的字段中,即可成功創(chuàng)建一個數(shù)據(jù)表格。創(chuàng)建該表格之后,需為數(shù)據(jù)設置參考坐標系。SpatialReferenceFactory和SpatialReference是設置坐標系中常用的接口。本系統(tǒng)設計時選取CGCS2000坐標系作為參考坐標系統(tǒng),即esriSRGeoCSType.esriSRGeoCS_CGCS2000。其次,將表中的數(shù)據(jù)作為數(shù)據(jù)源創(chuàng)建FeatureClass要素類,利用要素圖層FeatureLayer中的FeatureClass屬性,通過Create-XYEventSource方法將Table表格加載到要素圖層。最后,將要素圖層顯示到當前圖層即可。Arc-GIS中圖層的顯示控件一般用MapControl,通過使用MapControl.AddLayer方法將創(chuàng)建的要素圖層或已有矢量地圖加載到當前圖層,即可顯示點位分布圖。
系統(tǒng)采用Visual Studio.NET匯編語言進行開發(fā),實現(xiàn)了控制點的批量入庫、批量導出、查詢、編輯、點位分布可視化、點照片管理及可視化、點之記管理及可視化和一些常用的基本功能,并針對不同的項目設計新建項目模塊和打開已有項目模塊。
3.1 數(shù)據(jù)管理模塊
用戶根據(jù)數(shù)據(jù)入庫的格式要求將控制點空間數(shù)據(jù)和屬性數(shù)據(jù)添加到本系統(tǒng)中,見圖2。主界面上調用DataGridView控件來實現(xiàn)底層數(shù)據(jù)庫的可視化,將所有數(shù)據(jù)緩存在DataTable中,可對其進行操作,將更新后的DataTable數(shù)據(jù)上傳至控制點管理數(shù)據(jù)庫,并再次更新顯示在DataGridView控件中,從而越過對底層數(shù)據(jù)庫的直接操作,避免誤操作造成數(shù)據(jù)丟失??臻g數(shù)據(jù)的輸入包括控制點的概略位置、不同坐標系下的地理坐標數(shù)據(jù),屬性數(shù)據(jù)主要包括控制點點名、點類別和控制點的近景圖片、點之記等圖形文檔數(shù)據(jù)。添加控制點近景點照片和點之記時系統(tǒng)會自動將選中的照片復制到項目文件夾下,點照片和點之記文件將統(tǒng)一以點名命名,確??刂泣c空間信息和屬性信息的一致性。添加點照片后,系統(tǒng)將在界面右下角提供控制點近景照片的預覽圖。根據(jù)系統(tǒng)所提供的管理權限,可對已入庫的控制點數(shù)據(jù)進行刪除、修改和編輯等操作。編輯時選中一點,該點的所有信息將會顯示在下方的文本框中,直接對文本框中的內容進行更改編輯,最后確認即可。
3.2 數(shù)據(jù)查詢模塊
根據(jù)控制點字段的屬性設計,用戶可通過查詢語句檢索感興趣的控制點位置信息和屬性信息,并結合圖形輸出模塊查看該點在shp文件中的地理位置及周邊環(huán)境情況。本系統(tǒng)的查詢條件包括了控制點的每個屬性字段,用戶可以通過點名、點類別、點所屬鄉(xiāng)鎮(zhèn)、WGS84坐標系下的XYZ和BLH、CGCS2000坐標系下的XYZ和BLH、80坐標系下120度平面高程坐標、80坐標系下119度平面高程坐標、54坐標系下120度平面高程坐標和54坐標系下119度平面高程坐標等控制點的空間信息和屬性信息作為查詢條件進行檢索。

圖2 數(shù)據(jù)管理界面
3.3 數(shù)據(jù)輸入輸出模塊
外業(yè)采集的控制點數(shù)據(jù)成果經(jīng)初步整理后一般為批量的控制點數(shù)據(jù),將控制點的空間數(shù)據(jù)和屬性數(shù)據(jù)逐個的添加到系統(tǒng)數(shù)據(jù)庫顯得不切實際,不僅過程繁瑣,而且也極大降低工程項目的時間效益和經(jīng)濟效益,因此批量錄入控制點數(shù)據(jù)就顯得十分重要;另一方面,進行野外觀測時需要使用已有成果中的部分控制點信息,必須將部分已知點導出。本系統(tǒng)可根據(jù)項目的需求對控制點數(shù)據(jù)進行批量導入和批量導出至Excel表格。錄入控制點屬性數(shù)據(jù)時可根據(jù)需要添加相應的近景點照片和點之記。用戶查看某點的點之記時,只需選中該點,點擊菜單欄查看點之記或鼠標右鍵查看點之記,系統(tǒng)將根據(jù)文檔的屬性調用WORD或PDF程序打開選中的點之記文檔。查看點照片時只需選中該點,系統(tǒng)將在界面的左下方顯示該點的近景照片。本系統(tǒng)是基于ArcGIS Engine的二次開發(fā),以CGCS2000為空間坐標體系,利用MapControl控件生成控制點的點位分布圖,見圖3。錄入控制點的空間信息和屬性信息之后可查看點位分布效果圖,以此可判斷測量點特別是加密點的位置是否合理。另外,考慮到控制點數(shù)據(jù)資料的審查與提交問題,本系統(tǒng)添加了打印模塊,可將選擇的控制點打印輸出為紙質文檔。

圖3 點位分布
外業(yè)數(shù)據(jù)采集所獲得的測繪成果來之不易,利用空間地理信息系統(tǒng)原理和控制點管理方法將控制點成果等數(shù)據(jù)資料匯集到同一平臺并建立信息輸入輸出流和數(shù)據(jù)要素集,可提高測繪成果資料的規(guī)范化、科學化和信息化管理水平。本文提出基于ArcGIS Engine和Visual Studio.NET框架相結合實現(xiàn)控制點數(shù)字化管理的方法,這套系統(tǒng)解決工程項目中傳統(tǒng)控制點手工管理的局限性。本系統(tǒng)擁有ArcGIS強大的空間查詢能力和數(shù)據(jù)管理能力,為后續(xù)開發(fā)工作提供的極大的便利和基礎。
參考文獻:
[1] 謝雪梅.基于GIS的控制點測量成果管理系統(tǒng)的設計與實現(xiàn)[D].長沙:中南大學,2005.
[2] 楊明.基于ArcGIS Engine的林業(yè)生態(tài)工程管理信息系統(tǒng)設計與圖層管理模塊的實現(xiàn)[D].北京:中國林業(yè)科學研究院,2006.
[3] 王海葳.基于ARCGIS的軍事測繪成果管理系統(tǒng)研究與應用[D].北京:清華大學,2008.
[4] 肖海.基于ArcGIS Engine的農(nóng)業(yè)資源管理信息系統(tǒng)研究[D].重慶:西南大學,2006.
[5] 李土旺,曾洪周.基于ArcGIS的測繪成果管理系統(tǒng)的設計與實現(xiàn)[J].城市勘測,2009(1):34-37.
[6] 權剛.基于ArcGIS的測繪成果集成管理系統(tǒng)的設計與實現(xiàn)[D].成都:電子科技大學,2012.
[7] 吳建鋒.測量控制點數(shù)據(jù)管理系統(tǒng)開發(fā)與研究[J].大眾科技,2008(7):50-51.
[8] 王飛.基礎測繪成果管理系統(tǒng)與空間數(shù)據(jù)庫動態(tài)更新研究[D].贛州:江西理工大學,2008.
[9] 王元輝.基于ArcGIS Engine的寧安市基本農(nóng)田管理信息系統(tǒng)研究[D].哈爾濱:東北農(nóng)業(yè)大學,2012.
[10]王春曉,王斐.基于ArcEngine的公路巡檢系統(tǒng)設計與實現(xiàn)[J].測繪科學,2014,39(5):40-42.
[11]肖澤云,陶光貴.基于ArcGIS Engine的地籍管理信息系統(tǒng)設計與實現(xiàn)[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