趙成福
(1.青海省基礎(chǔ)地理信息中心,青海 西寧 810000)
空間地理信息數(shù)據(jù)庫(kù)具有無(wú)縫海量的特征,在數(shù)據(jù)庫(kù)更新尤其是矢量數(shù)據(jù)更新時(shí)存在一定的復(fù)雜性,如何充分利用ArcGIS平臺(tái)提供的功能進(jìn)行空間數(shù)據(jù)庫(kù)的更新是一個(gè)關(guān)鍵問(wèn)題。本文結(jié)合ArcGIS平臺(tái)提供的桌面編輯環(huán)境、地理處理任務(wù)框架和ArcObject應(yīng)用開(kāi)發(fā)接口介紹了空間數(shù)據(jù)庫(kù)矢量數(shù)據(jù)入庫(kù)更新的方法。
矢量數(shù)據(jù)庫(kù)的基本更新步驟是對(duì)原有圖層數(shù)據(jù)進(jìn)行區(qū)域擦除,接著導(dǎo)入數(shù)據(jù),最后拼接數(shù)據(jù),如圖1所示。矢量數(shù)據(jù)庫(kù)的更新方法多種多樣,下面分別介紹基于ArcGIS平臺(tái)的桌面編輯環(huán)境、地理處理任務(wù)框架和Arcobject應(yīng)用開(kāi)發(fā)接口的3種數(shù)據(jù)更新方法。
圖1 面狀矢量數(shù)據(jù)更新流程圖
ArcMap是ArcGIS Desktop三個(gè)用戶桌面軟件之一,是一個(gè)復(fù)雜的專(zhuān)業(yè)制圖和編輯系統(tǒng),可實(shí)現(xiàn)地圖制圖、地圖編輯、地圖分析等功能。
用ArcMap編輯環(huán)境進(jìn)行空間數(shù)據(jù)更新的主要步驟為:①加載空間數(shù)據(jù)庫(kù)更新圖層到ArcMap主窗口;②打開(kāi)編輯工具條,啟動(dòng)編輯,選擇要編輯的面狀圖層;③在編輯任務(wù)中選擇Cut Polygon Features(分割多邊線要素);④選中要分割的多邊形,用編輯工具沿更新區(qū)域邊界畫(huà)一條分割線,分割線必須穿過(guò)整個(gè)分割多邊形,完成多邊形分割;⑤如果要更新線狀對(duì)象,首先選中要編輯的線,然后用Split工具點(diǎn)擊線的分割點(diǎn),完成多義線分割;⑥接著用戶選擇更新區(qū)域內(nèi)的所有圖層要素,用刪除工具刪除;⑦將更新的數(shù)據(jù)復(fù)制粘貼到對(duì)應(yīng)的圖層;⑧沿更新區(qū)域邊界線,用Merge工具依次拼接空間關(guān)系相鄰、屬性相同的要素。
圖2是利用ArcMap桌面編輯環(huán)境進(jìn)行面狀矢量數(shù)據(jù)更新的界面,圖中顯示的是用面分割工具進(jìn)行面狀要素分割。
圖2 ArcMap編輯環(huán)境下的數(shù)據(jù)庫(kù)更新界面
在ArcGIS Desktop中,提供了一個(gè)地理處理任務(wù)框架,這些地理處理任務(wù)都包含在ArcToolbox工具箱中,框架中的工具主要以ArcToolbox基本工具、ModelBuilder模型、命令行以及腳本等4種方式運(yùn)行。本文主要介紹基于ModelBuilder模型工具的空間數(shù)據(jù)庫(kù)更新。
ModelBuilder為設(shè)計(jì)和實(shí)現(xiàn)空間數(shù)據(jù)處理模型提供了一個(gè)圖形化的建??蚣?,它將一系列的工具和數(shù)據(jù)串起來(lái)創(chuàng)建流程化的高級(jí)GIS功能??蓪⒐ぞ吆蛿?shù)據(jù)集拖動(dòng)到一個(gè)模型視圖中,然后按照有序的步驟把它們連接起來(lái)實(shí)現(xiàn)復(fù)雜的GIS任務(wù)。
用ModelBuilder工具進(jìn)行空間數(shù)據(jù)更新的主要步驟為:①用Erase工具擦除指定區(qū)域的圖層(LAYER),擦除后產(chǎn)生新的圖層LAYER_ER;②用Append工具導(dǎo)入更新數(shù)據(jù)到LAYER_ER圖層中;③用Dissolve工具拼接導(dǎo)入到圖層LAYER_ER中的數(shù)據(jù),拼接后產(chǎn)生新圖層LAYER_MG;④用Delete工具刪除臨時(shí)圖層LAYER_ER和原始圖層LAYER;⑤用ReName工具將拼接好的圖層LAYER_MG重命名為圖層LAYER。
圖3是把這些工具在ModelBuilder中連接起來(lái)建立的空間數(shù)據(jù)處理模型,通過(guò)運(yùn)行該模型工具,可實(shí)現(xiàn)空間數(shù)據(jù)的入庫(kù)更新。
圖3 ModelBuilder數(shù)據(jù)更新處理模型圖
ArcObject是ArcGIS平臺(tái)的二次開(kāi)發(fā)組件集, 提供了幾乎全部的底層GIS功能。ArcGIS平臺(tái)軟件大部分功能都是基于ArcObjects的組件開(kāi)發(fā)出來(lái)的。由于這個(gè)組件庫(kù)的API是開(kāi)放的,因此程序開(kāi)發(fā)人員也可使用ArcObjects靈活地開(kāi)發(fā)自己的GIS應(yīng)用程序。用ArcObject 應(yīng)用開(kāi)發(fā)接口進(jìn)行空間數(shù)據(jù)更新的主要步驟為:
①用ISpatialFilter接口結(jié)合IfeatureClass接口的Search函數(shù),通過(guò)空間分析,選擇更新區(qū)域的要素和相鄰要素,用IFeatureEdit接口的Split函數(shù)分割更新區(qū)域邊界上的線和面要素;②用IWorkspace接口的ExecuteSQL刪除更新區(qū)域內(nèi)的要素?cái)?shù)據(jù);③用IFeatureCursor接口的InsertFeature函數(shù)導(dǎo)入更新數(shù)據(jù);④用ItopologicalOperator接口的ConstructUnion函數(shù)合并更新區(qū)域邊界上空間關(guān)系相鄰、屬性相同的要素。
圖4是利用ArcObject應(yīng)用開(kāi)發(fā)接口開(kāi)發(fā)的空間數(shù)據(jù)庫(kù)管理系統(tǒng)中的矢量數(shù)據(jù)入庫(kù)工具,通過(guò)該工具可實(shí)現(xiàn)高效的矢量數(shù)據(jù)入庫(kù)更新。
圖4 基于ArcObject的矢量數(shù)據(jù)入庫(kù)工具
下面就以上3種更新方法進(jìn)行比較:
1)基于ArcMap編輯環(huán)境的數(shù)據(jù)更新,適合于單個(gè)或少量多個(gè)要素的局部更新。
2)基于地理處理任務(wù)框架的數(shù)據(jù)更新,自動(dòng)化程度高,適合于小數(shù)據(jù)量的批量更新,更新過(guò)程中會(huì)產(chǎn)生中間過(guò)程數(shù)據(jù)。由于是整個(gè)圖層要素參與分析處理,在大數(shù)據(jù)量(全省)的情況下更新花費(fèi)時(shí)間很長(zhǎng)。
3)基于ArcObject應(yīng)用開(kāi)發(fā)接口的數(shù)據(jù)更新,采用空間分析方法,只對(duì)更新區(qū)域及周邊要素進(jìn)行更新,效率高,也不會(huì)產(chǎn)生中間過(guò)程數(shù)據(jù)。
表1 幾種數(shù)據(jù)更新方法比較表
從表1可以看出,在相同數(shù)據(jù)量和更新區(qū)域的情況下,Arcobject應(yīng)用開(kāi)發(fā)接口的更新效率最高。
[1]吳靜,何必,李海濤. ArcGIS 9.3 Desktop地理信息系統(tǒng)應(yīng)用教程[M].北京:清華大學(xué)出版社,2011
[2]湯國(guó)安,楊昕. ArcGIS地理信息系統(tǒng)空間分析實(shí)驗(yàn)教程[M].北京:科學(xué)出版社,2010
[3]邢超,李斌. ArcGIS學(xué)習(xí)指南——ArcToolbox[M].北京:科學(xué)出版社,2010
[4]韓鵬,徐占華,褚海峰,等.地理信息系統(tǒng)開(kāi)發(fā)ArcObjects方法[M].武漢:武漢大學(xué),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