張 標,陳 楠
(1.自然資源部陜西基礎地理信息中心,陜西 西安 710054;2.長安大學 地質工程與測繪學院,陜西 西安 710054)
天地圖是由國家、省、市三級節點共建而成的國家地理信息公共服務平臺,自上線以來得到了政府部門和社會大眾的廣泛應用[1]。由于各級節點間存在信息資源共享不充分、數據現勢性不一致等問題,導致天地圖無法支撐復雜空間分析和深度應用。為此原國家測繪地理信息局提出數據融合方法,通過整合天地圖國家主節點與省、市級節點數據資源,使融合后的各級天地圖數據在現勢性、準確性、豐富性等方面達到最優,從而提升天地圖的整體數據質量與深度應用支撐能力,進而更好地促進天地圖建設與應用服務[2-3]。
目前矢量數據融合工作大多數都是通過ArcGIS軟件進行實施。ArcGIS軟件提供了豐富的數據編輯和數據質檢功能,可對要素進行幾何形狀修改、屬性內容處理和空間關系檢查與協調等編輯操作[4-5];但由于其提供的功能都是通用功能,因此不能有效支持一些數據融合處理要求(如線反向、孤立線檢查等),同時已有的一些功能(如節點編輯、屬性編輯等)也存在不足之處,導致人工重復作業。為彌補ArcGIS軟件功能的不足,提升數據融合效率,本文設計并實現了一種矢量數據融合工具。在分析矢量數據融合技術路線的基礎上,結合ArcGIS軟件已有功能,梳理得到矢量數據融合工具的需求;再根據需求進行工具功能模塊設計,并利用ArcGIS相關組件,在Visual Studio開發環境下采用Add-in方式進行工具實現;最后將所開發的工具應用于天地圖·陜西國省矢量數據融合工作中,結果表明,該工具能在保證數據融合質量的同時,減少人工重復作業,有效提升數據融合效率。
矢量數據融合是豐富和更新天地圖各級數據資源的有效途徑。在分析矢量數據融合技術路線的基礎上,結合ArcGIS軟件已有功能,本文梳理了矢量數據融合工具的需求。
矢量數據融合是通過對參與融合的不同精度、不同類型的矢量數據進行分析比對,從中選取數據精度高、現勢性強、內容豐富的要素進行融合處理,并對融合后的數據結果進行幾何拓撲、屬性表達、空間關系、邏輯一致性檢查,使融合后的數據在準確性、現勢性、內容豐富性等方面達到最優[6]。
矢量數據融合的技術路線如圖1所示[7]:①坐標系轉換,由于各數據源坐標系不完全一致,需進行坐標系轉換,使各數據源坐標統一;②要素分層提取,對不同數據源中的同類要素進行對比分析,根據現勢性強、幾何表達精確度高、平面位置精度準、內容豐富等原則進行提取,對確定提取的要素進行分層合并處理;③屬性內容處理,即進行各要素屬性結構、內容的處理、整合;④幾何圖形處理,根據現勢性、數學精度等原則,進行要素的幾何圖形處理加工;⑤空間關系處理,即處理各要素間的空間關系,保證各要素間的空間關系合理;⑥質量檢查,按照數字測繪成果質量要求,對融合后的成果數據進行質量檢查。

圖1 矢量數據融合的技術路線
通過對技術路線進行分析,可將矢量數據融合工作分為數據預處理、幾何更新、屬性更新、數據質量檢查、數據檢查處理5個部分。數據預處理包括坐標系轉換和數據分層提取,ArcGIS軟件提供了投影變換與按位置(屬性)選取要素的功能,能滿足數據預處理的要求,因此該部分沒有需求。幾何更新主要是對要素的幾何圖形進行修改,ArcGIS軟件提供了幾何整修、節點編輯、平移、旋轉、打斷等功能,能滿足幾何更新的要求,但存在人工重復作業的問題(如打斷編輯一次只能處理一個對象),需要進行改進。屬性更新主要是對要素的屬性內容進行處理,ArcGIS軟件通過要素編輯和字段計算器等方式處理要素屬性;但這些方式存在人工操作不便(如不能同時更新多個字段)的問題,需要進行改進。數據質量檢查包括拓撲關系檢查和邏輯一致性檢查,ArcGIS軟件提供了豐富的拓撲關系檢查功能,如自相交、互相交、懸掛點、小對象等,能滿足拓撲關系檢查的要求,但不能滿足邏輯一致性檢查的要求(如河流級別一致性),需要增加相應功能。數據檢查處理主要是依據數據檢查結果對數據進行相應處理,ArcGIS軟件僅提供了少量功能(如延伸、修剪用于懸掛點處理)用于檢查結果的數據處理,大多檢查結果不能處理,需要增加相應功能。矢量數據融合工具的需求如表1所示。

