岳淑英,張求喜,吳英龍
(1.江西省第二測(cè)繪院,江西南昌 330046; 2.江西省第一測(cè)繪院,江西南昌 330001)
基于ArcGIS VBA在面狀空間要素變更中的應(yīng)用
岳淑英1?,張求喜2,吳英龍1
(1.江西省第二測(cè)繪院,江西南昌 330046; 2.江西省第一測(cè)繪院,江西南昌 330001)
空間要素的變更早已成為了TGIS領(lǐng)域一個(gè)重要的研究方向,眾多的學(xué)者將注意力放在研究單個(gè)空間實(shí)體的變更過(guò)程上,固然,從微觀上研究單個(gè)實(shí)體變更類型及其對(duì)應(yīng)的操作固然是好。其實(shí),在關(guān)注整體而非注重個(gè)體變更的情況下,并考量到操作效率方面,其不一定是個(gè)行之有效之方法。本文在分析傳統(tǒng)的單個(gè)實(shí)體多種變更類型后,從區(qū)域空間要素整體性出發(fā),將空間要素在時(shí)間軸上劃分為兩種狀態(tài),并結(jié)合面狀要素實(shí)例,運(yùn)用ArcGIS VBA二次開發(fā)將兩種不同狀態(tài)下空間要素集區(qū)分開來(lái),實(shí)驗(yàn)取得了較好效果。
事件;變更;VBA
基于當(dāng)前進(jìn)行中的二調(diào)項(xiàng)目,我院作為江西省數(shù)據(jù)檢查檢驗(yàn)方總會(huì)對(duì)數(shù)據(jù)成果提交方提出一些修改意見,待對(duì)方再次提交數(shù)據(jù)成果時(shí),我方必會(huì)檢驗(yàn)對(duì)方是否按照修改意見修正了數(shù)據(jù)成果。此時(shí)需要快速比照出前后兩次提交數(shù)據(jù),查詢出數(shù)據(jù)成果提交方變更了哪些要素之功能,當(dāng)然這種變更包括矢量位置變更和屬性變更。在此種情況下,我們需要查詢的是哪些空間要素發(fā)生了變更,而不需要精確查找要素發(fā)生了何種具體變化的過(guò)程,其經(jīng)歷了何種操作事件。鑒于當(dāng)前基于矢量數(shù)據(jù)匹配的相似度指標(biāo)研究仍然沒(méi)有一個(gè)比較理想的量化指標(biāo)[1],且單個(gè)空間要素不同變更事件在處理上對(duì)應(yīng)著不同的操作,且處理過(guò)程復(fù)雜[2]。本文將忽略單個(gè)空間實(shí)體變化過(guò)程,從整個(gè)區(qū)域要素變化出發(fā),通過(guò)匹配兩次提交數(shù)據(jù)中未變更的空間要素,否則為變更的空間要素,從而使得變更與未變更的要素得到精確分離。
2.1 空間實(shí)體變化定義/空間實(shí)體變更
由于某一區(qū)域的空間要素的變更可以細(xì)分為單個(gè)空間實(shí)體變更的集合,一般認(rèn)為變更有兩種定義:
定義1:如果對(duì)象O有且僅有一個(gè)屬性P,在不同的時(shí)間t和t′,對(duì)象O在t具有屬性P,在t′不具有屬性P,則認(rèn)為對(duì)象O發(fā)生了變化[3]。
定義2:從面向?qū)ο蟮挠^點(diǎn)看,變化是從一個(gè)狀態(tài)/對(duì)象到另一個(gè)狀態(tài)/對(duì)象的轉(zhuǎn)變,時(shí)空對(duì)象將變成另一個(gè)對(duì)象,或者說(shuō)從某一狀態(tài)轉(zhuǎn)變到另一狀態(tài)[4]。
根據(jù)上面的兩個(gè)定義,我們可以將變化表示如下: Change(O)=F(O,P,S)。
其中O表示對(duì)象,P表示對(duì)象的屬性,S表示對(duì)象或者對(duì)象屬性的狀態(tài)。
2.2 單個(gè)實(shí)體變更類型
一般認(rèn)為單個(gè)實(shí)體的空間變化類型可細(xì)分為:出現(xiàn)、消失、屬性變化、擴(kuò)大、縮小、變形、移動(dòng)、旋轉(zhuǎn)和重現(xiàn)等9種變更事件[5],不同的變更類型對(duì)應(yīng)不同的操作算子,其算法復(fù)雜,不易操作。
2.3 空間實(shí)體的變更狀態(tài)
空間要素在時(shí)間數(shù)軸上無(wú)外乎矢量位置和屬性的變化或根本無(wú)變化,主要表現(xiàn)如下4種情況:
(1)矢量位置變更,屬性未變;
(2)屬性變更,矢量位置未變;
(3)矢量位置和屬性同時(shí)變更;
(4)靜止?fàn)顟B(tài),即矢量位置和屬性均無(wú)變化。
正如前文所提的空間要素9種變更事件都可以用上述前4種情況來(lái)描述,稍加分析,筆者認(rèn)為實(shí)體要素在時(shí)間軸上可以用兩種狀態(tài)來(lái)描述,在此我們暫且用Change State和Same State(持續(xù)狀態(tài))來(lái)描述。如空間要素只要矢量位置或?qū)傩园l(fā)生變更,結(jié)合上述的9種變更事件,都可以認(rèn)為其經(jīng)歷了Change State,即變化狀態(tài),為反之即為Same State,即靜止持續(xù)狀態(tài)。
3.1 現(xiàn)有工具的不足
目前基于矢量圖形疊加的軟件也較多,如Arc-GIS9 Desktop桌面產(chǎn)品較為出名,如其下的Analysis Tools中的Overlay疊加分析工具下Erase、Identify、In-tersect、Spatial Join、Symmetrical difference、Union、Update等工具能疊加分析Coverage、Shapefile、GeoDatabase等數(shù)據(jù)要素,譬如Erase圖層擦除操作,可以根據(jù)擦除圖層的范圍大小,將擦除參照?qǐng)D層所覆蓋的輸入圖層內(nèi)的要素去除,最后得到剩余的輸入圖層結(jié)果。從數(shù)學(xué)的空間邏輯運(yùn)算的角度來(lái)表示[6],即A-A∩B (即x∈A且x∈B,A為輸入圖層,B為擦除層),但擦除疊加、求交疊加后的圖形要素零碎不堪,生成的要素圖形不完整,也不規(guī)則。
3.2 本文處理方法
本文將從不同歷史時(shí)刻,從整個(gè)區(qū)域要素圖形的完整性出發(fā),將空間要素的T1時(shí)刻與T2時(shí)刻進(jìn)行比對(duì),找出T1至T2時(shí)段間,哪些空間要素發(fā)生了變更,并不需要挖掘出具體的哪個(gè)要素是發(fā)生了那種變更事件,即忽略掉單個(gè)空間實(shí)體的變更事件。從同一區(qū)域內(nèi)所有要素為出發(fā)點(diǎn),將不同歷史時(shí)期的快照數(shù)據(jù)進(jìn)行比對(duì),通過(guò)相關(guān)約束條件得到持續(xù)狀態(tài)下的空間要素,將變更的空間要素與未變更的空間要素徹底分離。
目前基于矢量匹配的算法仍不成熟,主要是從距離相似度、形狀相似度、方向相似度以及后續(xù)的改進(jìn)方法,每種相似度都有各自優(yōu)缺點(diǎn)[1],本文將綜合幾個(gè)上述相似度,在不考慮該面狀要素以其重心為旋轉(zhuǎn)中心,在方向上發(fā)生變更的情況下,滿足如下4個(gè)條件,均可認(rèn)為該面狀要素未發(fā)生變更,否則可以認(rèn)為該要素發(fā)生變更,約束條件為:
(1)重心相似;
(2)圖形類型及構(gòu)成圖形點(diǎn)數(shù)相似;
(3)面積相似;
(4)屬性值均未改變。
3.3 基于ArcGIS VBA的實(shí)現(xiàn)
本文將基于ArcGIS內(nèi)嵌的VBA(Visual Basic Application)開發(fā)環(huán)境,以多邊形面狀要素變更為例,將自動(dòng)尋找不同時(shí)期,同一地區(qū),發(fā)生變更的和未變更的圖斑。本文的思路就是遍歷兩個(gè)不同時(shí)期的空間要素集,然后一一按照以上4個(gè)約束條件進(jìn)行匹配,符合約束條件者,則是未變更的,將未變更的空間要素增加上新建的未變更圖層中,其他不滿足約束的空間要素均放在新建的變更圖層中,我們可以利用ArcObject的對(duì)象關(guān)系圖(Object Model Diagram)查詢出相應(yīng)類及其接口函數(shù)進(jìn)行編程實(shí)現(xiàn)。
通過(guò)圖層對(duì)象Map中Layer屬性支持的IFeature-Layer接口可以獲得相應(yīng)圖層;可以通過(guò)構(gòu)造一個(gè)查詢過(guò)濾QueryFilter對(duì)象來(lái)傳入IFeatureClass接口Search方法來(lái)返回要素游標(biāo),該游標(biāo)的NextFeature屬性返回IFeature接口可以實(shí)現(xiàn)對(duì)Feature遍歷。為了將查詢到的Feature加入到新建圖層中,應(yīng)新建圖層下Feature-Class的Insert函數(shù)設(shè)置為True,同時(shí)為了提高程序效率,避免刷新次數(shù)過(guò)多,我們可以利用IFeatureClass接口方法CreateFeatureBuffer新建緩沖要素,待緩沖要素個(gè)數(shù)達(dá)到某一閥值后,再通過(guò)IFeatureCursor.Flush統(tǒng)一增加到新建圖層中[7]。
3.4 程序?qū)崿F(xiàn)效果圖
本實(shí)例以江西省某市縣提交的圖斑Shapefile文件為例,并結(jié)合上述方面進(jìn)行程序設(shè)計(jì),效果如圖1所示,圖1(a)為第一次提交數(shù)據(jù);圖1(b)為第二次提交數(shù)據(jù),即為第一次經(jīng)過(guò)變更操作后的數(shù)據(jù);圖1(c)為經(jīng)過(guò)程序提取的未變更的要素集;圖1(d)為發(fā)生變更的要素集。本次實(shí)例中,第一次T1時(shí)刻圖斑為197個(gè),第二次T2時(shí)刻圖斑為154個(gè),程序提取得到未變更的圖斑為148個(gè),變更的圖斑為49個(gè),其示意圖如圖2所示,在ArcMap中兩次成果經(jīng)過(guò)對(duì)比檢驗(yàn),提取成果合格。
圖1 不同時(shí)刻變更圖
圖2 變更前后示意
鑒于目前的技術(shù)很難實(shí)現(xiàn)自動(dòng)追蹤到每個(gè)要素發(fā)生了哪種變更事件,本文將從變更的另一面出發(fā)并結(jié)合實(shí)例,在兼顧效率的同時(shí),且不影響預(yù)期效果下,從整體性出發(fā),忽略單個(gè)實(shí)體要素的微觀變化過(guò)程,將變更與未變更空間要素區(qū)分開來(lái),經(jīng)過(guò)試驗(yàn)并取得了成功,對(duì)于解決相關(guān)實(shí)際問(wèn)題具有普遍意義。
[1] 張橋平.地圖數(shù)據(jù)庫(kù)實(shí)體匹配與合并技術(shù)研究[博士學(xué)位論文].武漢:武漢大學(xué),2002
[2] 周曉光.地籍?dāng)?shù)據(jù)包庫(kù)增量更新[M].北京:測(cè)繪出版社,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] 周曉光.基于事件的時(shí)空數(shù)據(jù)庫(kù)增量更新[J].中國(guó)圖像圖形學(xué)報(bào),2006,11(10),1431~1438
[6] 黨安榮,賈海峰,易善楨等.ArcGIS 8 Desktop地理信息系統(tǒng)應(yīng)用指南[M].北京:清華大學(xué)出版社,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—),女,助理工程師,現(xiàn)主要從事測(cè)繪基礎(chǔ)技術(shù)工作。