楊玉川


摘要:隨著測繪地理信息行業的持續發展,新型地形圖生產和應用對測繪數據提出了更高的要求。本論述結合當前測繪行業中制圖與建庫數據圖庫一體化生產的實際需要,通過對Microstation V7 DGN數據及山維EPS數據兩種數據格式在結構和符號表達方面進行分析,在EPS平臺環境下利用模板控制技術和編程的方法,采用建立數據對照關系和VbScript腳本的方法,實現了dgn數據到eps數據之間的轉換,極大地提高了數據的交互利用和測繪產品的生產效率,可為今后跨平臺數據轉換提供參考經驗。
關鍵詞: Microstation V7;山維EPS;數據格式轉換;VBScript腳本
中圖分類號:P208???????????? 文獻標志碼:A
Microstation V7是一個可互操作的CAD平臺,該平臺編輯的圖形格式為dgn。該平臺提供完善的工具和開發環境,廣泛應用于航測數字測圖以及地形圖編繪[1]。山維EPS平臺則綜合圖形繪制平臺(CAD)技術與地理信息系統(GIS)技術,以數據庫為核心,將圖形和屬性一體化,從生產源頭支持測繪成果的信息化,實現測量外業、內業、入庫的一體化[2]。由于Microstation 與EPS 采用的是不同的數據組織方式和數據格式,二種數據之間不能直接進行交互轉換,為圖庫一體化生產和數據深加工帶來諸多不便。本論述通過分析兩種不同的圖形數據結構和符號表達方式,主要探索利用EPS模板控制技術和 VbScript 腳本將 Microstation V7版本的 dgn格式數據轉換為EPS軟件的格式數據的方法,實現數據交互利用。
1 Microstation圖形數據結構分析
在 Microstation 軟件中,層管理器和層顯示器為創建的圖形元素提供高效的管理辦法,用戶可以將創建好的圖形元素分別指定在不同的層中,也可以在定義好的層中添加圖形元素,從而對各元素實現集成且高效的管理[3]。圖形數據之間則通過層、線型、顏色、線寬進行管理,單元、線、面、注記等要素通過線型庫和單元庫進行定義。
在 Microstation 中使用符號時,必須首先連接相應的符號庫、單元庫和字體庫。用戶可以結合自身生產現狀,遵照《1∶500、1∶1000、1∶2000地形圖圖式》和《1∶500、1∶1000、1∶2000地形圖要素編碼》,通過單元庫編輯和線型編輯器對單元庫文件和線型庫文件進行定義和編輯,實現要素的規范化表達和標準制定。
2 EPS 圖形數據結構分析
在EPS平臺中所有點、線、面對象都有一個唯一編碼(Code),平臺通過編碼特征屬性表FeatureCodeTB和 SymbolScriptTB來管理和定義數據要素,兩表之間則以 Code(編碼)為紐帶。符號描述表中,EPS利用字符代碼作為描述語言來繪制點、線、面、注記等要素,描述語言定義符號樣式、線型、填充樣式及復雜地物的嵌套關系;編碼特征屬性表中,則定義編碼的符號化描述,并以編碼為主導定義該編碼所代表的實體,諸如實體類型、所屬圖層、顏色、線型、線寬等其他屬性[4]。
3轉換思路
在 EPS 平臺中,利用 VbScript 腳本打開要轉換的 Microstation 文件,讀取要轉換的所有圖形元素,利用 SSProcess.GetSelGeoValue()和SSProcess.GetSelNoteVal? ue()方法獲得元素的選擇集。根據數據特點對匹配條件進行設置,判斷獲得的元素是哪一種類型的元素:直線、線串、復雜鏈、多邊形、復雜多邊形、弧、曲線、橢圓、單元、共享單元、文本節點、文本等,然后根據模板中類型、圖層、顏色、線型、單元等對照關系,獲取epscode編碼,完成數據的轉換[5]。
4數據格式轉換
4.1模板定制
EPS工程模板作為EDB文件的基礎,是一種Acess 文件型數據庫,全面定義了EDB文件數據結構,包括地物編碼、要素樣式、基本屬性、擴展屬性等[6]。基于EPS 中 FeatureCodeTB 表,根據 Microstation 中要素的層名,顏色、線型、單元名等,定制地物要素轉換對照表Featu? reCodeTB_DGNIN(見表1所列),及其注記要素轉換對照表 NoteTemplateTB_DGNIN(見表2所列),用于數據轉換時與epscode編碼的對照[5]。
4.2數據轉換腳本實現
在山維EPS軟件腳本環境中,采用VBScript編寫數據格式轉換腳本,根據數據實際情況定制相應的數據對照模板,通過條件匹配,將DGN數據一一對應轉換為 EPS 的編碼數據,實現不同格式數據的無損轉換。
4.2.1對象獲取
通過SSProcess.GetSelGeoValue()函數獲取對象類型,對需要調入的數據進行分類處理,獲取對象的符號類型、層名、DGN 線型名稱、單元名稱和顏色號等信息。該功能主要代碼如下:
SSObj_Type= SSProcess.GetSelGeoValue(i, "SSObj _ Type")
SSObj_LayerName= SSProcess.GetSelGeoValue (i, "SSObj_LayerName")
DGNLineStyleName= SSProcess.GetSelGeoValue (i, "[DGNLineStyleName]")
DgnCellName= SSProcess.GetSelGeoValue(i, "[DgnCellName]")
DgnColorIndex= SSProcess.GetSelGeoValue(i, "[DgnColorIndex]")8FFE0822-1633-45AD-A29B-D42F973F03ED
4.2.2點編碼對照
設置點類型匹配條件,對類型為點的對象,若層名與調入表中的相符,單元名稱與調入表中的別名相符,顏色與調入表中的色號相符,則獲取調入表相符的 Code編碼。點要素匹配條件主要代碼如下:
condition ="Feature.GeoType=0 and Feature.Layer? Name ='"& SSObj_LayerName &"'and Feature.Byname ='"& DgnCellName &"'"&"and Feature.LineColor ="& DgnColorIndex
epscode = SSProcess.FindFeatureCode("FeatureCo? deTB_DGNIN", condition)
若匹配條件獲取的編碼不為空,則設置獲取對象的ID,對象名稱、X方向縮放系數和Y方向縮放系數,并將獲取的eps編碼賦值給該要素,完成數據轉換。要素賦值代碼如下:
SSProcess.SetSelGeoValue i, "SSObj_ID", "0"? SSProcess.SetSelGeoValue i, "SSObj_Name", "" SSProcess.SetSelGeoValue i, "SSObj_ScaleX", "1"
SSProcess.SetSelGeoValue i, "SSObj_ScaleY", "1"
SSProcess.ResetSelGeoByCode i, CLng(epscode)4.2.3線要素編碼對照
設置線要素匹配條件,對類型不為點且是否反向為1對象,若層名與調入表中的相符,別名與線型一致,調入表中色號與DGN色號一致,則獲取調入表相符的 Code編碼。線要素匹配條件主要代碼如下:
condition="Feature.GeoType<>0 and Feature.Re? verse =1 and Feature.LayerName ='"& SSObj_LayerName &"'and Feature.Byname ='"& DGNLineStyleName &"'and Feature.LineColor ="& DgnColorIndex &""
SSProcess.ResetSelGeoByCode i, CLng(epscode)4.2.4注記要素編碼對照
通過 SSProcess.GetSelNoteCount 函數獲取注記數量,對注記進行遍歷,獲取注記的層面和顏色,設置匹配條件,若與對照表中的層名和顏色相符,則獲取條件相符的注記分類號。注記要素匹配條件主要代碼如下:
noteCount = SSProcess.GetSelNoteCount
NoteLayerName=SSProcess.GetSelNoteValue(i, "SSObj_LayerName")NoteColor = SSProcess.GetSelNote? Value(i, "[DgnColorIndex]")
matchConditions ="NoteTemplate.LayerName='"& NoteLayerName &"' and NoteTemplate.FontColor ="& NoteColor'
fontclass=SSProcess.FindNoteClass("NoteTempla? teTB_DGNIN", matchConditions )
5結束語
本論述通過探討分析Microstation 和EPS 的圖形數據結構,應用EPS模板對照技術,采用VbScript腳本的方式,提出一套完整的Microstation DGN 到山維EPS地形要素無損轉換的解決方案,實現兩種數據格式之間的轉換,提高數據的交互利用,可為今后同類項目的建設提供參考經驗。
參考文獻:
[1]劉朋俊,尚俊玲,李引生,等.Microstation 軟件在數字地形圖測繪中的應用[J].勘察科學技術,2007(3):50-52.
[2]李其龍.清華山維EPS 內外業一體化的操作與應用[C]//云南省測繪地理信息學會2017年學術年會論文集,2017.
[3]王昌翰,何德平.DGN數據到ARC/IFO數據轉換[J].城市勘測,2007(2):22-24.
[4]覃豪杰,黃彩軍,方振華.清華山維EPS到南方CASS地形數據無損轉換研究[J].地理空間信息,2013,11(3):88-89,92,3.
[5]張敏,林君強.基于模板對照的EPS到CASS 的全要素無損轉換[J].龍巖學院學報,2019,37(2):14-18.
[6]蔡云鐙.淺議EPS至CAD數據轉換中的信息映射機制[J].科技展望,2015,25(17):116,118.8FFE0822-1633-45AD-A29B-D42F973F03ED