張 標(biāo),陳 楠
(1.自然資源部陜西基礎(chǔ)地理信息中心,陜西 西安 710054;2.長(zhǎng)安大學(xué) 地質(zhì)工程與測(cè)繪學(xué)院,陜西 西安 710054)
天地圖是由國(guó)家、省、市三級(jí)節(jié)點(diǎn)共建而成的國(guó)家地理信息公共服務(wù)平臺(tái),自上線以來(lái)得到了政府部門和社會(huì)大眾的廣泛應(yīng)用[1]。由于各級(jí)節(jié)點(diǎn)間存在信息資源共享不充分、數(shù)據(jù)現(xiàn)勢(shì)性不一致等問(wèn)題,導(dǎo)致天地圖無(wú)法支撐復(fù)雜空間分析和深度應(yīng)用。為此原國(guó)家測(cè)繪地理信息局提出數(shù)據(jù)融合方法,通過(guò)整合天地圖國(guó)家主節(jié)點(diǎn)與省、市級(jí)節(jié)點(diǎn)數(shù)據(jù)資源,使融合后的各級(jí)天地圖數(shù)據(jù)在現(xiàn)勢(shì)性、準(zhǔn)確性、豐富性等方面達(dá)到最優(yōu),從而提升天地圖的整體數(shù)據(jù)質(zhì)量與深度應(yīng)用支撐能力,進(jìn)而更好地促進(jìn)天地圖建設(shè)與應(yīng)用服務(wù)[2-3]。
目前矢量數(shù)據(jù)融合工作大多數(shù)都是通過(guò)ArcGIS軟件進(jìn)行實(shí)施。ArcGIS軟件提供了豐富的數(shù)據(jù)編輯和數(shù)據(jù)質(zhì)檢功能,可對(duì)要素進(jìn)行幾何形狀修改、屬性內(nèi)容處理和空間關(guān)系檢查與協(xié)調(diào)等編輯操作[4-5];但由于其提供的功能都是通用功能,因此不能有效支持一些數(shù)據(jù)融合處理要求(如線反向、孤立線檢查等),同時(shí)已有的一些功能(如節(jié)點(diǎn)編輯、屬性編輯等)也存在不足之處,導(dǎo)致人工重復(fù)作業(yè)。為彌補(bǔ)ArcGIS軟件功能的不足,提升數(shù)據(jù)融合效率,本文設(shè)計(jì)并實(shí)現(xiàn)了一種矢量數(shù)據(jù)融合工具。在分析矢量數(shù)據(jù)融合技術(shù)路線的基礎(chǔ)上,結(jié)合ArcGIS軟件已有功能,梳理得到矢量數(shù)據(jù)融合工具的需求;再根據(jù)需求進(jìn)行工具功能模塊設(shè)計(jì),并利用ArcGIS相關(guān)組件,在Visual Studio開發(fā)環(huán)境下采用Add-in方式進(jìn)行工具實(shí)現(xiàn);最后將所開發(fā)的工具應(yīng)用于天地圖·陜西國(guó)省矢量數(shù)據(jù)融合工作中,結(jié)果表明,該工具能在保證數(shù)據(jù)融合質(zhì)量的同時(shí),減少人工重復(fù)作業(yè),有效提升數(shù)據(jù)融合效率。
矢量數(shù)據(jù)融合是豐富和更新天地圖各級(jí)數(shù)據(jù)資源的有效途徑。在分析矢量數(shù)據(jù)融合技術(shù)路線的基礎(chǔ)上,結(jié)合ArcGIS軟件已有功能,本文梳理了矢量數(shù)據(jù)融合工具的需求。
矢量數(shù)據(jù)融合是通過(guò)對(duì)參與融合的不同精度、不同類型的矢量數(shù)據(jù)進(jìn)行分析比對(duì),從中選取數(shù)據(jù)精度高、現(xiàn)勢(shì)性強(qiáng)、內(nèi)容豐富的要素進(jìn)行融合處理,并對(duì)融合后的數(shù)據(jù)結(jié)果進(jìn)行幾何拓?fù)?、屬性表達(dá)、空間關(guān)系、邏輯一致性檢查,使融合后的數(shù)據(jù)在準(zhǔn)確性、現(xiàn)勢(shì)性、內(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)一;②要素分層提取,對(duì)不同數(shù)據(jù)源中的同類要素進(jìn)行對(duì)比分析,根據(jù)現(xiàn)勢(shì)性強(qiáng)、幾何表達(dá)精確度高、平面位置精度準(zhǔn)、內(nèi)容豐富等原則進(jìn)行提取,對(duì)確定提取的要素進(jìn)行分層合并處理;③屬性內(nèi)容處理,即進(jìn)行各要素屬性結(jié)構(gòu)、內(nèi)容的處理、整合;④幾何圖形處理,根據(jù)現(xiàn)勢(shì)性、數(shù)學(xué)精度等原則,進(jìn)行要素的幾何圖形處理加工;⑤空間關(guān)系處理,即處理各要素間的空間關(guān)系,保證各要素間的空間關(guān)系合理;⑥質(zhì)量檢查,按照數(shù)字測(cè)繪成果質(zhì)量要求,對(duì)融合后的成果數(shù)據(jù)進(jìn)行質(zhì)量檢查。
圖1 矢量數(shù)據(jù)融合的技術(shù)路線
通過(guò)對(duì)技術(shù)路線進(jìn)行分析,可將矢量數(shù)據(jù)融合工作分為數(shù)據(jù)預(yù)處理、幾何更新、屬性更新、數(shù)據(jù)質(zhì)量檢查、數(shù)據(jù)檢查處理5個(gè)部分。數(shù)據(jù)預(yù)處理包括坐標(biāo)系轉(zhuǎn)換和數(shù)據(jù)分層提取,ArcGIS軟件提供了投影變換與按位置(屬性)選取要素的功能,能滿足數(shù)據(jù)預(yù)處理的要求,因此該部分沒有需求。幾何更新主要是對(duì)要素的幾何圖形進(jìn)行修改,ArcGIS軟件提供了幾何整修、節(jié)點(diǎn)編輯、平移、旋轉(zhuǎn)、打斷等功能,能滿足幾何更新的要求,但存在人工重復(fù)作業(yè)的問(wèn)題(如打斷編輯一次只能處理一個(gè)對(duì)象),需要進(jìn)行改進(jìn)。屬性更新主要是對(duì)要素的屬性內(nèi)容進(jìn)行處理,ArcGIS軟件通過(guò)要素編輯和字段計(jì)算器等方式處理要素屬性;但這些方式存在人工操作不便(如不能同時(shí)更新多個(gè)字段)的問(wèn)題,需要進(jìn)行改進(jìn)。數(shù)據(jù)質(zhì)量檢查包括拓?fù)潢P(guān)系檢查和邏輯一致性檢查,ArcGIS軟件提供了豐富的拓?fù)潢P(guān)系檢查功能,如自相交、互相交、懸掛點(diǎn)、小對(duì)象等,能滿足拓?fù)潢P(guān)系檢查的要求,但不能滿足邏輯一致性檢查的要求(如河流級(jí)別一致性),需要增加相應(yīng)功能。數(shù)據(jù)檢查處理主要是依據(jù)數(shù)據(jù)檢查結(jié)果對(duì)數(shù)據(jù)進(jìn)行相應(yīng)處理,ArcGIS軟件僅提供了少量功能(如延伸、修剪用于懸掛點(diǎn)處理)用于檢查結(jié)果的數(shù)據(jù)處理,大多檢查結(jié)果不能處理,需要增加相應(yīng)功能。矢量數(shù)據(jù)融合工具的需求如表1所示。
表1 矢量數(shù)據(jù)融合工具需求
根據(jù)需求分析進(jìn)行矢量數(shù)據(jù)融合工具功能模塊的設(shè)計(jì),如圖2所示。矢量數(shù)據(jù)融合工具的功能模塊由幾何更新、屬性更新、數(shù)據(jù)檢查、數(shù)據(jù)處理和系統(tǒng)設(shè)置組成。
圖2 矢量數(shù)據(jù)融合工具功能模塊
幾何更新功能模塊包括形狀更新、線打斷、線反向、線公共點(diǎn)移動(dòng)等功能。雖然ArcGIS軟件提供的節(jié)點(diǎn)編輯和幾何整修功能可用于要素幾何形狀的修改,但為了保證數(shù)據(jù)源要素與數(shù)據(jù)融合要素幾何形狀的一致性,通過(guò)節(jié)點(diǎn)編輯處理時(shí),需逐個(gè)節(jié)點(diǎn)捕捉,利用幾何整修處理時(shí),需追蹤幾何圖形,人工操作量較大。因此,為降低人工操作難度,形狀更新功能將數(shù)據(jù)源要素的幾何圖形作為參數(shù)去修改融合數(shù)據(jù)要素的幾何形狀,并設(shè)置了整修和相等兩種更新方式,作業(yè)人員只需分別點(diǎn)擊數(shù)據(jù)源要素和融合數(shù)據(jù)要素,即可實(shí)現(xiàn)融合數(shù)據(jù)要素幾何形狀的修改。線打斷功能主要針對(duì)ArcGIS軟件的打斷功能一次只能打斷一個(gè)要素的問(wèn)題設(shè)計(jì),作業(yè)人員使用該功能在需要打斷要素的位置繪制線段即可實(shí)現(xiàn)多個(gè)要素的同時(shí)打斷。線反向功能可將要素的節(jié)點(diǎn)順序反向,用于保證道路要素前進(jìn)方向的一致性。在移動(dòng)交叉口線要素的節(jié)點(diǎn)時(shí),傳統(tǒng)方式是逐個(gè)要素進(jìn)行移動(dòng),而通過(guò)線公共點(diǎn)移動(dòng)功能則可實(shí)現(xiàn)交叉口線要素節(jié)點(diǎn)的同時(shí)移動(dòng)。
在矢量數(shù)據(jù)融合過(guò)程中,有大量屬性內(nèi)容需要處理,屬性更新功能模塊包括屬性交互更新、屬性批量更新、固定字段更新等功能。屬性交互更新是一種作業(yè)人員選擇數(shù)據(jù)源要素,再選擇數(shù)據(jù)融合要素進(jìn)行屬性更新的方式,包含部分字段更新、全字段更新和使用更新字段3種形式。由于數(shù)據(jù)源要素與數(shù)據(jù)融合要素在屬性結(jié)構(gòu)和內(nèi)容方面可能存在差異,因此需通過(guò)屬性字段映射、屬性內(nèi)容映射等相關(guān)內(nèi)容消除差異。屬性批量更新是屬性交互更新的批處理形式,通過(guò)對(duì)數(shù)據(jù)源與融合數(shù)據(jù)之間空間關(guān)系(線要素共線、面要素交疊)的判斷,找出數(shù)據(jù)源與融合數(shù)據(jù)中的同名要素,進(jìn)而對(duì)屬性內(nèi)容進(jìn)行更新。固定字段更新則是對(duì)要素的某個(gè)字段進(jìn)行固定值填寫。
由于ArcGIS軟件提供了豐富的拓?fù)潢P(guān)系檢查功能,因此數(shù)據(jù)融合工具中的數(shù)據(jù)檢查主要是邏輯一致性方面的檢查,包括孤立線檢查、級(jí)別一致性檢查、偽節(jié)點(diǎn)檢查等功能。孤立線檢查負(fù)責(zé)找出沒有與其他線要素相交或相接的線要素,可用于道路連通性的檢查處理。級(jí)別一致性檢查用于檢查相同名稱的河流或綠地的級(jí)別是否一致。偽節(jié)點(diǎn)檢查用于檢查線要素中不合理的打斷。
數(shù)據(jù)處理功能模塊包括懸掛點(diǎn)處理、級(jí)別一致性處理等功能。ArcGIS軟件提供延伸、修剪功能用于懸掛點(diǎn)處理,但該功能只能逐個(gè)處理懸掛點(diǎn),當(dāng)數(shù)據(jù)量很大時(shí),顯然不能滿足要求。懸掛點(diǎn)處理功能可實(shí)現(xiàn)懸掛點(diǎn)的批量消除。級(jí)別一致性處理是在級(jí)別一致性檢查結(jié)果的基礎(chǔ)上對(duì)要素的級(jí)別屬性進(jìn)行處理,以保證河流級(jí)別、綠地級(jí)別的一致性。
系統(tǒng)設(shè)置功能模塊負(fù)責(zé)工具使用時(shí)的相關(guān)參數(shù)設(shè)置,包括環(huán)境設(shè)置和參數(shù)設(shè)置,如系統(tǒng)坐標(biāo)單位、更新圖層設(shè)置、幾何更新方式、屬性字段映射設(shè)置、屬性內(nèi)容映射設(shè)置等。
根據(jù)上述設(shè)計(jì),本文利用ArcGIS相關(guān)組件,在Visual Studio開發(fā)環(huán)境下采用ArcGIS Add-in方式開發(fā)了矢量數(shù)據(jù)融合工具。ArcGIS Add-in是ArcGIS在10.0版本后引入的新功能,旨在讓用戶可以通過(guò)輕量級(jí)的代碼定制面向應(yīng)用需求的桌面插件和功能,是一種可擴(kuò)展性強(qiáng)、創(chuàng)建簡(jiǎn)便、易于移植和共享的插件設(shè)計(jì)方式[8-9]。矢量數(shù)據(jù)融合工具通過(guò)ArcMap Add-in開發(fā)方式進(jìn)行實(shí)現(xiàn),在Visual Studio 2010中新建項(xiàng)目,選擇ArcMap Add-in模板建立工程,選擇Add-in的Button組件和Tool組件作為激活按鈕工具。由于矢量數(shù)據(jù)融合工具的內(nèi)容較多,受篇幅限制,本文主要說(shuō)明形狀更新、懸掛點(diǎn)處理的實(shí)現(xiàn)方式。
形狀更新的實(shí)現(xiàn)流程如圖3所示:①在系統(tǒng)設(shè)置中分別設(shè)置數(shù)據(jù)源所在圖層(SourceLayer)、融合數(shù)據(jù)所在圖層(UpdateLayer)以及幾何形狀更新方式(UpdateType);②通過(guò)點(diǎn)擊選擇(Intersects)的方式分別選擇數(shù)據(jù)源要素(SourceFeature)和融合數(shù)據(jù)要素(UpdateFeature),并對(duì)融合數(shù)據(jù)要素的幾何形狀進(jìn)行修改;③判斷UpdateType,若為相等方式,則直接將數(shù)據(jù)源要素的幾何圖形賦值給融合數(shù)據(jù)要素(UpdateFeature.Shape = SourceFeature.Shape),若為整修方式,則將數(shù)據(jù)源要素的幾何圖形作為參數(shù)去修改融合數(shù)據(jù)要素的幾何形狀,對(duì)于線狀要素,利用IPolyline接口的Reshape函數(shù)進(jìn)行整修(Polyline.Reshape(SourceFeature.Shape as IPath)),對(duì)于面狀要素,則需要將幾何圖形轉(zhuǎn)換為一個(gè)個(gè)環(huán)(IRing),再利用IRing接口的Reshape函數(shù)進(jìn)行整修,最終完成融合數(shù)據(jù)要素幾何形狀的修改。
圖3 形狀更新實(shí)現(xiàn)流程圖
懸掛點(diǎn)處理的實(shí)現(xiàn)流程如圖4所示:①在系統(tǒng)設(shè)置中分別設(shè)置檢查結(jié)果圖層(RstLayer)、處理圖層(ProLayer)、處理參考圖層(RefLayer)、處理距離(Dist)、是否捕捉端點(diǎn)或交點(diǎn)(bCatch),其中處理參考圖層主要是為處理圖層要素的延伸、修剪等提供位置參考,處理參考圖層可與處理圖層一致;②利用檢查結(jié)果(Point),根據(jù)Dist和空間關(guān)系(Intersects),從ProLayer中找到處理要素(ProFeature)、從RefLayer中找到處理參考要素(RefFeatures),若RefFeatures個(gè)數(shù)為空,則進(jìn)行提示,結(jié)束處理;③判斷bCatch,若是則從RefFeatures中找出最近端點(diǎn)或計(jì)算交點(diǎn),并對(duì)ProFeature的端點(diǎn)進(jìn)行處理,若不是則進(jìn)入延伸或修剪部分;④從RefFeatures中找出距離最近的RefFeature,判斷其與ProFeature的空間關(guān)系,若不相交,則利用IConstructCurve接口的ConstructExtended函數(shù)進(jìn)行延伸處理,反之則計(jì)算交點(diǎn)個(gè)數(shù),交點(diǎn)個(gè)數(shù)等于1時(shí),采用ITopologicalOperator2接口的Cut函數(shù)進(jìn)行修剪處理,交點(diǎn)個(gè)數(shù)大于1時(shí),則無(wú)法處理進(jìn)行提示,結(jié)束處理;⑤對(duì)所有懸掛點(diǎn)檢查結(jié)果進(jìn)行逐個(gè)處理,完成懸掛點(diǎn)處理。
圖4 懸掛點(diǎn)處理實(shí)現(xiàn)流程圖
本文根據(jù)功能模塊編寫相應(yīng)的代碼,編譯形成后綴名為esriAddIn的文件,完成矢量數(shù)據(jù)融合工具的開發(fā)。工具的部分界面如圖5所示。
圖5 矢量數(shù)據(jù)融合工具部分界面
將本文設(shè)計(jì)的矢量數(shù)據(jù)融合工具應(yīng)用于天地圖·陜西國(guó)省矢量數(shù)據(jù)融合工作中,效果如圖6、7所示。實(shí)踐結(jié)果表明,矢量數(shù)據(jù)融合工具能對(duì)要素進(jìn)行幾何形狀修改、屬性內(nèi)容處理和空間關(guān)系檢查與協(xié)調(diào),在減少人工作業(yè)的同時(shí)保證了數(shù)據(jù)處理的準(zhǔn)確性,提升了數(shù)據(jù)融合效率。
圖6 懸掛點(diǎn)處理結(jié)果
圖7 矢量數(shù)據(jù)融合結(jié)果
完善的工具是提高作業(yè)效率和質(zhì)量的關(guān)鍵。本文針對(duì)ArcGIS軟件功能不能滿足天地圖矢量數(shù)據(jù)融合工作要求的問(wèn)題,在梳理出矢量數(shù)據(jù)融合工具需求的基礎(chǔ)上,利用ArcGIS Add-in方式設(shè)計(jì)實(shí)現(xiàn)了一種矢量數(shù)據(jù)融合工具,并將其應(yīng)用于天地圖·陜西國(guó)省矢量數(shù)據(jù)融合工作中。實(shí)踐結(jié)果表明,本文設(shè)計(jì)的工具能減少矢量數(shù)據(jù)融合工作中的人工重復(fù)作業(yè),還能保證數(shù)據(jù)融合的質(zhì)量,有效彌補(bǔ)了ArcGIS軟件的不足之處,具有一定的參考價(jià)值。