表1 矢量數據融合工具需求
根據需求分析進行矢量數據融合工具功能模塊的設計,如圖2所示。矢量數據融合工具的功能模塊由幾何更新、屬性更新、數據檢查、數據處理和系統設置組成。

圖2 矢量數據融合工具功能模塊
幾何更新功能模塊包括形狀更新、線打斷、線反向、線公共點移動等功能。雖然ArcGIS軟件提供的節點編輯和幾何整修功能可用于要素幾何形狀的修改,但為了保證數據源要素與數據融合要素幾何形狀的一致性,通過節點編輯處理時,需逐個節點捕捉,利用幾何整修處理時,需追蹤幾何圖形,人工操作量較大。因此,為降低人工操作難度,形狀更新功能將數據源要素的幾何圖形作為參數去修改融合數據要素的幾何形狀,并設置了整修和相等兩種更新方式,作業人員只需分別點擊數據源要素和融合數據要素,即可實現融合數據要素幾何形狀的修改。線打斷功能主要針對ArcGIS軟件的打斷功能一次只能打斷一個要素的問題設計,作業人員使用該功能在需要打斷要素的位置繪制線段即可實現多個要素的同時打斷。線反向功能可將要素的節點順序反向,用于保證道路要素前進方向的一致性。在移動交叉口線要素的節點時,傳統方式是逐個要素進行移動,而通過線公共點移動功能則可實現交叉口線要素節點的同時移動。
在矢量數據融合過程中,有大量屬性內容需要處理,屬性更新功能模塊包括屬性交互更新、屬性批量更新、固定字段更新等功能。屬性交互更新是一種作業人員選擇數據源要素,再選擇數據融合要素進行屬性更新的方式,包含部分字段更新、全字段更新和使用更新字段3種形式。由于數據源要素與數據融合要素在屬性結構和內容方面可能存在差異,因此需通過屬性字段映射、屬性內容映射等相關內容消除差異。屬性批量更新是屬性交互更新的批處理形式,通過對數據源與融合數據之間空間關系(線要素共線、面要素交疊)的判斷,找出數據源與融合數據中的同名要素,進而對屬性內容進行更新。固定字段更新則是對要素的某個字段進行固定值填寫。
由于ArcGIS軟件提供了豐富的拓撲關系檢查功能,因此數據融合工具中的數據檢查主要是邏輯一致性方面的檢查,包括孤立線檢查、級別一致性檢查、偽節點檢查等功能。孤立線檢查負責找出沒有與其他線要素相交或相接的線要素,可用于道路連通性的檢查處理。級別一致性檢查用于檢查相同名稱的河流或綠地的級別是否一致。偽節點檢查用于檢查線要素中不合理的打斷。
數據處理功能模塊包括懸掛點處理、級別一致性處理等功能。ArcGIS軟件提供延伸、修剪功能用于懸掛點處理,但該功能只能逐個處理懸掛點,當數據量很大時,顯然不能滿足要求。懸掛點處理功能可實現懸掛點的批量消除。級別一致性處理是在級別一致性檢查結果的基礎上對要素的級別屬性進行處理,以保證河流級別、綠地級別的一致性。
系統設置功能模塊負責工具使用時的相關參數設置,包括環境設置和參數設置,如系統坐標單位、更新圖層設置、幾何更新方式、屬性字段映射設置、屬性內容映射設置等。
根據上述設計,本文利用ArcGIS相關組件,在Visual Studio開發環境下采用ArcGIS Add-in方式開發了矢量數據融合工具。ArcGIS Add-in是ArcGIS在10.0版本后引入的新功能,旨在讓用戶可以通過輕量級的代碼定制面向應用需求的桌面插件和功能,是一種可擴展性強、創建簡便、易于移植和共享的插件設計方式[8-9]。矢量數據融合工具通過ArcMap Add-in開發方式進行實現,在Visual Studio 2010中新建項目,選擇ArcMap Add-in模板建立工程,選擇Add-in的Button組件和Tool組件作為激活按鈕工具。由于矢量數據融合工具的內容較多,受篇幅限制,本文主要說明形狀更新、懸掛點處理的實現方式。
形狀更新的實現流程如圖3所示:①在系統設置中分別設置數據源所在圖層(SourceLayer)、融合數據所在圖層(UpdateLayer)以及幾何形狀更新方式(UpdateType);②通過點擊選擇(Intersects)的方式分別選擇數據源要素(SourceFeature)和融合數據要素(UpdateFeature),并對融合數據要素的幾何形狀進行修改;③判斷UpdateType,若為相等方式,則直接將數據源要素的幾何圖形賦值給融合數據要素(UpdateFeature.Shape = SourceFeature.Shape),若為整修方式,則將數據源要素的幾何圖形作為參數去修改融合數據要素的幾何形狀,對于線狀要素,利用IPolyline接口的Reshape函數進行整修(Polyline.Reshape(SourceFeature.Shape as IPath)),對于面狀要素,則需要將幾何圖形轉換為一個個環(IRing),再利用IRing接口的Reshape函數進行整修,最終完成融合數據要素幾何形狀的修改。

