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

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

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

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

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

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

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

圖6 懸掛點處理結(jié)果

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