趙成福
(1.青海省基礎地理信息中心,青海 西寧 810000)
空間地理信息數(shù)據(jù)庫具有無縫海量的特征,在數(shù)據(jù)庫更新尤其是矢量數(shù)據(jù)更新時存在一定的復雜性,如何充分利用ArcGIS平臺提供的功能進行空間數(shù)據(jù)庫的更新是一個關鍵問題。本文結合ArcGIS平臺提供的桌面編輯環(huán)境、地理處理任務框架和ArcObject應用開發(fā)接口介紹了空間數(shù)據(jù)庫矢量數(shù)據(jù)入庫更新的方法。
矢量數(shù)據(jù)庫的基本更新步驟是對原有圖層數(shù)據(jù)進行區(qū)域擦除,接著導入數(shù)據(jù),最后拼接數(shù)據(jù),如圖1所示。矢量數(shù)據(jù)庫的更新方法多種多樣,下面分別介紹基于ArcGIS平臺的桌面編輯環(huán)境、地理處理任務框架和Arcobject應用開發(fā)接口的3種數(shù)據(jù)更新方法。

圖1 面狀矢量數(shù)據(jù)更新流程圖
ArcMap是ArcGIS Desktop三個用戶桌面軟件之一,是一個復雜的專業(yè)制圖和編輯系統(tǒng),可實現(xiàn)地圖制圖、地圖編輯、地圖分析等功能。
用ArcMap編輯環(huán)境進行空間數(shù)據(jù)更新的主要步驟為:①加載空間數(shù)據(jù)庫更新圖層到ArcMap主窗口;②打開編輯工具條,啟動編輯,選擇要編輯的面狀圖層;③在編輯任務中選擇Cut Polygon Features(分割多邊線要素);④選中要分割的多邊形,用編輯工具沿更新區(qū)域邊界畫一條分割線,分割線必須穿過整個分割多邊形,完成多邊形分割;⑤如果要更新線狀對象,首先選中要編輯的線,然后用Split工具點擊線的分割點,完成多義線分割;⑥接著用戶選擇更新區(qū)域內的所有圖層要素,用刪除工具刪除;⑦將更新的數(shù)據(jù)復制粘貼到對應的圖層;⑧沿更新區(qū)域邊界線,用Merge工具依次拼接空間關系相鄰、屬性相同的要素。
圖2是利用ArcMap桌面編輯環(huán)境進行面狀矢量數(shù)據(jù)更新的界面,圖中顯示的是用面分割工具進行面狀要素分割。

圖2 ArcMap編輯環(huán)境下的數(shù)據(jù)庫更新界面
在ArcGIS Desktop中,提供了一個地理處理任務框架,這些地理處理任務都包含在ArcToolbox工具箱中,框架中的工具主要以ArcToolbox基本工具、ModelBuilder模型、命令行以及腳本等4種方式運行。本文主要介紹基于ModelBuilder模型工具的空間數(shù)據(jù)庫更新。
ModelBuilder為設計和實現(xiàn)空間數(shù)據(jù)處理模型提供了一個圖形化的建模框架,它將一系列的工具和數(shù)據(jù)串起來創(chuàng)建流程化的高級GIS功能。可將工具和數(shù)據(jù)集拖動到一個模型視圖中,然后按照有序的步驟把它們連接起來實現(xiàn)復雜的GIS任務。
用ModelBuilder工具進行空間數(shù)據(jù)更新的主要步驟為:①用Erase工具擦除指定區(qū)域的圖層(LAYER),擦除后產生新的圖層LAYER_ER;②用Append工具導入更新數(shù)據(jù)到LAYER_ER圖層中;③用Dissolve工具拼接導入到圖層LAYER_ER中的數(shù)據(jù),拼接后產生新圖層LAYER_MG;④用Delete工具刪除臨時圖層LAYER_ER和原始圖層LAYER;⑤用ReName工具將拼接好的圖層LAYER_MG重命名為圖層LAYER。
圖3是把這些工具在ModelBuilder中連接起來建立的空間數(shù)據(jù)處理模型,通過運行該模型工具,可實現(xiàn)空間數(shù)據(jù)的入庫更新。

圖3 ModelBuilder數(shù)據(jù)更新處理模型圖
ArcObject是ArcGIS平臺的二次開發(fā)組件集, 提供了幾乎全部的底層GIS功能。ArcGIS平臺軟件大部分功能都是基于ArcObjects的組件開發(fā)出來的。由于這個組件庫的API是開放的,因此程序開發(fā)人員也可使用ArcObjects靈活地開發(fā)自己的GIS應用程序。用ArcObject 應用開發(fā)接口進行空間數(shù)據(jù)更新的主要步驟為:
①用ISpatialFilter接口結合IfeatureClass接口的Search函數(shù),通過空間分析,選擇更新區(qū)域的要素和相鄰要素,用IFeatureEdit接口的Split函數(shù)分割更新區(qū)域邊界上的線和面要素;②用IWorkspace接口的ExecuteSQL刪除更新區(qū)域內的要素數(shù)據(jù);③用IFeatureCursor接口的InsertFeature函數(shù)導入更新數(shù)據(jù);④用ItopologicalOperator接口的ConstructUnion函數(shù)合并更新區(qū)域邊界上空間關系相鄰、屬性相同的要素。
圖4是利用ArcObject應用開發(fā)接口開發(fā)的空間數(shù)據(jù)庫管理系統(tǒng)中的矢量數(shù)據(jù)入庫工具,通過該工具可實現(xiàn)高效的矢量數(shù)據(jù)入庫更新。

圖4 基于ArcObject的矢量數(shù)據(jù)入庫工具
下面就以上3種更新方法進行比較:
1)基于ArcMap編輯環(huán)境的數(shù)據(jù)更新,適合于單個或少量多個要素的局部更新。
2)基于地理處理任務框架的數(shù)據(jù)更新,自動化程度高,適合于小數(shù)據(jù)量的批量更新,更新過程中會產生中間過程數(shù)據(jù)。由于是整個圖層要素參與分析處理,在大數(shù)據(jù)量(全省)的情況下更新花費時間很長。
3)基于ArcObject應用開發(fā)接口的數(shù)據(jù)更新,采用空間分析方法,只對更新區(qū)域及周邊要素進行更新,效率高,也不會產生中間過程數(shù)據(jù)。

表1 幾種數(shù)據(jù)更新方法比較表
從表1可以看出,在相同數(shù)據(jù)量和更新區(qū)域的情況下,Arcobject應用開發(fā)接口的更新效率最高。
[1]吳靜,何必,李海濤. ArcGIS 9.3 Desktop地理信息系統(tǒng)應用教程[M].北京:清華大學出版社,2011
[2]湯國安,楊昕. ArcGIS地理信息系統(tǒng)空間分析實驗教程[M].北京:科學出版社,2010
[3]邢超,李斌. ArcGIS學習指南——ArcToolbox[M].北京:科學出版社,2010
[4]韓鵬,徐占華,褚海峰,等.地理信息系統(tǒng)開發(fā)ArcObjects方法[M].武漢:武漢大學,2005
[5]ESRI.Developer Help For ArcGIS v9.3[CP/DK].USA:ESRI,2009
[6]ESRI.ArcGIS Engine Developer Guide[M/CD].USA:ESRI,2009
[7]ESRI.Exploring ArcObjects[M/CD].USA:ESRI,2009