孫振勇,劉少聰,張 燕
(1.長江水利委員會長江上游水文水資源勘測局,重慶 400014;2.重慶市南岸區國土資源管理分局,重慶 400000)
EPS2012平臺下基于水文標準的批量DWG轉換
孫振勇1,劉少聰1,張 燕2
(1.長江水利委員會長江上游水文水資源勘測局,重慶 400014;2.重慶市南岸區國土資源管理分局,重慶 400000)

分析了EPS2012的地理數據結構表定義及信息映射機制,實現了在FeatureCodeTB表下,由國家基本比例尺圖式圖層到水文觀測圖式圖層的轉換;并利用VBScript編程技術,實現了數字地形圖由edb格式到dwg格式的批量轉換。
EPS2012;信息映射;VBScript;批量輸出
清華山維公司的EPS2012地理信息工作站基礎平臺以數據庫為核心,綜合運用CAD與GIS技術,實現了信息化測繪、管理與更新一體化,建庫GIS 與出圖一體化,在數字化測圖軟件中表現良好。該平臺攜帶的腳本編輯器(VBScript)可以實現各種功能的二次開發,為用戶提高了不少效率[1-2]。
EPS2012數據庫主要采用的是關系數據模型,使用Microsoft Office組件的Access就可打開。模板就是Access下的mdb ( Microsoft Database ) 數據庫,內容包括地理數據結構表定義、數據分層分色方案、編碼體系及符號化描述定義、系統環境用戶化設置以及用戶擴展屬性表定義。模板不但是數據標準化的有力保證,而且體現了生產與技術相分離先進理念以及與其他GIS平臺實現數據交換的信息映射機制[3-4]。一個模板的主要內容包括系統環境設置、地理數據存儲、實體編碼特征及符號描述、用戶擴展屬性[4]等方面。圖1為EPS2012空間數據信息映射關系圖。
長江三峽工程庫區重慶市主城區河段1∶5 000全程地形測量任務執行的是GB/T 20257-2006《國家基本比例尺地圖圖式》,該標準下共有65個圖層。最終提交的成果需要入庫長江水文泥沙信息分析管理系統,其執行的標準共有27個圖層。由圖1可知,圖層對照轉換的實質是模板下實體編碼特征及符號描述的改變,而其在系統環境設置、地理數據存儲、用戶擴展屬性等方面的數據關系結構是沒有改變的。
EPS平臺中任何一個點、線、面對象都有一個編碼屬性;并以編碼為主導定義了該編碼所代表的實體一系列其他屬性,諸如實體類型、所屬圖層、顏色、線型、線寬等,而這些都定義在FeatureCodeTB表中[4]。因此只需重新定義一個FeatureCodeTB表(為了區別原有FeatureCodeTB表,將其命名為FeatureCodeTBDwgout表),在該表下將數據定義為符合長江水文泥沙信息分析管理系統執行的標準的27個圖層。輸出CAD時,執行輸出FeatureCodeTBDwgout圖層,得到的DWD數據成果就符合水文標準圖層。表1[5]、表2為部分編碼在國家圖式標準與水文圖式標準的圖層對照。

圖1 EPS2012空間數據信息映射關系圖
若先提取出本項目工程中使用的編碼,在重新定義FeatureCodeTB編碼表時只需對參與的編碼進行圖層上的轉換,可大大減少工作量。
EPS2012自身支持dwg格式輸出,但只能單幅輸出且會丟失大量的信息,不具實用性[1]。VBS腳本語言是EPS平臺二次開發的主要語言,通過腳本編程可進行多項參數設置,實現批量輸出功能[7]。通過VBS腳本編程,可實現從上到下、從左至右順序批量分幅輸出符合長江水文泥沙信息分析管理系統的27個水文圖式圖層DWG成果。該程序關鍵代碼為:

表1 國家標準圖層部分編碼示例

