岳淑英,張求喜,吳英龍
(1.江西省第二測繪院,江西南昌 330046; 2.江西省第一測繪院,江西南昌 330001)
基于ArcGIS VBA在面狀空間要素變更中的應用
岳淑英1?,張求喜2,吳英龍1
(1.江西省第二測繪院,江西南昌 330046; 2.江西省第一測繪院,江西南昌 330001)
空間要素的變更早已成為了TGIS領域一個重要的研究方向,眾多的學者將注意力放在研究單個空間實體的變更過程上,固然,從微觀上研究單個實體變更類型及其對應的操作固然是好。其實,在關注整體而非注重個體變更的情況下,并考量到操作效率方面,其不一定是個行之有效之方法。本文在分析傳統的單個實體多種變更類型后,從區域空間要素整體性出發,將空間要素在時間軸上劃分為兩種狀態,并結合面狀要素實例,運用ArcGIS VBA二次開發將兩種不同狀態下空間要素集區分開來,實驗取得了較好效果。
事件;變更;VBA
基于當前進行中的二調項目,我院作為江西省數據檢查檢驗方總會對數據成果提交方提出一些修改意見,待對方再次提交數據成果時,我方必會檢驗對方是否按照修改意見修正了數據成果。此時需要快速比照出前后兩次提交數據,查詢出數據成果提交方變更了哪些要素之功能,當然這種變更包括矢量位置變更和屬性變更。在此種情況下,我們需要查詢的是哪些空間要素發生了變更,而不需要精確查找要素發生了何種具體變化的過程,其經歷了何種操作事件。鑒于當前基于矢量數據匹配的相似度指標研究仍然沒有一個比較理想的量化指標[1],且單個空間要素不同變更事件在處理上對應著不同的操作,且處理過程復雜[2]。本文將忽略單個空間實體變化過程,從整個區域要素變化出發,通過匹配兩次提交數據中未變更的空間要素,否則為變更的空間要素,從而使得變更與未變更的要素得到精確分離。
2.1 空間實體變化定義/空間實體變更
由于某一區域的空間要素的變更可以細分為單個空間實體變更的集合,一般認為變更有兩種定義:
定義1:如果對象O有且僅有一個屬性P,在不同的時間t和t′,對象O在t具有屬性P,在t′不具有屬性P,則認為對象O發生了變化[3]。
定義2:從面向對象的觀點看,變化是從一個狀態/對象到另一個狀態/對象的轉變,時空對象將變成另一個對象,或者說從某一狀態轉變到另一狀態[4]。
根據上面的兩個定義,我們可以將變化表示如下: Change(O)=F(O,P,S)。
其中O表示對象,P表示對象的屬性,S表示對象或者對象屬性的狀態。
2.2 單個實體變更類型
一般認為單個實體的空間變化類型可細分為:出現、消失、屬性變化、擴大、縮小、變形、移動、旋轉和重現等9種變更事件[5],不同的變更類型對應不同的操作算子,其算法復雜,不易操作。
2.3 空間實體的變更狀態
空間要素在時間數軸上無外乎矢量位置和屬性的變化或根本無變化,主要表現如下4種情況:
(1)矢量位置變更,屬性未變;
(2)屬性變更,矢量位置未變;
(3)矢量位置和屬性同時變更;
(4)靜止狀態,即矢量位置和屬性均無變化。
正如前文所提的空間要素9種變更事件都可以用上述前4種情況來描述,稍加分析,筆者認為實體要素在時間軸上可以用兩種狀態來描述,在此我們暫且用Change State和Same State(持續狀態)來描述。如空間要素只要矢量位置或屬性發生變更,結合上述的9種變更事件,都可以認為其經歷了Change State,即變化狀態,為反之即為Same State,即靜止持續狀態。
3.1 現有工具的不足
目前基于矢量圖形疊加的軟件也較多,如Arc-GIS9 Desktop桌面產品較為出名,如其下的Analysis Tools中的Overlay疊加分析工具下Erase、Identify、In-tersect、Spatial Join、Symmetrical difference、Union、Update等工具能疊加分析Coverage、Shapefile、GeoDatabase等數據要素,譬如Erase圖層擦除操作,可以根據擦除圖層的范圍大小,將擦除參照圖層所覆蓋的輸入圖層內的要素去除,最后得到剩余的輸入圖層結果。從數學的空間邏輯運算的角度來表示[6],即A-A∩B (即x∈A且x∈B,A為輸入圖層,B為擦除層),但擦除疊加、求交疊加后的圖形要素零碎不堪,生成的要素圖形不完整,也不規則。
3.2 本文處理方法
本文將從不同歷史時刻,從整個區域要素圖形的完整性出發,將空間要素的T1時刻與T2時刻進行比對,找出T1至T2時段間,哪些空間要素發生了變更,并不需要挖掘出具體的哪個要素是發生了那種變更事件,即忽略掉單個空間實體的變更事件。從同一區域內所有要素為出發點,將不同歷史時期的快照數據進行比對,通過相關約束條件得到持續狀態下的空間要素,將變更的空間要素與未變更的空間要素徹底分離。
目前基于矢量匹配的算法仍不成熟,主要是從距離相似度、形狀相似度、方向相似度以及后續的改進方法,每種相似度都有各自優缺點[1],本文將綜合幾個上述相似度,在不考慮該面狀要素以其重心為旋轉中心,在方向上發生變更的情況下,滿足如下4個條件,均可認為該面狀要素未發生變更,否則可以認為該要素發生變更,約束條件為:
(1)重心相似;
(2)圖形類型及構成圖形點數相似;
(3)面積相似;
(4)屬性值均未改變。
3.3 基于ArcGIS VBA的實現
本文將基于ArcGIS內嵌的VBA(Visual Basic Application)開發環境,以多邊形面狀要素變更為例,將自動尋找不同時期,同一地區,發生變更的和未變更的圖斑。本文的思路就是遍歷兩個不同時期的空間要素集,然后一一按照以上4個約束條件進行匹配,符合約束條件者,則是未變更的,將未變更的空間要素增加上新建的未變更圖層中,其他不滿足約束的空間要素均放在新建的變更圖層中,我們可以利用ArcObject的對象關系圖(Object Model Diagram)查詢出相應類及其接口函數進行編程實現。
通過圖層對象Map中Layer屬性支持的IFeature-Layer接口可以獲得相應圖層;可以通過構造一個查詢過濾QueryFilter對象來傳入IFeatureClass接口Search方法來返回要素游標,該游標的NextFeature屬性返回IFeature接口可以實現對Feature遍歷。為了將查詢到的Feature加入到新建圖層中,應新建圖層下Feature-Class的Insert函數設置為True,同時為了提高程序效率,避免刷新次數過多,我們可以利用IFeatureClass接口方法CreateFeatureBuffer新建緩沖要素,待緩沖要素個數達到某一閥值后,再通過IFeatureCursor.Flush統一增加到新建圖層中[7]。
3.4 程序實現效果圖
本實例以江西省某市縣提交的圖斑Shapefile文件為例,并結合上述方面進行程序設計,效果如圖1所示,圖1(a)為第一次提交數據;圖1(b)為第二次提交數據,即為第一次經過變更操作后的數據;圖1(c)為經過程序提取的未變更的要素集;圖1(d)為發生變更的要素集。本次實例中,第一次T1時刻圖斑為197個,第二次T2時刻圖斑為154個,程序提取得到未變更的圖斑為148個,變更的圖斑為49個,其示意圖如圖2所示,在ArcMap中兩次成果經過對比檢驗,提取成果合格。