圖3 形狀更新實現流程圖
懸掛點處理的實現流程如圖4所示:①在系統設置中分別設置檢查結果圖層(RstLayer)、處理圖層(ProLayer)、處理參考圖層(RefLayer)、處理距離(Dist)、是否捕捉端點或交點(bCatch),其中處理參考圖層主要是為處理圖層要素的延伸、修剪等提供位置參考,處理參考圖層可與處理圖層一致;②利用檢查結果(Point),根據Dist和空間關系(Intersects),從ProLayer中找到處理要素(ProFeature)、從RefLayer中找到處理參考要素(RefFeatures),若RefFeatures個數為空,則進行提示,結束處理;③判斷bCatch,若是則從RefFeatures中找出最近端點或計算交點,并對ProFeature的端點進行處理,若不是則進入延伸或修剪部分;④從RefFeatures中找出距離最近的RefFeature,判斷其與ProFeature的空間關系,若不相交,則利用IConstructCurve接口的ConstructExtended函數進行延伸處理,反之則計算交點個數,交點個數等于1時,采用ITopologicalOperator2接口的Cut函數進行修剪處理,交點個數大于1時,則無法處理進行提示,結束處理;⑤對所有懸掛點檢查結果進行逐個處理,完成懸掛點處理。

圖4 懸掛點處理實現流程圖
本文根據功能模塊編寫相應的代碼,編譯形成后綴名為esriAddIn的文件,完成矢量數據融合工具的開發。工具的部分界面如圖5所示。

圖5 矢量數據融合工具部分界面
將本文設計的矢量數據融合工具應用于天地圖·陜西國省矢量數據融合工作中,效果如圖6、7所示。實踐結果表明,矢量數據融合工具能對要素進行幾何形狀修改、屬性內容處理和空間關系檢查與協調,在減少人工作業的同時保證了數據處理的準確性,提升了數據融合效率。

圖6 懸掛點處理結果

圖7 矢量數據融合結果
完善的工具是提高作業效率和質量的關鍵。本文針對ArcGIS軟件功能不能滿足天地圖矢量數據融合工作要求的問題,在梳理出矢量數據融合工具需求的基礎上,利用ArcGIS Add-in方式設計實現了一種矢量數據融合工具,并將其應用于天地圖·陜西國省矢量數據融合工作中。實踐結果表明,本文設計的工具能減少矢量數據融合工作中的人工重復作業,還能保證數據融合的質量,有效彌補了ArcGIS軟件的不足之處,具有一定的參考價值。