羅國瑋,張新長,齊立新
(1.中山大學地理科學與規劃學院∥廣東省城市化與地理環境空間模擬重點實驗室,廣東 廣州510275;2.廣西師范學院,廣西 南寧530001)
數據更新是保持空間數據現勢性的主要方法,為節省數據采集和更新的時間,目前大多矢量數據更新采用增量更新方法,只更新發生變化了的數據。文獻[1]提出了基于拓撲聯動的更新方法,該方法比較適合地籍數據庫的增量更新。文獻[2]提出了一種自適應的矢量數據增量更新方法,通過范圍內要素的替換,并進行接邊操作,實現增量更新;文獻[3]提出基態修正的GIS 數據庫增量更新方法,設計了增量信息的存儲模型,但這些方法沒有對地理要素的變化信息進行記錄存儲。另外還有基于事件及面向時空過程的更新方法[4-6],對觸發地物發生變化的事件進行了記錄存儲,但這類方法面向業務主體構建,且對地理事件信息的完整性要求高。目前對矢量空間數據庫增量更新技術的研究包括增量信息的存儲模型、增量信息發現和歷史數據的組織問題,以及版本生成與時空信息檢索等[2],但很少有對變化信息的表達及存儲模型進行研究。
數據更新操作改變了空間數據庫的內容,增量更新只對變化了的空間信息進行操作[7],更新后的地理要素與更新前相比會發生變化,這些要素的變化過程對了解地物的生命周期及發展趨勢有重要的意義[8]。目前的矢量數據增量更新方法大多只是將被替換數據存入歷史庫,并沒有記錄由于更新導致的地理要素變化信息,多次更新導致要素發生變化后,很難識別新舊數據之間的要素關聯關系。本文提出了在矢量數據增量更新中加入變化過程庫對地理要素的變化過程進行存儲,設計了通用的地理要素的變化信息存儲模型,并對地理要素變化過程庫的應用做了示例說明。
本文研究的增量更新方法是針對同級比例尺的矢量空間數據。目前,常用的空間數據增量更新有基于范圍的更新方法和基于要素的更新方法[9]。基于范圍的更新方法是將舊數據按相應的范圍挖空后將新數據填入,然后進行要素接邊操作。基于要素的更新是對新舊數據的要素進行變化檢測,只更新變化了的要素。為便于在數據更新的同時能記錄地物的變化過程,本文采用基于要素的更新方法。更新流程如圖1所示。更新工作主要在臨時庫中進行,首先要對新舊數據做要素匹配及變化檢測,當檢測到變化信息后,再對舊數據進行添加、刪除及修改操作,進行相應的沖突檢測后,將要素的變化信息存入變化過程庫,被修改和刪除的舊要素存入歷史庫。