圖1 不同時刻變更圖

圖2 變更前后示意
鑒于目前的技術很難實現自動追蹤到每個要素發生了哪種變更事件,本文將從變更的另一面出發并結合實例,在兼顧效率的同時,且不影響預期效果下,從整體性出發,忽略單個實體要素的微觀變化過程,將變更與未變更空間要素區分開來,經過試驗并取得了成功,對于解決相關實際問題具有普遍意義。
[1] 張橋平.地圖數據庫實體匹配與合并技術研究[博士學位論文].武漢:武漢大學,2002
[2] 周曉光.地籍數據包庫增量更新[M].北京:測繪出版社,2007,54~58
[3] Worboys M F.Modelling changes and events in dynamic spatial systems with reference to socio-economic units,Life and Motion of Socio-Economic Units,A.U.Frank,J.Raper and J. Cheylan,Taylor and Francis,2001:129~138
[4] TANG XINMING,KAINZ W.The Identification of Spatial Change Processes based on Set-oriented Spaces and topological Spaces[C].Proceedings of the 20thInternational Cartographic Conference.2001,Beijing:2718~2732
[5] 周曉光.基于事件的時空數據庫增量更新[J].中國圖像圖形學報,2006,11(10),1431~1438
[6] 黨安榮,賈海峰,易善楨等.ArcGIS 8 Desktop地理信息系統應用指南[M].北京:清華大學出版社,2005,553~557
[7] ESRI.ArcObjects Developer Help.2002
The Application of the Spatial Polygon Features Changed Method Based on ArcGIS′VBA
Yue ShuYing1,Zhang QiuXi2,Wu YingLong1
(1.The Second Surveying and Mapping Institute of Jiangxi Province,Nanchang 330046,China;2.The First Surveying and Mapping Institute of Jiangxi Province,Nanchang 330001,China)
The spatial feature-changed has become an important field of TGIS research,Many scholars pay much focus on the changed proceedings in single spatial entity.Certainly it's a good way to study of single changed spatial entity′s types and it's corresponding operations from the micro perspectives.In fact,It's not a effective way for taking interest in the whole changed not the single changed,With consideration for operational efficiency.This paper analyses various changed types of traditional single entity.take the overall spatial features of some region,the spatial features was divided into two states on time axis and take the polygon features for example,and distinguish the spatial features between two different changing states.Experiment have achieved a good result by implementation of the secondary development of ArcGIS uing VBA.
Event;Change;Visual Basic Application
1672-8262(2010)06-61-03
P208
B
2010—04—05
岳淑英(1984—),女,助理工程師,現主要從事測繪基礎技術工作。