李浩,郭夢熾
(1.哈爾濱市勘察測繪研究院,黑龍江哈爾濱 150010; 2.哈爾濱數(shù)字城市科技有限公司,黑龍江哈爾濱 150010)
柵格地形圖批量輸出程序的設(shè)計與實現(xiàn)
李浩1,2?,郭夢熾1,2
(1.哈爾濱市勘察測繪研究院,黑龍江哈爾濱 150010; 2.哈爾濱數(shù)字城市科技有限公司,黑龍江哈爾濱 150010)
將DWG矢量地形圖轉(zhuǎn)為柵格地形圖,能夠有效解決測繪數(shù)據(jù)共享和分發(fā)中的數(shù)據(jù)安全問題。本文分析了在矢量地形圖轉(zhuǎn)為柵格地形圖過程中需要解決的問題,給出了解決方法。基于AutoCAD的ActiveX對象庫,在內(nèi)嵌的VBA開發(fā)環(huán)境下,開發(fā)了柵格地形圖批量輸出程序,解決了海量DWG矢量地形圖到柵格地形圖的快速轉(zhuǎn)換問題。
柵格地形圖;批量輸出;AutoCAD;VBA
城市大比例尺地形圖是城市地形的真實反應(yīng),在城市規(guī)劃、建設(shè)領(lǐng)域中起著舉足輕重的作用。目前,我國城市大比例尺地形圖大多以AutoCAD的DWG格式的形式存在。這種矢量數(shù)據(jù)的存儲模式,由于具有精確的空間位置信息,不利于測繪數(shù)據(jù)的安全共享與分發(fā)。將這種矢量數(shù)據(jù)模式的地形圖轉(zhuǎn)為柵格數(shù)據(jù)模式的地形圖,能夠在真實再現(xiàn)城市現(xiàn)勢地形特征的基礎(chǔ)上,避免空間地理坐標信息的暴露,對測繪數(shù)據(jù)的安全共享與分發(fā)具有重要意義。本文基于AutoCAD平臺,開發(fā)了柵格地形圖批量輸出程序,解決了海量DWG地形圖到柵格地形圖的快速轉(zhuǎn)換問題。
DWG格式的地形圖文件,往往一個文件就是一個圖幅。在一個圖幅內(nèi),包含了水系、居民地、道路、綠地等全要素數(shù)字線劃圖基本地形要素,各種要素一般按專題進行分類,每一類要素歸并到一個圖層中,并賦予規(guī)定的線型、線寬、顏色等符號特征。同時還具有標注、備注、圖廓等整飾元素。對于柵格地形圖,根據(jù)成圖以及拼圖需要,在輸出柵格地圖的時候,需要將某些地圖要素剔除,同時根據(jù)柵格地圖的特點,還需要調(diào)整矢量線劃圖的線型、顏色、標注字體等。面對大數(shù)據(jù)量的轉(zhuǎn)換工作,如果由人工完成,需要投入大量人力。因此,設(shè)計和實現(xiàn)批量轉(zhuǎn)換程序,具有重要意義。
根據(jù)某項目需求,需要將市域范圍內(nèi)所有DWG格式的矢量地形圖(1∶1 000比例尺,1∶2 000比例尺)統(tǒng)一轉(zhuǎn)為比例尺為1∶2 000的柵格地圖(TIF格式)。1∶1 000、1∶2 000地形圖分幅如圖1所示。其中,1∶1 000地形圖分幅按照實地0.5 km×0.4 km大小的單元格為一個幅面劃分,1∶2 000地形圖分幅按照實地1 km×1 km大小的單元格為一個幅面劃分,10幅1∶1 000地形圖正好可以劃分成2幅1∶2 000地形圖。為了保證柵格地圖的可視性,柵格地圖的地面分辨率設(shè)定為0.2 m。這樣,1∶2 000矢量地形圖對應(yīng)的1∶2 000柵格地圖的像素大小為5 000×5 000像素(1 km÷0.2 m/pixel=5 000 pixel),1∶1 000矢量地形圖對應(yīng)的1∶1 000柵格地圖的像素大小為2 500× 2 000像素(0.5 km÷0.2 m/pixel=2 500 pixel,0.4 km ÷0.2 m/pixel=2 500 pixel)。
圖1 1∶1 000、1∶2 000地形圖分幅
根據(jù)以上計算,每1幅1∶2 000矢量地形圖輸出為一張5 000×5 000像素的柵格圖片,每10幅1∶1 000矢量地形圖正好可以輸出為兩張5 000×5 000像素的柵格圖片(如圖1所示),最后將所有圖片按照空間位置拼接為一整張柵格地圖。批量輸出程序基于AutoCAD平臺,采用內(nèi)置VBA開發(fā)環(huán)境開發(fā)。
3.1 配置打印參數(shù)
由于AutoCAD默認的打印機配置中沒有TIF柵格文件的打印配置選項,因此我們首先需要配置這一選項,并且設(shè)置輸出TIF柵格文件的分辨率為5 000× 5 000像素,配置步驟如下所述:打開“Autodesk打印管理器”,在“Autodesk打印機管理器”中雙擊“添加打印機”向?qū)?,選擇下一步。在“添加打印機—開始”對話框中選擇“我的電腦”。選擇“下一步”,進入“添加打印機—打印機型號”對話框,在“生產(chǎn)商”列表中選擇“光柵文件格式”選項,在“型號”列表中選擇“TIFF Version 6(不壓縮)”選項,一直選擇“下一步”。在“添加打印機—完成”對話框中,點擊“編輯打印機配置”,進入“打印機配置編輯器”對話框中。在“設(shè)備和文檔設(shè)置”選項卡中選擇“自定義圖紙尺寸”,設(shè)置輸出柵格文件的長度為5 000,寬度為5 000,單位為像素。
3.2 導(dǎo)入圖形文件
ObjectDBX是AutoCAD為宿主程序(ACAD)、圖形文件(DWG)、用戶應(yīng)用程序(ARX)和用戶對象文件(DBX)之間的接口,利用ObjectDBX類型庫,可以在不打開CAD文件本身的前提下,對文件進行訪問、讀入、寫出等操作,是實現(xiàn)柵格地形圖批量輸出的關(guān)鍵。為了完整的導(dǎo)入外部圖形文件,需要將外部圖形文件的圖層、圖層屬性、實體對象、線型、文字樣式等對象全部導(dǎo)入到當前圖形文檔中。使用ObjectDBX對象的CopyObjects方法即可完成外部圖形文件各種對象的導(dǎo)入。下面的程序示例了從外部圖形文件中導(dǎo)入圖層strLayer中的全部圖元實體到當前模型空間。
3.3 制圖綜合
1∶1 000地形圖輸出為1∶2 000地形圖時,如不對圖元進行制圖綜合的操作,將導(dǎo)致1∶2 000地形圖圖面負載過大,造成讀圖判圖困難。為了保證輸出成果清晰可讀,又不影響數(shù)據(jù)的準確表達,定義如下制圖綜合規(guī)則:
(1)高程點、等高線抽稀??紤]到哈爾濱市地形比較平坦,通過程序?qū)Ω叱厅c、等高線統(tǒng)一進行抽稀,在不影響地形表達的前提下,可以很大程度地減少地圖負載。
高程點的抽稀方法為:將圖幅范圍內(nèi)的所有高程點存入選擇集,刪除原范圍內(nèi)的高程點,將選擇集內(nèi)的高程點展繪到幅面上。在展繪時,以將要展繪的高程點為中心,以給定的高程點間距為直徑,判斷該范圍內(nèi)是否有高程點,如果有,則不展繪此點,如果沒有,則展繪此點。
等高線抽稀采用判斷高程的方式進行。首先根據(jù)原圖等高距計算新圖的等高距,計算公式為:
新基本等高距=原等高距×編繪新圖比例尺/原圖比例尺
然后構(gòu)造圖幅范圍內(nèi)的等高線選擇集,在選擇集內(nèi),將高程是新基本等高距整數(shù)倍的等高線保留,不是整數(shù)倍的等高線進行刪除。
(2)刪除次要地物。刪除在1∶2 000地形圖中不需要表達的地物,如控制點、地下管線、管井、路燈、樓層注記等。具體操作為:通過程序以次要地物所在的圖層為過濾條件,構(gòu)造次要地物圖元對象的選擇集,遍歷選擇集中的每一個對象,通過對象的Delete方法將其刪除。
(3)符號替換。對于復(fù)雜的點狀符號,替換為簡單的點狀符號。對于密度大的填充符號,替換為密度小的填充符號。由于所有的符號都以圖塊的形式存在,每一類符號對應(yīng)唯一的一個圖塊名,因此,可以事先構(gòu)造替換符號的塊文件,然后建立原始符號塊名稱到替換符號塊名稱的映射表,通過程序遍歷圖幅范圍內(nèi)的塊,對照映射表,能夠快速實現(xiàn)符號替換。
3.4 地圖幅面整飾
當外部圖形文件全部導(dǎo)入到當前圖形文檔中后,需要根據(jù)事先制定的制圖原則對當前地圖幅面進行整飾,整飾的內(nèi)容包括:關(guān)閉某些不需要輸出的圖層對象,如骨架線圖層;去除原地形圖的圖廓;調(diào)整某些圖元的線型等,以滿足柵格地圖的輸出標準。
3.5 打印輸出
最后,根據(jù)3.1節(jié)設(shè)置的打印參數(shù),對當前地圖文檔的內(nèi)容進行輸出。在AutoCAD的ActiveX模型中,Plot對象的PlotToDevice方法使用指定的打印機打印指定的布局,PlotToFile方法則使用虛擬打印機將指定的布局打印到文件中。在本文中,使用PlotToFile方法,將當前文檔的指定區(qū)域輸出到TIF柵格文件中。下面的程序示例了如何進行指定區(qū)域輸出到TIF柵格文件中。
圖2為該程序的運行界面,圖3為加載的10幅1∶1 000DWG格式的地形圖,圖4、圖5為圖3所示的10幅DWG格式的地形圖輸出的2幅1∶2 000柵格地形圖。
圖2 程序運行界面
圖3 1∶1 000DWG地形圖
圖4 1∶2 000柵格地形圖I
圖5 1∶2 000柵格地形圖II
基于AutoCAD的ActiveX對象庫,在內(nèi)嵌的VBA開發(fā)環(huán)境下,開發(fā)了柵格地形圖批量輸出程序。運用此程序,綜合1∶1 000、1∶2 000結(jié)合表,自動完成了哈爾濱市域范圍內(nèi)1∶2 000柵格地形圖的輸出任務(wù)。輸出的柵格數(shù)據(jù)滿足規(guī)范設(shè)計要求,數(shù)據(jù)成果已應(yīng)用于某電子地圖應(yīng)用系統(tǒng)中,發(fā)揮了重要的經(jīng)濟效益和社會效益。
[1] 邵俊昌,李旭東.AutoCAD ObjectARX 2000開發(fā)技術(shù)指南[M].北京:電子工業(yè)出版社,2000
[2] 鄭立楷,盧擇臨,王成煌.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學出版社,2006
[3] 祝國瑞.地圖學[M].武漢:武漢大學出版社,2004
[4] 李乃良.基于AutoCAD的地形圖縮編中高程點自動抽稀方法的探討[J].城市勘測,2007(3);81~82
[5] 黃玉君,丁桂榮,鄧紅艷等.MicroStation環(huán)境下等高線綜合工具箱的開發(fā)[J].海洋測繪,2003,23(3);36~37
Design and Implementation of Raster Topographic Map Batch Exporting Program
Li Hao1,2,Guo MengChi1,2
(1.Haerbin Exploration and Surveying Institute,Haerbin 150010,China;2.Haerbin Digital City Science&Technology Co.,Ltd.Haerbin 150010,China)
The transformation from vector topographic map to raster topographic map is a effectual method for data security in survey data sharing and distributing.This paper analyses the problems of transformation from vector topographic map to raster topographic map,provides the solution,develops the raster topographic map batch exporting program under the built-in VBA development environment,based on ActiveX in AutoCAD,which works out the problem of quick vast switching from vector topographic map to raster topographic map.
Raster Topographic Map;Batch Exporting;AutoCAD;VBA
1672-8262(2010)06-125-04
P209
B
2010—03—30
李浩(1983—),男,工程師,主要從事地理信息系統(tǒng)相關(guān)技術(shù)工作。