覃豪杰,黃彩軍,方振華
(1. 廣西國(guó)土測(cè)繪院,廣西 南寧530023;2. 南寧市勘察測(cè)繪地理信息院,廣西 南寧 530001)
清華山維EPS2008是數(shù)據(jù)采集、處理、制圖一體化的地理信息工作站套件,它的易用、高效與擴(kuò)展性使其在國(guó)內(nèi)測(cè)繪行業(yè)占據(jù)了一定的市場(chǎng)。得益于AutoCAD在設(shè)計(jì)業(yè)的廣泛應(yīng)用,其與AutoCAD南方CASS的DWG文件格式的通用性更強(qiáng)[1,2],而EPS的EDB格式在業(yè)界的認(rèn)可度較低。因此,要推廣應(yīng)用EPS套件必須解決EDB到DWG文件格式的轉(zhuǎn)換。本文以EPS2008和CASS2008版本為例子,探討了EPS到CASS的數(shù)據(jù)無(wú)損轉(zhuǎn)換問(wèn)題。
EPS2008自身支持DWG格式導(dǎo)出功能,但會(huì)丟失大量的信息而不具實(shí)用性。EPS提供了描述語(yǔ)言、工程模板、腳本程序等強(qiáng)大的功能模塊[3],利用這些靈活的EPS核心機(jī)制,對(duì)制圖表達(dá)和轉(zhuǎn)換過(guò)程進(jìn)行全方位的定制,使得無(wú)損轉(zhuǎn)換成為可能。
EPS描述語(yǔ)言是利用字符代碼來(lái)繪制點(diǎn)、線、面、注記,描述地形要素的一種機(jī)制。描述語(yǔ)言定義了符號(hào)樣式、線型、填充樣式及復(fù)雜地物的嵌套關(guān)系。EPS工程模板作為EDB文件的基礎(chǔ),是一種Access文件型數(shù)據(jù)庫(kù),全面定義了EDB文件數(shù)據(jù)結(jié)構(gòu),包括地物編碼、要素樣式、基本屬性、擴(kuò)展屬性等[4]。VBS腳本編程語(yǔ)言是EPS平臺(tái)二次開發(fā)的主要語(yǔ)言,通過(guò)腳本編程可以進(jìn)行隱藏參數(shù)設(shè)置,突破了EPS原來(lái)導(dǎo)出功能的限制[5]。
一個(gè)完整的地形數(shù)據(jù)無(wú)損轉(zhuǎn)換應(yīng)包括點(diǎn)、線、面、文本、復(fù)雜嵌套地物、屬性、編碼等諸多要素的轉(zhuǎn)換。在一般的地理制圖中,地形地物極少用面來(lái)表達(dá),故面狀數(shù)據(jù)的轉(zhuǎn)換不納入本文探討的范圍內(nèi)。具體的轉(zhuǎn)換思路如圖1所示。
圖1 EPS到CASS地形數(shù)據(jù)無(wú)損轉(zhuǎn)換流程圖
圖1 中,基本屬性包括各圖形要素的圖層、顏色、符號(hào)轉(zhuǎn)向、線型、字體等屬性,EPS能夠很好地在轉(zhuǎn)換工作中傳遞這些屬性。經(jīng)EPS腳本導(dǎo)出DWG文件后,要通過(guò)套用CASS模板還原正確的線型及圖塊樣式。
全部工作分為制圖表達(dá)一致性匹配、模板定制及腳本編程3大部分。制圖表達(dá)的一致性是指同一地物要素在不同的制圖系統(tǒng)中采用完全一致的點(diǎn)、線、面或組合來(lái)表達(dá)。制圖表達(dá)一致性匹配是按CASS中地形地物默認(rèn)的樣式來(lái)修改EPS制圖表達(dá)的過(guò)程,是實(shí)現(xiàn)2個(gè)平臺(tái)數(shù)據(jù)兼容互換的重要前提;模板定制包括編碼對(duì)照、圖層對(duì)照及屬性配置;EPS腳本用來(lái)對(duì)轉(zhuǎn)換參數(shù)進(jìn)行定制及對(duì)轉(zhuǎn)換過(guò)程進(jìn)行控制。這3個(gè)機(jī)制聯(lián)系緊密,共同參與完成轉(zhuǎn)換過(guò)程,如圖2所示。
圖2 EPS到CASS無(wú)損轉(zhuǎn)換流程圖
2.2.1 一致性匹配
較常見(jiàn)的不一致是某些符號(hào)中心點(diǎn)點(diǎn)位不一樣,導(dǎo)致位置偏移,此時(shí)需要修改符號(hào)的中心位置,一個(gè)典型的例子就是天然草地符號(hào)[6],如表1所示。
表1 天然草地符號(hào)描述修改示例
EPS中有些要素用線表示,而CASS用點(diǎn),需在導(dǎo)出時(shí)把線打散轉(zhuǎn)為點(diǎn),典型的例子就是水流向符號(hào)[6],見(jiàn)表2。
表2 水流向地符號(hào)描述修改示例
另外,EPS中某些復(fù)雜的嵌套要素,需要在模板中設(shè)置該地物的隱藏屬性,使導(dǎo)出時(shí)自動(dòng)打散為與CASS相同的點(diǎn)、線或注記的組合樣式,表3為棚房[6]圖式示例。
表3 棚房圖式匹配修改示例
2.2.2 對(duì)照表的制作
模板中的FeatureCodeTB表儲(chǔ)存了數(shù)據(jù)轉(zhuǎn)換的對(duì)照信息。為了實(shí)現(xiàn)符號(hào)、線型、編碼及圖層等屬性的對(duì)照轉(zhuǎn)換,需要在FeatureCodeTB表中對(duì)地物進(jìn)行逐一匹配,見(jiàn)表4。
表4 EPS到CASS符號(hào)屬性對(duì)照表
表4中Code字段定義的是轉(zhuǎn)換前的EPS編碼;ObjectName字段定義的是轉(zhuǎn)換后的CASS編碼名稱;當(dāng)?shù)匚餅辄c(diǎn)時(shí)ByName字段定義的是CASS圖塊名稱,當(dāng)?shù)匚餅榫€時(shí)ByName字段定義的是CASS線型名稱;Layer字段定義的是地物轉(zhuǎn)換后所放置的CASS圖層名稱。
另外,為了實(shí)現(xiàn)注記的編碼、字體、高寬及圖層等信息的對(duì)照轉(zhuǎn)換,需在模板中的NoteTemplateTB數(shù)據(jù)表中配置文本數(shù)據(jù)的轉(zhuǎn)換參數(shù)信息,如表5所示。
表5 EPS到CASS注記對(duì)照表
表5中FontClass為轉(zhuǎn)換前的EPS注記分類名稱,Byname為轉(zhuǎn)換后的CASS編碼名稱,F(xiàn)ontName為CASS字體名稱,F(xiàn)ontWidth為CASS的字體寬度,F(xiàn)ontHeight為CASS的字體高度,Layer為注記的CASS圖層名稱。
2.2.3 VBS轉(zhuǎn)換腳本編寫[7]
通過(guò)VBS腳本編程擴(kuò)展EPS的DWG導(dǎo)出功能,結(jié)合定制好的模板,實(shí)現(xiàn)參數(shù)的自動(dòng)化配置,關(guān)鍵的語(yǔ)句如下:
SSProcess.SetDataXParameter "DataType", "1" ' 設(shè)置導(dǎo)出數(shù)據(jù)類型,參數(shù)1代表類型為DWG
SSProcess.SetDataXParameter "FeatureCodeTBName","FeatureCodeTB" ' 設(shè)置編碼對(duì)照信息表名稱
SSProcess.SetDataXParameter "SymbolScriptTBName","SymbolScriptTB" ' 設(shè)置符號(hào)描述表名稱
SSProcess.SetDataXParameter "NoteTemplateTBName","NoteTemplateTB" ' 設(shè)置注記轉(zhuǎn)換對(duì)照表名稱
SSProcess.SetDataXParameter "SymbolExplodeMode","1" ' 按模板設(shè)置將復(fù)雜嵌套地物打散
SSProcess.SetDataXParameter "ExplodeObjMakeGroup","1" ' 復(fù)雜地物打散后轉(zhuǎn)換為CAD組合
SSProcess.SetDataXParameter "AcadLinFileName","C:Program FilesCASS2008SYSTEMACADISO.LIN"
' 引用默認(rèn)的CASS2008的線型庫(kù)
' 下面為每個(gè)層的點(diǎn)線和注記配置轉(zhuǎn)換參數(shù):
SSProcess.SetDataXParameter "TableFieldDef1", "JM D,0,Code,Code,south:1000,ObjectName,,dbText,100,0"
' 轉(zhuǎn)換居民地點(diǎn)層的編碼到CAD的擴(kuò)展屬性
SSProcess.SetDataXParameter "TableFieldDef2", "JM D,1,Code,Code,south:1000,ObjectName,,dbText,100,0"
' 轉(zhuǎn)換居民地線層的編碼到CAD的擴(kuò)展屬性
SSProcess.SetDataXParameter "TableFieldDef3", "JM D,3,Code,Code,south:1000,ByName,,dbText,100,0"
' 轉(zhuǎn)換居民地注記層的編碼到CAD的擴(kuò)展屬性
' 按以上格式配置其他圖層……
SSProcess.ExportData
' 執(zhí)行數(shù)據(jù)轉(zhuǎn)換
本次轉(zhuǎn)換充分利用了EPS平臺(tái)提供的擴(kuò)展特性,綜合多種手段實(shí)現(xiàn)把EPS地形數(shù)據(jù)無(wú)損轉(zhuǎn)換到CASS平臺(tái),使復(fù)雜的轉(zhuǎn)換過(guò)程變得簡(jiǎn)單、準(zhǔn)確。本方法不依靠第三方平臺(tái)來(lái)完成轉(zhuǎn)換,直接輸出DWG,不需要生成中間格式,減少了轉(zhuǎn)換步驟,避免數(shù)據(jù)損耗,具有極高的轉(zhuǎn)換效率。
[1]李會(huì)剛. 異構(gòu)數(shù)據(jù)集成相關(guān)技術(shù)及其比較研究[J]. 硅谷,2012(7):64-65
[2]宋芒果. 淺析CASS軟件的應(yīng)用現(xiàn)狀[J]. 工程與建設(shè),2009(6):806-808
[3]琚鋒,錢強(qiáng)強(qiáng),錢中杰. 清華山維SunwayGIS與南方CASS數(shù)據(jù)轉(zhuǎn)換研究[J].地理空間信息,2011,9(3):41-43
[4]王彥紅,于海燕.淺談北京清華山維軟件模板控制技術(shù)的應(yīng)用[J].黑龍江科技信息,2003(2):29
[5]王棋,王帥,趙海洋. 基于EPS中VBScript二次開發(fā)在地籍處理中的應(yīng)用[J].測(cè)繪與空間地理信息,2011,34(6):191-193
[6]GB/T 20257.國(guó)家基本比例尺地圖圖式[S].
[7]楊忠寶,康順哲. VB語(yǔ)言程序設(shè)計(jì)教程[M].北京:人民郵電出版社,2010