表2 水文標準圖層部分編碼示例
SSProcess.SetDataXParameter "Version", "5000" '圖幅比例尺
SSProcess.SetDataXParameter "ExportPathName", fleName '輸出文件名
SSProcess.SetDataXParameter "ColorUseStatus", "0" '顏色使用狀態
SSProcess.SetDataXParameter "ExplodeObjLayerStatus", "0" '內嵌符號輸出方式
SSProcess.SetDataXParameter "ExplodeObjColorStatus", "1" '數據輸出層名使用狀態
SSProcess.SetDataXParameter "ChangeNoteAlignment", "FontClass_Sx8=0" '修改對齊方式
SSProcess.SetDataXParameter "FontWidthScale", "0.707" ',FontClass_Sx8=1
SSProcess.SetDataXParameter "FontHeightScale", "0.707" ',FontClass_Sx8=1
SSProcess.SetDataXParameter "SymbolExplodeMode", "1" 'DWG輸出線形比例
SSProcess.SetDataXParameter "AcadLineWidthMode", "1"
'輸出AutoCAD數據時,線型生成是否啟用。0 (禁用) 1(啟用)
SSProcess.SetDataXParameter "AcadLinetype GenerateMode", "1"
'Acad圖塊輸出顏色使用方式。0 隨層 1 隨塊 2 隨塊內實體
SSProcess.SetDataXParameter "AcadBlockUseColorMod", "0"
'DWG輸出模板
AcadDwtFileName = SSProcess.GetSysPathName (8) & "上游水文.dwt"
SSProcess.SetDataXParameter "AcadDwtFileName", AcadDwtFileName
'輸出層個數,以及設定DWG圖層顯示順序
SSProcess.SetDataXParameter "ExportLayer" & CStr(AddOne(startIndex)), "DEFAULT"
SSProcess.SetDataXParameter "ExportLayer" & CStr(AddOne(startIndex)), "地貌和土質"
… '總共定義27個圖層,本處省略
SSProcess.ExportData
'引用的數據結構表,定義編碼的實體類型、所屬圖層、顏色、線型、線寬等其他屬性
'SSProcess.SetFeatureCodeTB "FeatureCodeTBDwgout", "SymbolScriptTB_10000"
'SSProcess.SetNotetemplateTB "NoteTemplateTB_10000"
End Function
Sub OnClick() '腳本程序主入口
SSProcess.MapMethod "LoadData","圖廓層"
SSProcess.ClearSelection
SSProcess.ClearSelectCondition
SSProcess.SetSelectCondition "SSObj_Code", "==", "5000" '圖廓編碼
SSProcess.SetSelectCondition "
SSProcess.SelectFilter
frameCount =SSProcess.GetSelGeoCount
if frameCount <= 0 then
msgbox "沒有圖廓!"
exit sub
end if
'msgbox frameCount
pathName = SSProcess.SelectPathName( )
If pathName = "" Then
Exit Sub
End If
'得到所有圖幅中心坐標
dim px(1000)
dim py(1000)
For j=0 To frameCount-1
id = SSProcess.GetSelGeoValue (j, "SSObj_ID" )
'msgbox id
SSProcess.GetObjectFocusPoint id, x, y
px(j) = x
py(j) =y
Next
For i=0 To frameCount-1
'id = SSProcess.GetSelGeoValue (i, "SSObj_ID" )
'msgbox id
'SSProcess.GetObjectFocusPoint id, x, y
SSProcess.SetCurMapFrame px(i), py(i), 0, ""
frameID = SSProcess.GetCurMapFrame()
'mapNumber = SSProcess.GetObjectAttr( CLng(frameID), "[分子]")
fuzhu = SSProcess.GetObjectAttr( CLng(frameID), "[圖幅名稱]")
If fuzhu <> "" Then
fleName = pathName & fuzhu & ".DWG"
ExportDwg fleName
End If
Next
msgbox "輸出完畢!共輸出DWG圖 "&frameCount&" 幅"
SSProcess.FreeMapFrame
End Sub
1)定制轉換方案一般的都會基于數據庫所使 用 的 系 統 表FeatureCodeTB、SymbolScriptTB、NoteTemplateTB表復制得到各自新的輸出方案表,并在新表中修改各對應關系;而EPS2012環境下所使用的系統表始終保持不變,實現了作業環境和轉換環境的互相獨立,從而使轉換的定制完全不影響作業員的作業習慣。
2)利用VBScript編程腳本可實現更細膩的DWG數據轉換控制;逐一定制圖幅的各類參數信息,實現批量使用和輸出。
3)利用VBScript編程進行mdb格式地形圖的DWG輸出,操作簡單、工作效率高、便于后期數據處理和管理。
[1] 覃豪杰,黃彩軍,方振華.清華山維EPS到南方CASS地形數據無損轉換研究[J].地理空間信息,2013,11(3):88-89,92
[2] 宋芒果.淺析CASS軟件的應用現狀[J].工程與建設,2009, 23(6):806-808
[3] 郭昕,武娟.基于C#語言的EPSW 與CASS 數據格式轉換[J].北京測繪,2009(4):78-80,84
[4] 王彥紅,于海燕,孫洪義.淺談北京清華山維軟件模板控制技術的應用[J].黑龍江科技信息,2003(2):29
[5] GB/T 20257-2006. 國家基本比例尺地圖圖式 [S].
[6] 楊忠寶,康順哲. VB語言程序設計教程[M].北京:人民郵電出版社,2010
[7] 王棋,王帥,趙海洋.基于EPS中VBScript二次開發在地籍處理中的應用[J].測繪與空間地理信息,2011,34(6):191-193
P208
:B
:1672-4623(2016)11-0049-03
10.3969/j.issn.1672-4623.2016.11.018
孫振勇,工程師,注冊測繪師,從事水文測驗、河道勘測等工作。
2015-08-03。