孫振勇,劉少聰,張 燕
(1.長江水利委員會長江上游水文水資源勘測局,重慶 400014;2.重慶市南岸區(qū)國土資源管理分局,重慶 400000)
EPS2012平臺下基于水文標(biāo)準(zhǔn)的批量DWG轉(zhuǎn)換
孫振勇1,劉少聰1,張 燕2
(1.長江水利委員會長江上游水文水資源勘測局,重慶 400014;2.重慶市南岸區(qū)國土資源管理分局,重慶 400000)
分析了EPS2012的地理數(shù)據(jù)結(jié)構(gòu)表定義及信息映射機(jī)制,實(shí)現(xiàn)了在FeatureCodeTB表下,由國家基本比例尺圖式圖層到水文觀測圖式圖層的轉(zhuǎn)換;并利用VBScript編程技術(shù),實(shí)現(xiàn)了數(shù)字地形圖由edb格式到dwg格式的批量轉(zhuǎn)換。
EPS2012;信息映射;VBScript;批量輸出
清華山維公司的EPS2012地理信息工作站基礎(chǔ)平臺以數(shù)據(jù)庫為核心,綜合運(yùn)用CAD與GIS技術(shù),實(shí)現(xiàn)了信息化測繪、管理與更新一體化,建庫GIS 與出圖一體化,在數(shù)字化測圖軟件中表現(xiàn)良好。該平臺攜帶的腳本編輯器(VBScript)可以實(shí)現(xiàn)各種功能的二次開發(fā),為用戶提高了不少效率[1-2]。
EPS2012數(shù)據(jù)庫主要采用的是關(guān)系數(shù)據(jù)模型,使用Microsoft Office組件的Access就可打開。模板就是Access下的mdb ( Microsoft Database ) 數(shù)據(jù)庫,內(nèi)容包括地理數(shù)據(jù)結(jié)構(gòu)表定義、數(shù)據(jù)分層分色方案、編碼體系及符號化描述定義、系統(tǒng)環(huán)境用戶化設(shè)置以及用戶擴(kuò)展屬性表定義。模板不但是數(shù)據(jù)標(biāo)準(zhǔn)化的有力保證,而且體現(xiàn)了生產(chǎn)與技術(shù)相分離先進(jìn)理念以及與其他GIS平臺實(shí)現(xiàn)數(shù)據(jù)交換的信息映射機(jī)制[3-4]。一個模板的主要內(nèi)容包括系統(tǒng)環(huán)境設(shè)置、地理數(shù)據(jù)存儲、實(shí)體編碼特征及符號描述、用戶擴(kuò)展屬性[4]等方面。圖1為EPS2012空間數(shù)據(jù)信息映射關(guān)系圖。
長江三峽工程庫區(qū)重慶市主城區(qū)河段1∶5 000全程地形測量任務(wù)執(zhí)行的是GB/T 20257-2006《國家基本比例尺地圖圖式》,該標(biāo)準(zhǔn)下共有65個圖層。最終提交的成果需要入庫長江水文泥沙信息分析管理系統(tǒng),其執(zhí)行的標(biāo)準(zhǔn)共有27個圖層。由圖1可知,圖層對照轉(zhuǎn)換的實(shí)質(zhì)是模板下實(shí)體編碼特征及符號描述的改變,而其在系統(tǒng)環(huán)境設(shè)置、地理數(shù)據(jù)存儲、用戶擴(kuò)展屬性等方面的數(shù)據(jù)關(guān)系結(jié)構(gòu)是沒有改變的。
EPS平臺中任何一個點(diǎn)、線、面對象都有一個編碼屬性;并以編碼為主導(dǎo)定義了該編碼所代表的實(shí)體一系列其他屬性,諸如實(shí)體類型、所屬圖層、顏色、線型、線寬等,而這些都定義在FeatureCodeTB表中[4]。因此只需重新定義一個FeatureCodeTB表(為了區(qū)別原有FeatureCodeTB表,將其命名為FeatureCodeTBDwgout表),在該表下將數(shù)據(jù)定義為符合長江水文泥沙信息分析管理系統(tǒng)執(zhí)行的標(biāo)準(zhǔn)的27個圖層。輸出CAD時,執(zhí)行輸出FeatureCodeTBDwgout圖層,得到的DWD數(shù)據(jù)成果就符合水文標(biāo)準(zhǔn)圖層。表1[5]、表2為部分編碼在國家圖式標(biāo)準(zhǔn)與水文圖式標(biāo)準(zhǔn)的圖層對照。
圖1 EPS2012空間數(shù)據(jù)信息映射關(guān)系圖
若先提取出本項(xiàng)目工程中使用的編碼,在重新定義FeatureCodeTB編碼表時只需對參與的編碼進(jìn)行圖層上的轉(zhuǎn)換,可大大減少工作量。
EPS2012自身支持dwg格式輸出,但只能單幅輸出且會丟失大量的信息,不具實(shí)用性[1]。VBS腳本語言是EPS平臺二次開發(fā)的主要語言,通過腳本編程可進(jìn)行多項(xiàng)參數(shù)設(shè)置,實(shí)現(xiàn)批量輸出功能[7]。通過VBS腳本編程,可實(shí)現(xiàn)從上到下、從左至右順序批量分幅輸出符合長江水文泥沙信息分析管理系統(tǒng)的27個水文圖式圖層DWG成果。該程序關(guān)鍵代碼為:
表1 國家標(biāo)準(zhǔn)圖層部分編碼示例
表2 水文標(biāo)準(zhǔn)圖層部分編碼示例
SSProcess.SetDataXParameter "Version", "5000" '圖幅比例尺
SSProcess.SetDataXParameter "ExportPathName", fleName '輸出文件名
SSProcess.SetDataXParameter "ColorUseStatus", "0" '顏色使用狀態(tài)
SSProcess.SetDataXParameter "ExplodeObjLayerStatus", "0" '內(nèi)嵌符號輸出方式
SSProcess.SetDataXParameter "ExplodeObjColorStatus", "1" '數(shù)據(jù)輸出層名使用狀態(tài)
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數(shù)據(jù)時,線型生成是否啟用。0 (禁用) 1(啟用)
SSProcess.SetDataXParameter "AcadLinetype GenerateMode", "1"
'Acad圖塊輸出顏色使用方式。0 隨層 1 隨塊 2 隨塊內(nèi)實(shí)體
SSProcess.SetDataXParameter "AcadBlockUseColorMod", "0"
'DWG輸出模板
AcadDwtFileName = SSProcess.GetSysPathName (8) & "上游水文.dwt"
SSProcess.SetDataXParameter "AcadDwtFileName", AcadDwtFileName
'輸出層個數(shù),以及設(shè)定DWG圖層顯示順序
SSProcess.SetDataXParameter "ExportLayer" & CStr(AddOne(startIndex)), "DEFAULT"
SSProcess.SetDataXParameter "ExportLayer" & CStr(AddOne(startIndex)), "地貌和土質(zhì)"
… '總共定義27個圖層,本處省略
SSProcess.ExportData
'引用的數(shù)據(jù)結(jié)構(gòu)表,定義編碼的實(shí)體類型、所屬圖層、顏色、線型、線寬等其他屬性
'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
'得到所有圖幅中心坐標(biāo)
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)定制轉(zhuǎn)換方案一般的都會基于數(shù)據(jù)庫所使 用 的 系 統(tǒng) 表FeatureCodeTB、SymbolScriptTB、NoteTemplateTB表復(fù)制得到各自新的輸出方案表,并在新表中修改各對應(yīng)關(guān)系;而EPS2012環(huán)境下所使用的系統(tǒng)表始終保持不變,實(shí)現(xiàn)了作業(yè)環(huán)境和轉(zhuǎn)換環(huán)境的互相獨(dú)立,從而使轉(zhuǎn)換的定制完全不影響作業(yè)員的作業(yè)習(xí)慣。
2)利用VBScript編程腳本可實(shí)現(xiàn)更細(xì)膩的DWG數(shù)據(jù)轉(zhuǎn)換控制;逐一定制圖幅的各類參數(shù)信息,實(shí)現(xiàn)批量使用和輸出。
3)利用VBScript編程進(jìn)行mdb格式地形圖的DWG輸出,操作簡單、工作效率高、便于后期數(shù)據(jù)處理和管理。
[1] 覃豪杰,黃彩軍,方振華.清華山維EPS到南方CASS地形數(shù)據(jù)無損轉(zhuǎn)換研究[J].地理空間信息,2013,11(3):88-89,92
[2] 宋芒果.淺析CASS軟件的應(yīng)用現(xiàn)狀[J].工程與建設(shè),2009, 23(6):806-808
[3] 郭昕,武娟.基于C#語言的EPSW 與CASS 數(shù)據(jù)格式轉(zhuǎn)換[J].北京測繪,2009(4):78-80,84
[4] 王彥紅,于海燕,孫洪義.淺談北京清華山維軟件模板控制技術(shù)的應(yīng)用[J].黑龍江科技信息,2003(2):29
[5] GB/T 20257-2006. 國家基本比例尺地圖圖式 [S].
[6] 楊忠寶,康順哲. VB語言程序設(shè)計(jì)教程[M].北京:人民郵電出版社,2010
[7] 王棋,王帥,趙海洋.基于EPS中VBScript二次開發(fā)在地籍處理中的應(yīng)用[J].測繪與空間地理信息,2011,34(6):191-193
P208
:B
:1672-4623(2016)11-0049-03
10.3969/j.issn.1672-4623.2016.11.018
孫振勇,工程師,注冊測繪師,從事水文測驗(yàn)、河道勘測等工作。
2015-08-03。