胡 博
(1.秦皇島市測繪大隊,河北 秦皇島 066001)
1∶500 地形圖入庫是我國基礎地理信息測繪工作的重要組成部分。國內(nèi)目前常用的入庫方法主要有CASS 直換轉換法、CASS 和ArcGIS 綜合轉換法、FME 轉換法,以及通過專門的第三方軟件如Geoway、IData 進行數(shù)據(jù)預處理和轉換等[1-2]。
綜合比較,CASS 直換轉換法、CASS 和ArcGIS綜合轉換法功能有限,應用第三方軟件作業(yè)簡單,功能便捷,這也是國內(nèi)多數(shù)生產(chǎn)單位采用的方法,但這種方法模式固定難以自主拓展。FME 轉換法需自定義CASS 數(shù)據(jù)到ArcGIS 數(shù)據(jù)的映射關系,實際操作較為復雜,對技術人員的要求較高,但是卻具有高度的自主性和靈活性。FME 提供了幾百個功能強大的轉換器,且支持Python 程序設計語言,可以通過自主設計算法和數(shù)據(jù)處理流程,實現(xiàn)許多其他方法所不能提供的功能[3]。
在原始數(shù)據(jù)來源復雜,質(zhì)量不佳,且缺乏第三方專業(yè)軟件的情況下,本文嘗試完全使用FME 來完成地形圖的入庫工作。
本文所依托的項目為秦皇島市建成區(qū)2018 年1∶500 基礎圖入庫工作,原始數(shù)據(jù)為應用南方CASS10.1軟件生產(chǎn)的數(shù)字線劃圖,要求的成果數(shù)據(jù)為ArcGIS 軟件所支持的gdb 文件數(shù)據(jù)庫。
本次作業(yè)共有海港區(qū)、北戴河、山海關3 個區(qū)待轉換圖形600 余幅,不同的圖形部分數(shù)據(jù)來源不一,更新時間不統(tǒng)一,加之后期數(shù)據(jù)編輯、存儲過程中的信息錯漏、丟失,原始數(shù)據(jù)存在的問題比較多,例如:部分圖形骨架線丟失,圖形換邊處屬性不一致,部分符號編碼不統(tǒng)一,部分圖形線錯亂等這些問題給入庫工作帶來了許多困難,而采用其他方法都難以高效、有針對性的解決原始數(shù)據(jù)中存在的問題,故本文選用FME 自定義需要的功能,在數(shù)據(jù)轉換過程中實現(xiàn)自動化的糾錯、檢查,以減少人工干預,提高工作效率。
安裝FME 2015 Desktop;安裝MyFME 以支持對CASS 數(shù)據(jù)的讀??;安裝CASS10.1 繪圖軟件編輯原始數(shù)據(jù);安裝ArcGIS Desktop 地理信息系統(tǒng)軟件查看編輯成果數(shù)據(jù)。
數(shù)據(jù)入庫總體流程如圖1 所示,包括數(shù)據(jù)預處理、FME 數(shù)據(jù)轉換、數(shù)據(jù)后續(xù)處理幾部分。
數(shù)據(jù)預處理的目的是生成進入FME 轉換前的中間數(shù)據(jù)。其內(nèi)容主要有:
1)注記處理。由于原始圖件中注記編碼不統(tǒng)一,且有不同類型注記混淆的情況,故需將所有的注記進行歸類,以便于FME 讀取。應用CASS 的“快速選擇”功能,批量選中不同類型的注記,單獨存放到指定的圖層。
2)人工構面。形狀復雜的道路、植被、土質(zhì)、水系等,在CASS 中采用Boundary 和TrackPolygon 命令,通過點擊封閉區(qū)域內(nèi)部或手動跟蹤面狀地物邊界的方式人工提取出封閉的邊界。
圖1 數(shù)據(jù)入庫方案流程
對形狀規(guī)則、簡單,有規(guī)律可循的房屋、房屋附屬等地物要素則應用FME 編寫相應的算法和數(shù)據(jù)處理流程實現(xiàn)自動構面。
3)數(shù)據(jù)檢查。檢查修改原始數(shù)據(jù)中的圖形、屬性錯誤,如管線連換錯誤等。
4)非曲線化。在輸入到FME 轉換之前,需要將中間數(shù)據(jù)中的弧線、擬合線轉換成折線,否則FME 運行效率大幅降低,且極易出現(xiàn)異常。非曲線化可以通過CASS自帶的“圓弧擬合線—折線”功能對全圖進行處理。
通過數(shù)據(jù)預處理工作,將原始數(shù)據(jù)編輯成為DWG格式的中間數(shù)據(jù),以待進行FME 數(shù)據(jù)轉換。
3.2.1 創(chuàng)建讀模塊
可設置“按要素編碼讀取”和“按圖層讀取”兩種方式,分別讀取原始數(shù)據(jù)中的地物要素,以及預處理后放置到特定圖層的注記、輔助要素。
3.2.2 要素分類處理
要素分類處理的關鍵問題是將源數(shù)據(jù)的的分層結構標準和成圖方式無丟失地轉換到新的分層結構標準和成圖方式[4]。
首先需要依據(jù)規(guī)范和數(shù)據(jù)字典,將不同CASS 編碼的地物要素處理歸類到地理信息數(shù)據(jù)庫中對應的圖層[5]。在FME 讀模塊中設置按編碼讀取要素,讀取中間數(shù)據(jù)中所有CASS 編碼的地物要素,再定義各自的數(shù)據(jù)流,輸出到其應進入的地理信息數(shù)據(jù)庫的圖層,從而構成不同格式之間數(shù)據(jù)的映射關系。
其次,要將符號化表示的原始圖件轉換成ArcGIS需要的點、線、面數(shù)據(jù)以及屬性信息,并且在數(shù)據(jù)轉換過程中要確保信息不丟失[6]。因此還需要對數(shù)據(jù)進行以下處理[7]:
1)面要素創(chuàng)建。針對房屋、陽臺、臺階等規(guī)則的面狀地物,在FME 中編寫設計相應的算法進行不同要素間的交互運算,自動將經(jīng)少量人工干預處理后的原始數(shù)據(jù)生成面要素。
例如:針對原始數(shù)據(jù)部分臺階骨架線丟失的問題,應用臺階邊線和骨架線共同構面并融合,從而減少重繪臺階的工作量;針對部分房屋繪制不規(guī)范,直換用AreaBuilder 轉換器構面不成功的情況,設計算法將所有的房屋線打碎,混合構面成為缺失屬性信息的面,再用未打碎的房屋線為構成的房屋面要素賦予屬性信息。
在此通過自主設計數(shù)據(jù)處理流程,可以減少人工干預的工作量,提高工作效率。針對預處理工作中手工構面的道路、植被、土質(zhì)、水系等形狀復雜的面狀地物,由AreaBuilder 轉換器生成面。由于手工構面時難免出現(xiàn)錯誤,因此需要在AreaBuilder 轉換器前進行針對邊界線的自相交、不閉合等情況進行處理,以確保AreaBuilder 能夠成功創(chuàng)建面要素。
2)線要素處理。應用LineJoiner 轉換器消除線要素的偽結點,應用InterSector 轉換器將同屬性的線在交叉處打斷。針對鐵路骨架線,讀取其寬度擴展屬性,用OffsetCurveGenerator 轉換器,將鐵路骨架線偏移寬度的一半,再捕捉、裁切、連換生成鐵路中線。
需要特別指出的是,主要道路需要另外入庫路中線,對此,可以在FME 中將已創(chuàng)建的主要道路面要素經(jīng)由CenterLineReplacer 轉換器生成道路中線。由于道路面要素形狀不規(guī)則,會造成CenterLineReplacer 轉換器自動生成的中線有許多分叉,如圖2 所示,在此可將生成的道路中線通過寫模塊輸出到DWG 圖形中,經(jīng)過編輯處理刪除分支,留下主線,再貼回到中間數(shù)據(jù)。
3)注記屬性提取。許多要素獨有的屬性信息需要依靠圖上的注記信息來獲得。在FME 中添加讀模塊,設置按圖層讀取要素,讀取預處理工作中創(chuàng)建的各類注記圖層,通過fme_text_string 屬性讀取其文字內(nèi)容并給對應的地物要素賦值。
圖2 由FME 自動生成的道路中線
針對面狀地要素,通過PointOnAreaOverlayer 轉換器進行疊加分析,將房屋面內(nèi)、道路面內(nèi)的樓層、樓高、道路名稱、道路材質(zhì)等注記作為屬性賦給相應的面要素。
針對點狀、線狀地物,可用過NeighborFinder 轉換器進行鄰近分析,尋找離點狀、線狀地物一定距離內(nèi)的注記,給其賦值屬性,也可對點或線要素生成緩沖區(qū),采用疊加分析的方式賦予屬性。
在利用注記為屬性信息賦值的時候,可以進行靈活自主的運算。例如:針對“A+B”、“A-B”格式的樓層注記,可在此步驟中依據(jù)中間連換字符進行拆分,獲得地上樓層信息和地下樓層信息,并進一步判斷應該給哪些屬性賦值。再如:當?shù)缆访嬉貎?nèi)有多個鋪裝材質(zhì)注記,而這些注記因為繪圖時的錯誤存在個別不一致時,可以經(jīng)過統(tǒng)計,采用數(shù)量最多的注記為該要素的屬性賦值。
3.2.3 鄰接關系處理
原始圖件中,有許多邊界相換的線狀、面狀地物因圖形繪制錯誤的原因,之間存在縫隙或是重疊,這在入庫成果中是不允許的。
在FME 中設置Snapper 轉換器,設定捕捉方式為“段捕捉”并參照地形圖的精度要求設置相應的容差,從而將所有間距小于容差,且邊界彼此相關的線狀地物以及面狀地物的外邊界移至貼合,在誤差允許的范圍內(nèi)避免線、面狀要素的相互壓蓋,并且消除彼此間的微小縫隙,從而建立正確的鄰換關系。
3.2.4 要素共有屬性賦值
要素共有屬性是指所有要素都具有的屬性信息,主要是指GB 國標編碼等。此類屬性信息可以建立要素的CASS 編碼到相應屬性的映射關系進行獲取。在此,將所有的地物要素創(chuàng)建各自的圖層標記屬性后匯集到AttributeValueMapper 轉換器,在AttributeValueMapper 中定義CASS 編碼(存儲于fme_feature_type 屬性中)到GB 的映射關系,從而根據(jù)CASS 編碼直換獲取所有地物要素的國標編碼。
CASS 編碼到GB 的映射關系可以從南方軟件公司處獲取,對照數(shù)據(jù)字典進行檢查和編輯,最后以Excel表格的方式直換導入到AttributeValueMapper 中。
3.2.5 要素裁剪
要素裁剪的目的是處理線、面要素相互之間的壓蓋關系,例如:設置等高線、柵欄線被道路、房屋裁剪;植被要素被地表房屋及地表房屋附屬設施裁剪;道路被植被、地表房屋、地表房屋附屬等裁剪。
通過預先定義裁剪規(guī)則,不但使得相應的地物之間不會產(chǎn)生壓蓋,而且在手工構面的過程中,能夠“跨越地物構面”。比如在構建花壇時,若其中有房屋,則不必創(chuàng)建環(huán)洞,可以直換將其包在內(nèi)部或者直換跨過房屋。這樣便極大的減少了手工構面的工作量,不需要裁剪的要素,可以通過設置特定的顏色屬性,以標識其不被其他地物裁剪。
要素裁剪前,先進行數(shù)據(jù)分流,通過TestFilter 轉換器,利用之前做好的圖層標記將不同圖層的數(shù)據(jù)分流。分流后的數(shù)據(jù)輸送到Clipper 轉換器的Clipper 和Clippee 入口中,進行要素之間的裁剪。
3.2.6 數(shù)據(jù)檢查與修改
數(shù)據(jù)檢查與修改的原則是:能夠由FME 自動處理的錯誤,交由FME 自動處理。FME 不能自動處理的錯誤則輸出報錯信息,交由人工處理。
數(shù)據(jù)檢查與修改穿插于整個數(shù)據(jù)轉換流程之中,檢查出的錯誤都以DWG 文件的形式貼回到中間數(shù)據(jù)進行修改,從而再次運行FME 進行轉換,形成迭代的過程,經(jīng)由兩三次修改、轉換,能夠極大程度減少數(shù)據(jù)中的錯誤,提高成果數(shù)據(jù)的質(zhì)量。主要內(nèi)容有:
1)修復構面失敗的要素。采用人工作業(yè)方式對復雜的面狀要素構面時,難免會出現(xiàn)錯誤,最常見的就是邊界線自相交、邊界不閉合,通過FME 的InterSector 和Snapper 轉換器可以處理修改大部分此類錯誤,而經(jīng)過以上處理仍無法修復的面狀要素,則通過AreaBuilder 轉換器的Rejected 和Incompleted 端口輸出寫入DWG 文件中作為錯誤標識,貼回中間數(shù)據(jù)進行修改或重新構面。
2)縫隙與微小面檢查。在中間數(shù)據(jù)中以特定的圖層繪制一個包含所有區(qū)域的“背景面”,以背景面裁剪圖中所有面狀地物,得到整個圖形的空白區(qū)域。將空白區(qū)域解聚合,計算面積,設定面積閾值可濾出面要素之間的微小縫隙;而將裁剪后的面狀要素計算面積并設置閾值可檢查出因裁剪產(chǎn)生的微小面??p隙與微小面可以通過寫模塊輸出到DWG 圖形作為檢查修改的標記。
3)壓蓋檢查。將需要檢查壓蓋的面狀地物輸出到AreaOnAreaOverLayer 轉換器,判斷輸出面要素的_overlaps 屬性,其大于1 時,表示此區(qū)域有面要素相互壓蓋,將其輸出到DWG 文件作為修改標識。
有些要素之間存在壓蓋是正常的,例如陽臺面要素壓蓋道路。因此可以將此類要素過濾,使其不參于壓蓋檢查,從而不對正常的壓蓋進行報錯。
3.2.7 數(shù)據(jù)輸出
建立FME 寫模塊,將經(jīng)上述步驟處理的數(shù)據(jù)依據(jù)所歸屬的要素圖層,寫入相應的SHP 文件中,形成初步的成果。
將FME 轉換生成的SHP 文件導入ArcGIS,在ArcGIS 中對其進行通常意義上的拓撲檢查、屬性檢查等,確保所有的錯誤都被消除,最后生成gdb 格式的成果數(shù)據(jù)。
本文針對秦皇島2018 年建成區(qū)1∶500 地形圖入庫的項目,基于FME 設計了詳細的數(shù)據(jù)處理、轉換方案,編寫了具有實際操作性的轉換模板,順利完成了600 余幅地形圖的入庫工作。
相比較應用第三方軟件的入庫方法,本文設計的方案及程序有以下優(yōu)點:
1)自主靈活。針對原始數(shù)據(jù)的特點及存在的問題,設計相應的算法,減少人工工作量。主要表現(xiàn)在面狀要素的自動構面、注記的自動提取等要素處理階段。同時在數(shù)據(jù)檢查階段也可以通過自定義規(guī)則,減少工作量。
2)集成度高。大部分數(shù)據(jù)預處理、檢查、修改工作都可以在FME 中一站式實現(xiàn),不需要分開到不同的軟件中分步進行。同時不需要對原始數(shù)據(jù)進行分幅,可以整個區(qū)域統(tǒng)一編輯、修改、轉換,也可自由分區(qū)域處理。
3)數(shù)據(jù)修改簡單。將報錯信息輸出到DWG 文件,作為標記粘貼回中間數(shù)據(jù),使數(shù)據(jù)的大部分修改工作在CASS 中進行,錯誤位置可通過標記直換定位到相應位置。由于在CASS 中進行圖形的編輯相較于在ArcGIS 中進行修改,會更加便捷和簡單,從而減少了作業(yè)人員的工作量。
同時,本方案也存在一些不足以待后續(xù)改進,例如:FME 自動生成的路中線仍須人工干預處理方可使用;縫隙檢查時,對于與大面積連通的細小縫隙難以檢查出來等。
總體來說,本文的思路以及具體的技術細節(jié)都具有一定的創(chuàng)新性和實用性,能夠給從事相關工作的測繪工作人員提供相應的借鑒與參考。