圖1 矢量數據更新流程Fig.1 The process vector data update
變化信息檢測的目的是為了發現增量信息,將新數據與舊數據進行要素匹配。對于不同類型要素的變化檢測采用不同的方法進行,點狀要素采用歐式距離及屬性信息[10]進行匹配,線狀要素的匹配與變化檢測[11]從幾何上采用緩沖區分析、交叉面、hausdorff距離[12]、概率統計[13-14]等方法結合屬性信息進行,面狀要素的匹配與變化檢測可以通過重心距離、重疊面積結合屬性信息進行。本文以面要素為例,采用空間關聯度結合屬性語義關聯度進行要素變化檢測。設Ai(i=0,1,2…m)為新要素,Bj(j=0,1,2…n)為舊要素。先以新要素Ai生成緩沖區,獲取與Ai緩沖區相交的候選要素Bj,空間關聯度P(Ai,Bj) 通過計算Ai、Bj要素緩沖區的交集與并集的面積比得到,計算方法如公式(1)所示。
(1)
E(Ai,Bj)=S(Ai,Bj)ω1+P(Ai,Bj)ω2
(2)
新舊要素的關聯度計算方法如公式(2)所示。E(Ai,Bj)為新舊要素的關聯度,S(Ai,Bj)為新舊要素的屬性信息語義關聯度,由新舊要素的屬性字段內容對比得到[15],P(Ai,Bj)為新舊要素空間關聯度,ω1,ω2分別為空間關聯度及語義關聯度的權重,且ω1+ω2=1,實驗發現當取ω1=ω2=0.5時,檢測的效果比較理想。如E(Ai,Bj)高于給定閾值,說明新舊要素之間存在關聯關系,新要素為舊要素變化而來;否則,說明新舊要素間不存在關聯,新要素是在舊要素消失后產生。
通過變化檢測得到地理要素的變化類型有新增(新舊要素0∶1)、刪除(新舊要素1∶0)、合并(新舊要素n∶1)、分裂(新舊要素1∶n)、聚合(新舊要素m∶n)、幾何形狀與位置變化(新舊要素1∶1)、屬性變化(新舊要素1∶1)幾種。
基于要素的矢量數據更新是在數據庫中將新要素替換舊要素,更新信息的表達式為:
Updateinfo={OID,Spatialinfo,Attributeinfo,MeasuredTime,Updatetime}
其中OID為要素的唯一標識,OID可以是按相關標準編碼,也可以是系統自動生成的Objectid或GUID。Spatialinfo是空間信息,Attributeinfo為屬性信息,MeasuredTime是測量時間,Updatetime是更新時間。由于測量時間與更新時間存在時間差,測量時間作為更接近于地物的實際變化時間。
更新操作對于新增和刪除要素,直接在數據庫中插入和刪除信息,對于空間信息與屬性信息發生改變的要素,先將舊要素刪除,再插入新要素。更新過程中需要將變化信息存入變化過程庫,同時將刪除的要素存入歷史庫。
數據更新引起矢量數據的變化信息需要存儲到變化過程庫,變化信息的表達式為:
ChangeInfo={ChangeID,Old(O1、O2…Om),ChangeType,New(O1、O2…On),ChangeTime}
ChangeID為變化信息編號, Old(O1、O2…Om)為變化前舊要素的集合,New(O1、O2…On)為變化后新要素的集合。ChangeType為變化類型,變化過程庫中記錄的要素變化類型如表1所示, ChangeTime為變化時間。

表1 要素變化類型Table 1 Changes of type
為方便數據表存儲,變化過程數據表設計為:

ChangeIDOldOIDChangeTypeNewOIDChangeTime
OldOID為舊要素的標識(與更新時存入歷史庫的要素標識一致),NewOID為新要素的標識。由于數據更新會引起空間信息和屬性信息的變化,因此,一組新舊要素可以同時產生多條變化信息記錄。
因要素發生合并、分裂、聚合等變化時,新要素ID會發生變化,變化信息表可以起到現狀數據與歷史數據、不同階段歷史數據之間的要素關聯作用。
為了解要素的變化過程,不僅需要了解要素發生了哪些變化,還需要了解要素變化了多少,如地物長度變化的大小,面積變化的大小,哪些屬性發生了變化等。地物長度及面積的變化可以通過與歷史庫中的要素長度及面積字段的對比方便的獲取,但對于屬性信息的變化,由于各圖層屬性字段個數不一致,通過與歷史庫要素信息進行比較需要遍歷所有字段,開銷較大,而且屬性信息變化表達不夠直觀。本文設計了屬性信息變化存儲方式:
Attributeinfo={ChangeID,Changefields(field1,field2,…,fieldn), Ovalues(value1,values2,…,valuen), Nvalues(value1,values2,…,valuen)}
其中,Changefields (field1,field2,…,fieldn)為變化屬性字段的集合,Ovalues(value1,values2,…,valuen)為要素變化前屬性字段值的集合,Nvalues(value1,values2,…,valuen)為變化后要素屬性字段值的集合。為方便數據表存儲,屬性信息變化數據表設計為:

IDChangeIDChangefieldOldvalueNewvalue
其中ChangeID與變化過程數據表中的ChangeID關聯,Changefield為發生變化的屬性字段名,Oldvalue為變化前屬性字段的值,Newvalue為變化后屬性字段的值。
更新過程中被刪除和修改的數據將存入歷史庫,為方便歷史數據的檢索,歷史數據庫的構建參考了時空數據模型,歷史信息表達式為:
HistoryInfo={OID,Spatialinfo,Attributeinfo,StartTime,EndTime,UpdateTime}
其中Spatialinfo為空間信息,Attributeinfo為屬性信息,StartTime,EndTime代表該歷史數據存在的開始時間和結束時間,UpdateTime為被更新時間。
變化過程庫、現勢庫、歷史庫的關系如圖2所示。

圖2 變化過程庫、現勢庫、歷史庫之間的關系Fig.2 The relationship between change process database, current database and history database
通過變化過程庫的查詢,可以了解地理要素在一段時期內的變化情況,包括地理要素發生了哪些變化,變化前后地理要素的對應關系。如要了解現狀庫中某地理要素的變化情況,可對通過要素編號OID對變化過程表進行查詢,能夠查詢到要素的變化類型,由哪一個要素變化而來,通過遞歸查詢,將上一個狀態的要素編號(OLDOID)作為新要素變化(NewOID)進行查詢,可以得到地理要素的全部變化信息。查詢算法偽代碼如下:
SelectFeatureInfo(string FeatureID)// FeatureID為地理要素的ID號
{
Featureclass tb= Searchchangeinfo(FeatureID)//查詢變化信息庫中NewOID= FeatureID的要素信息
IF (tb !=null)//判斷查詢結果是否為空
{
for (i=0; i { Saveinfo(tb.row);//將變化信息存入查詢結果隊列 SelectFeatureInfo(tb[OldID]);//遞歸調用,將下一狀態的OldID作為上一狀態的NewID傳入函數 } } Else Outputinfo();//完成查詢后輸出結果。 } 下面以一面要素A的變化過程為例說明。在2008年10月至2010年9月兩年時間內,面要素A發生了面積擴大、名稱改名、與其它要素合并3次變化。 序號變化類型變化時間變化語義描述1面積擴大20081009A面積擴大2屬性變化20090105A名稱改變3合并20100908A與B合并形成素C 弧段長度是線要素比較關心的信息,如道路、水系在一段時期內的長度變化。由于變化過程庫記錄了變化前后的要素對應關系,因此很容易對單個要素或多個要素的長度變化進行計算。 單個線要素長度變化為新要素與舊要素的長度差。 多個線要素的長度變化計算公式(3)所示,m為要素變化前的數目,n為要素變化后的數目。 (3) L能夠反映線狀地物在一段時間內的總體變化趨勢,當L>0,說明總體變化趨勢為延長,L<0,說明線總體變化趨勢為縮短。 面積變化是面要素比較更新的變化因素,如居民地、植被覆蓋面在一段時期內的面積變化大小。通過變化過程庫中的新舊地理要素對應關系,可以方便的對單個或多個面要素的面積變化進行計算。 單個面要素面積變化為新要素與舊要素的面積差。多個面要素的面積變化計算公式(4)所示,m為變化前要素的數目,n為變化后要素的數目。 (4) 如在T1到T2時間內(T1 當ΔS>0,說明面要素的總體變化趨勢為擴張,ΔS<0,說明面要素的總體發展變化為縮小。 本文采用Visual Studio 2010結合ArcGis Engine 10開發了一套矢量數據增量更新系統,以某市地形圖更新為例來說明系統的應用效果。當采用1∶2 000地形圖數據進行了應用試驗時,在居民地的更新過程中,系統對新圖層中495個要素與舊圖層的進行了正反向變化信息檢測,發現新增要素6個,消失要素4個,分裂要素2個,合并要素1個,擴大3個,縮小2個,屬性變化16個。要素的變化信息及新舊要素的對應關系都保存到了變化過程庫里的變化過程表,如表2所示。 表2 變化過程記錄表Table 2 Change process records 如圖3所示,在地形圖增量更新試驗中,以新要素替換了發生變化的舊要素,并對地物的變化信息進行了存儲。如圖4所示,通過對變化信息庫進行遞歸查詢,直觀準確的了解到編號為5230的要素在2011年5到2013年3月這段時期內經歷了新增、縮小、分裂3次變化。 圖3 數據更新實驗Fig.3 An experiment Vector data updating 試驗案例顯示,對比以往的矢量數據更新方法[2,7],本文提出的方法對更新要素的變化信息進行了識別與存儲,有利于歷史數據的回溯及地物生命周期的跟蹤,還能為地物的變化趨預測提供參考。 本文采用基于要素的矢量數據更新方式,通過對要素的變化信息進行檢測,只更新變化了的要素,實現了真正意義上的增量更新;為顧及地理要素的變化過程,在增量更新的設計中加入了變化過程庫,通過變化過程庫對更新前后地理要素的變化信息進行了記錄,能夠建立新舊要素及歷史要素之間的對應關系,減輕了歷史數據回溯計算量,方便空間數據的管理與維護。 本文設計的更新方法目前只能用于同級比例尺的矢量數據更新,在接下來的工作中將研究多尺度的顧及要素變化過程的增量更新方法。進一步研究包括:多尺度矢量數據的變化信息匹配;多尺度要素變化信息的數據存儲結構。 [1] 陳軍,周曉光. 基于拓撲聯動的增量更新方法研究[J].測繪學報,2008,37(3):322-329. [2] 張新長,郭泰圣,唐鐵. 一種自適應的矢量數據增量更新方法研究[J]. 測繪學報,2012,41(4):613-619. [3] 林艷,劉萬增,韓剛. 基態修正的GIS 數據庫增量更新建模[J]. 測繪科學,2012,37(4):199-201. [4] 張豐,劉南,劉仁義,等. 面向對象的地籍時空過程表達與數據更新模型研究[J]. 測繪學報,2010,39(3):303-309. [5] 薛存金,周成虎,蘇奮振. 等. 面向過程的時空數據模型研究[J].測繪學報,2010,39(1):95-101. [6] 周曉光,陳軍,朱建軍,等. 基于事件的時空數據庫增量更新[J]. 中國圖象圖形學報,2006,11(10):1431-1438. [7] 應申,李霖,劉萬增,等. 版本數據庫中基于目標匹配的變化信息提取與數據更新[J]. 武漢大學學報:信息科學版,2009,34(6):752-755. [8] 朱華吉. 基于多級模式的地形數據庫變化信息發布方法[J]. 遼寧工程技術大學學報,2006, 25(1):32-35. [9] 傅仲良,吳建華. 多比例尺空間數據庫更新技術研究[J]. 武漢大學學報:信息科學版,2007,32(12):1115-1118. [10] COBB M A, CHUNG M J, FOLEY III H, et al. A rule-based approach for the conflation of attributed vector data[J]. GeoInformatica, 1998, 2(1): 7-35. [11] KIELER B, HUANG W, HAUNERT J H, et al. Matching river datasets of different scales[M]//Advances in GIScience. Springer Berlin Heidelberg, 2009: 135-154. [12] DEN M, LI Z L, CHEN X Y. Extended Hausdorff distance for spatial objects in GIS[J]. International Journal of Geographical Information Science, 2007, 21(4): 459-475. [13] WALTER V, FRITSCH D. Matching spatial data sets: a statistical approach[J]. International Journal of Geographical Information Science, 1999, 13(5): 445-473. [14] 童小華, 鄧愫愫, 史文中. 基于概率的地圖實體匹配方法[J].測繪學報, 2007,36(2): 210-217. [15] 王育紅,牛亞輝,林艷. 顧及語義差異的基礎地理信息客戶數據庫更新實施模型[J]. 地理與地理信息科學,2011,27(1):1-6.
2.2 線要素長度變化信息
2.3 面要素面積變化信息
3 試驗案例


4 結 論