全茂林
(福建省測繪院,福建 福州 350003)
在現(xiàn)階段生產(chǎn)作業(yè)過程中,因數(shù)據(jù)格式轉(zhuǎn)換、投影變換等操作,生產(chǎn)的矢量數(shù)據(jù)會存在一些拓撲錯誤。常見的拓撲錯誤有面要素的縫隙、重疊和線要素的毛刺、偽結(jié)點、懸掛線等。此類拓撲錯誤往往很難通過肉眼發(fā)現(xiàn),若單單依靠人工處理,將會耗費大量的時間,并且可能并不能完全消除此類錯誤。對此,借助相應(yīng)功能的工具處理將是一個很好的選擇。本文探討的重點是如何設(shè)計制作一種能滿足所需要求的工具,筆者提出一種利用FME工程數(shù)據(jù)處理模板和ArcGIS數(shù)據(jù)互操作拓展模塊的方法來生成工具的方案。
FME(Feature Manipulate Engineering)是一個支持多元數(shù)據(jù)的提取、轉(zhuǎn)換、加載、處理的強大工具,它是完整的空間ETL解決方案[1]。FME工具庫中包含有400多種功能的轉(zhuǎn)換器,通過這些轉(zhuǎn)換器,可以實現(xiàn)數(shù)據(jù)的處理和轉(zhuǎn)換。此類轉(zhuǎn)換器可以單獨使用,也可組合應(yīng)用,組合應(yīng)用的方式是通過制作模板進行的。其模板制作原理就是在FME工作空間(FME Workbench)中調(diào)用多種不同功能的轉(zhuǎn)換器和輸入輸出模塊,然后通過不同轉(zhuǎn)換器的組合來實現(xiàn)各種功能。
FMEWorkbench模塊是一個空間ETL(提取、轉(zhuǎn)換和加載)創(chuàng)作環(huán)境,可快速定義圖形化的流程,進行數(shù)據(jù)轉(zhuǎn)換、變換和集成[2]。在FMEWorkbench可以完成柵格要素、幾何要素等多種類型數(shù)據(jù)轉(zhuǎn)換,也可進行圖形、屬性等數(shù)據(jù)的操作,它是一種用于開發(fā)數(shù)據(jù)變換工具的可視化工作流編輯器,在啟用Data Interoperability擴展模塊后,可以用該編輯器創(chuàng)建空間ETL工具[3],以用來配合其他軟件使用,其具有強大的功能。
ArcGIS數(shù)據(jù)互操作(ArcGISData Interoperability)是由ESRI公司和Safe公司共同開發(fā)的一款擴展模塊,它可以直接讀取和使用100多種常見的GIS矢量數(shù)據(jù)格式,包括很多演化的GML規(guī)范。此外,可使用多種格式傳送GIS數(shù)據(jù)[3]。其原理是通過空間ETL工具(Spatial ETL Tools)調(diào)用FME模板,使其能在ArcGIS中兼容使用FME功能,使數(shù)據(jù)操作方法多樣化。使用空間ETL工具需另行安裝,然后在ArcGIS軟件中勾選自定義擴展模塊的FMEExtension for ArcGIS選項。
本文進行矢量數(shù)據(jù)預(yù)處理工具的制作,首先要分析其所需功能,其次根據(jù)需求設(shè)計數(shù)據(jù)處理流程圖,再次在FME工作空間中按照流程圖制作運行模板,最后再在ArcGIS中引用制作拓展工具(ArcGIS ETL Tools),具體如下。
本工具的主要功能是處理矢量數(shù)據(jù)中的拓撲錯誤,其中拓撲錯誤包含縫隙、重疊、毛刺、偽結(jié)點、懸掛線等。這些拓撲錯誤的處理并不會相互影響,因此本工具的方案是對各個拓撲錯誤分步進行處理。
本工具要實現(xiàn)面狀地物的縫隙、重疊處理和線狀地物的毛刺、偽結(jié)點、懸掛線處理,并且其中懸掛線類型又分為線未達邊、線超出邊和端點不接3種情況,處理步驟如下。
對于面要素,分別處理面要素的縫隙和重疊錯誤,同時其另生成的輔助面用于后續(xù)線要素處理;對于線要素,分別對線要素進行斷線連接、毛刺消除和去偽節(jié)點處理;最后對懸掛線的線未達邊、線超出邊和端點不接3種情況依次進行處理,其結(jié)果就是轉(zhuǎn)換后的成果數(shù)據(jù)。具體流程如圖1所示。
圖1 模板設(shè)計流程圖
流程圖設(shè)計完成后,要在FME工作空間制作模板。FME的操作流程主要分為讀模塊、轉(zhuǎn)化器模塊和寫模塊3個部分[4]。具體為數(shù)據(jù)讀入、面縫隙處理、輔助面線生成、毛刺消除、偽節(jié)點清理、懸掛線處理和數(shù)據(jù)輸出。
2.3.1 數(shù)據(jù)讀入
需用到數(shù)據(jù)輸入模塊,其中面要素和線要素要分開輸入。因面狀要素要用來處理壓蓋、縫隙問題和提取輔助面,其輔助面要提供給后續(xù)線狀要素處理;而線狀要素用來處理毛刺、偽節(jié)點和懸掛線問題,可以延后進行處理。
2.3.2 面縫隙和壓蓋處理
用到的轉(zhuǎn)換器是AreaGapAndOverlapCleaner(面間隙和重疊處理),它通過使用指定的公差從輸入?yún)^(qū)域構(gòu)造二維平面分區(qū)來清除間隙和重疊[3]。為保持圖形的主要特征,設(shè)置參數(shù)要以面積為標準優(yōu)先權(quán)保留邊。
2.3.3 輔助線、面生成
要得到輔助面要素和輔助線要素2組數(shù)據(jù),首先提取輔助面用到Dissolver(融合)轉(zhuǎn)換器,使之合并成融合面;之后提取輔助面邊界線要素,因輔助面中還包含有空洞的情況,所以要用到DonutHoleExtractor(環(huán)、洞提?。┖虶eometryCoercer(幾何類型轉(zhuǎn)換,面轉(zhuǎn)線)這2種轉(zhuǎn)換器。
2.3.4 斷線連接
對線圖層,為防止對后續(xù)操作的干擾,先要進行斷線連接處理,斷線連接處理要分圖層進行。首先建立記錄圖層的字段,然后使用Intersector(交叉點處理)和LineCombiner(線連接)轉(zhuǎn)換器對其進行斷線連接處理。
2.3.5 毛刺、偽節(jié)處理
毛刺消除用到SpikeRemover(毛刺消除)轉(zhuǎn)換器,參數(shù)設(shè)置為最大尖銳角度為3、最大尖銳長度為10;偽結(jié)點處理用到Generalizer(泛化)轉(zhuǎn)換器,設(shè)置算法為Thin(移除相鄰線距離小于容差的點)。
2.3.6 懸掛線處理
懸掛線有3種類型,本文分3個步驟處理。
線未達邊:思路是找出未達邊的線,再讓其延伸捕捉到臨近邊上。用到步驟2.3.3中生成的輔助線和要處理的線,然后用AnchoredSnapper(鄰近捕捉)轉(zhuǎn)換器進行捕捉處理,設(shè)置容差為30。
線超出邊:分2種情況處理。線超出輔助面邊界線,用步驟2.2.3生成的輔助面對其進行裁切處理,用到Clipper(裁剪)轉(zhuǎn)換器;線自相交處超出邊,用到提取判定的方法,具體步驟是先提取自相交超出的微短線,用到 Intersector(交叉點處理)和LineOnLineOverlayer(線線重合打斷處理)轉(zhuǎn)換器,然后用AttributeRangeFilter(屬性值域判定)轉(zhuǎn)換器判定長度屬性進行篩選。最終FME模板如圖2所示。
圖2 FME模板成果
端點不接:用Snapper(節(jié)點捕捉)轉(zhuǎn)換器進行處理。其原理是在容差范圍內(nèi)的臨近端點不接處進行自動捕捉處理。為防止捕捉錯誤,筆者按照圖層進行分組處理。
FME模板完成后,要將其在ArcGIS中實現(xiàn),就要用到ArcGISETL模塊。首先在ArcGIS中新建工具箱,然后創(chuàng)建FMEETL Tool,導(dǎo)入FME模板,最后生成ArcGISETL工具。
該工具完成后,為驗證其可靠性,要對其進行測試:首先加載原始數(shù)據(jù)庫process.mdb和成果數(shù)據(jù)庫k1.mdb,然后點擊執(zhí)行,其圖形處理前后對比效果如圖3所示。
圖3 執(zhí)行前后圖形對比
從圖3中看出,元數(shù)據(jù)中超出面邊界部分已裁除,圖形中的要素也得到了簡化,為更直觀地顯示出結(jié)果,對其數(shù)據(jù)前后指標進行統(tǒng)計對比,如圖4所示。
圖4 執(zhí)行前后數(shù)據(jù)對比
由圖4可知,記錄由2 328條減為1 131條。本工具共清除毛刺3處,偽節(jié)點0處。懸掛線的3種情況為:端點不接94處,線超出邊907處,線未達邊0處。
在本次測試中,工具運行用時共35 s,而若隨著處理的數(shù)據(jù)量增加,其運行時間將會成倍增長,因此對其優(yōu)化是很有必要的。本工具的優(yōu)化方案是在FME模板中設(shè)置使用CPU多核心并行處理,優(yōu)化后用時減少到8 s,工作效率加快了77%。
FME具有多種功能的轉(zhuǎn)換器,能夠應(yīng)對不同的功能需求,因此,在ArcGIS數(shù)據(jù)處理過程中,借助FME工具是十分有意義的,然而ArcGIS集成FME的功能還不夠全面,現(xiàn)階段還不能夠交互設(shè)計處理模塊。ArcGISETL擴展模塊在數(shù)據(jù)處理工具制作方面還有很大的發(fā)展空間。
通過本文設(shè)計的矢量數(shù)據(jù)預(yù)處理工具,作業(yè)員只需對不同的項目修改FME模版,然后在ARCGIS中進行ETL配置即可生成相應(yīng)的數(shù)據(jù)預(yù)處理工具。此方法可推廣至需要矢量數(shù)據(jù)預(yù)處理的項目。如全國第三次土地調(diào)查、全要素更新、地理國情監(jiān)測等,其具有很大的改進應(yīng)用價值。