楊玉川


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