龔其琛,李 磊,鄒 威
(1.中南勘察設計院集團有限公司,湖北 武漢 430000;2.湖北省測繪工程院,湖北 武漢 430070;3.廣東省國土資源測繪院,廣東 廣州 510500)
道路線層數據是1∶10 000 DLG核心要素成果的核心,其所存在的拓撲問題將嚴重影響后續道路通達性、最短路徑查找等基于數據拓撲的分析內容。由于成果采用Shapefile格式存儲,在常規地理信息處理軟件中,Geoway可實現Shapefile文件懸掛點和偽節點的處理,但因某些未知原因易導致屬性丟失;南方CASS不能處理Shapefile文件;ArcGIS能檢查出懸掛點和偽節點問題,但不能自動修改。因此,本文選擇FME作為數據拓撲處理工具,利用其豐富的地理空間數據轉換器構建全自動的道路數據拓撲問題處理方案,針對數據中存在的小短線、懸掛點、偽節點進行討論。
1∶10 000 DLG核心要素涉及地形、地貌要素的各個方面,但核心要素更新只對交通、水系、居民地以及植被要素進行更新。本文僅處理核心要素道路圖層線狀要素類型,圖層名為GD10K_DLG_LRD_LN,要素采集根據《廣東省1∶5 000 1∶10 000基礎地理信息要素分類代碼與屬性表(試行)》[1]執行。
FME是加拿大Safe Software公司開發的空間數據轉換處理系統,是完整的空間ETL解決方案。該方案基于OpenGIS組織提出的新的數據轉換理念—語義轉換,通過提供在轉換過程中重構數據的功能,實現了超過250種不同空間數據格式(模型)之間的轉換,為進行快速、高質量、多需求的數據轉換應用提供了高效、可靠的手段[2]。
總體處理流程如圖1所示,對于小短線、懸掛點和偽節點,處理的先后順序為小短線—懸掛點—偽節點[3]。小短線問題的處理方式為:刪除線長為1 m以下的線段,小短線刪除后,小短線問題就會變成懸掛點問題,這也是小短線問題必須先處理的原因。懸掛點的處理方式為:以線端點為對象,將數據中平面距離在1 m以內的線端點移動到其中任一個端點。偽節點的處理方式為:由于三岔路口以上的道路必須將線條打斷以表達其空間通達屬性,因此不能一刀切地將所有相同屬性的道路融合起來,本文僅融合只有兩條線段相接的道路,三岔路口以上的道路視為已人工核查完畢[4-5]。

圖1 數據處理流程圖
2.2.1 小短線處理
原始數據中存在的小短線問題如圖2所示。將小短線定義為長度小于1 m的小段,數據中存在的小短線可直接刪除,線段的起止點可認為在現實情況中是同一個節點,將小短線刪除后,小短線問題即轉化為懸掛點問題,可在后面的操作中與懸掛點一起處理。
小短線處理通過FME中Tester轉換器實現,Tester提供了完善的單條件或多條件屬性篩選要素功能,只需在篩選前計算線要素長度即可。篩選后,長度在1 m以上的線段參與后續懸掛點與偽節點處理過程,1 m以下的線段過濾掉不作處理。

圖2 典型小短線示例/m
2.2.2 懸掛點處理
懸掛點一般產生于生產過程中未打開數據編輯軟件的“捕捉”功能或“捕捉”功能容差設置過小,導致線要素端點不與相鄰線要素拓撲相接的情況。懸掛點的懸掛距離一般較小,屬于數據生產中較難避免的數據錯誤。懸掛點的表現形式如圖3所示。

圖3 典型懸掛點的表現形式
目前懸掛點的處理一般采取人機交互的方式,如市場占有率最大的地理信息數據處理軟件ArcGIS能通過拓撲檢查查詢出數據中存在的懸掛點位置,但不能自動修改,軟件只能協助檢查,生產效率較低。本文利用FME中Snapper轉換器來解決數據懸掛點問題。轉換器參數設置界面如圖4所示。

圖4 懸掛點處理轉換器Snapper參數設置界面
Snapper轉換器的重要參數包括Snapping Type、Snapping Distance、Add Additional Vertex等。Snapping Type包含End Point Snapping、Vertex Snapping和Segment Snapping,分別是端點捕捉、節點捕捉和要素捕捉。捕捉容差由Snapping Distance決定,此處設為1 m。捕捉模式為空間移動,不改變原始線要素中節點結構和位置,因此Add Additional Vertex參數設為Never。道路要素經該轉換器處理,會自動將懸掛距離小于1 m的懸掛點自動移動到相鄰線要素上,懸掛距離大于1 m的懸掛點則不予處理,認為其為合理懸掛[6-7]。
2.2.3 偽節點處理
偽節點為道路線要素中不必要的打斷,但道路線中有些打斷是正常的,如兩條道路相交的路口,為表達道路空間連通性,將交叉點打斷;反之,空間上不連通的路口則不應打斷。對于路口偽節點的判斷比較復雜,必須根據影像人工判斷路口實際連通情況才能確定線要素打斷與否,因此批量處理偽節點不適合處理路口相交處之類的復雜情況。利用FME批量連通偽節點兩端線段,需要先挑選出只涉及兩條線段的偽節點。實現邏輯如圖5所示。很顯然,道路偽節點處理的難點在于挑選出與之只有兩條線要素相交的偽節點,其FME實現思路如圖6所示。

圖5 偽節點處理邏輯

圖6 FME篩選偽節點思路
偽節點篩選緊跟懸掛點處理環節,直接利用懸掛點處理后的線要素道路,采用Intersector轉換器的Node輸出端口獲取道路線要素的拓撲相交節點,再將交點與道路線要素在PointOnLine Overlayer轉換器中空間疊加,然后在Point輸出端口輸出附帶有相接線要素屬性的節點,ListElement Counter用于計算相接線要素數量,Tester限定相接線要素數量為2的才進行輸出。此后只需將輸出的滿足該特定條件的節點與原始道路線進行空間疊加選擇,將道路線按照道路名、代碼等屬性融合即可。經測試,該方法可徹底消除非路口道路線不合理打斷的情況[3,8]。
本文將道路要素的典型拓撲問題通過FME建模的方式自動檢查、修改、導出,減少了人工作業量,提高了檢查精度,實現了數據的拓撲自動化修改。FME以其豐富全面的轉換器和流程化的模塊構建理念,在日常地理信息作業中,與ArcGIS等常規地理信息處理軟件做到了差異化共存,為很多地理信息工作提供了新的思路。