高壽峰 楊欣
1. 安徽省第四測(cè)繪院 安徽 合肥 230031;2. 合肥工業(yè)大學(xué) 安徽 合肥 230009
隨著計(jì)算機(jī)技術(shù)和地圖編制技術(shù)的不斷發(fā)展,現(xiàn)代制圖技術(shù)和手段也在不斷發(fā)展和變化,針對(duì)不同的制圖需求,采用了不同的地圖編制技術(shù)。在地圖編制過(guò)程中,較多采用兩種編圖模式,一種是傳統(tǒng)的GIS軟件模式,比如ArcGIS、MapGIS等GIS平臺(tái),另外一種模式是平面設(shè)計(jì)軟件模式,比如采用CorelDRAW和Illustrator等平臺(tái)進(jìn)行編輯制圖[1]。GIS軟件作為制圖軟件,作為應(yīng)急制圖的應(yīng)用較多,而作為以印刷為目的編圖任務(wù),盡管基礎(chǔ)數(shù)據(jù)的處理采用GIS軟件進(jìn)行,但是編圖平臺(tái)還是采用了CorelDRAW等平面設(shè)計(jì)軟件。CorelDRAW作為一款平面圖形處理軟件,近年來(lái),版本不斷推陳出新,功能也不斷強(qiáng)大,但是作為一個(gè)通用的平面設(shè)計(jì)圖形處理軟件,并未考慮到地圖編制過(guò)程中GIS格式數(shù)據(jù)的交互性,導(dǎo)致地圖編制人員只能采用CorelDRAW支持圖形交換格式DXF進(jìn)行數(shù)據(jù)的導(dǎo)入。
在傳統(tǒng)的數(shù)據(jù)交換中,將GIS數(shù)據(jù)轉(zhuǎn)換為DXF,此格式是AutoCAD繪圖交換格式,導(dǎo)出后原始屬性、圖層等信息都無(wú)法保存,僅僅把數(shù)據(jù)的幾何圖形信息保存下來(lái)。然后利用CorelDRAW導(dǎo)入DXF文件功能導(dǎo)入數(shù)據(jù)[2]。該方法使用較廣,但是數(shù)據(jù)信息損失較多,特別是點(diǎn)要素在AutoCAD中是塊的定義,而在CorelDRAW中是點(diǎn)符號(hào)進(jìn)行表達(dá),軟件之間要素的定義不兼容,導(dǎo)致了轉(zhuǎn)換數(shù)據(jù)的時(shí)候只能轉(zhuǎn)換其表征特點(diǎn),DXF中點(diǎn)符號(hào)導(dǎo)入CorelDRAW后變?yōu)橐粋€(gè)或多個(gè)圓圖形,造成了后期編輯的復(fù)雜性。此外,為了解決圖層信息丟失的問(wèn)題,常常把GIS數(shù)據(jù)先按照屬性拆分為單個(gè)文件,然后逐個(gè)轉(zhuǎn)換為DXF格式文件,最后逐文件導(dǎo)入CorelDRAW中,大大增加了數(shù)據(jù)處理的工作量。
為了解決CorelDRAW和其他GIS數(shù)據(jù)的有效轉(zhuǎn)換,技術(shù)人員探索了基于開(kāi)源GIS組件的DotSpatial,對(duì)GIS交換格式數(shù)據(jù)(Shape File)進(jìn)行處理后直接導(dǎo)入CorelDRAW中,省去了中間的環(huán)節(jié),解決了GIS矢量數(shù)據(jù)和CorelDRAW軟件的有效交互。
CorelDRAW軟件提供了多種開(kāi)發(fā)模式,常見(jiàn)以VBA、VSTA方式進(jìn)行開(kāi)發(fā)。VBA是一種宏語(yǔ)言,采用的是Basic語(yǔ)言腳本的形式,功能開(kāi)發(fā)后保存為GMS格式文件,雖然VBA是一門(mén)容易掌握和開(kāi)發(fā)的形式,但是代碼的安全性差,主要處理自身文檔,而對(duì)其他軟件組件的兼容性較差[3]。為此技術(shù)人員采用了VSTA的開(kāi)發(fā)模式,該模式為二次開(kāi)發(fā)人員提供了微軟的Visual Studio開(kāi)發(fā)環(huán)境,編程語(yǔ)言采用C#。C#是微軟桌面語(yǔ)言主推的開(kāi)發(fā)平臺(tái)之一,C#是一種安全的、穩(wěn)定的、簡(jiǎn)單的由C語(yǔ)言和C++語(yǔ)言衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性。
GIS開(kāi)發(fā)組件選用了DotSpatial,DotSpatial是一套基于.Net Framework平臺(tái)開(kāi)發(fā)的開(kāi)源GIS類(lèi)庫(kù),整套類(lèi)庫(kù)是使用C#語(yǔ)言編寫(xiě)完成,DotSpatial是眾多GIS開(kāi)源軟件中功能比較全面、擴(kuò)展性比較好的一款,具有開(kāi)源、免費(fèi)、穩(wěn)定且獨(dú)立于特定操作系統(tǒng)的地理信息系統(tǒng)類(lèi)庫(kù)。它提供空間數(shù)據(jù)的處理、分析、投影等功能。DotSpatial整個(gè)類(lèi)庫(kù)實(shí)現(xiàn)的功能包括[4]:①顯示地圖;②支持Shape File,以及其他常用的柵格數(shù)據(jù)和遙感影像數(shù)據(jù);③渲染符號(hào)和標(biāo)簽;④支持動(dòng)態(tài)投影和投影變換;⑤支持屬性數(shù)據(jù)的編輯和顯示;⑥支持空間分析,包括疊加分析、緩沖區(qū)分析、差值分析、空間統(tǒng)計(jì)等。
軟件平臺(tái)采用了CorelDRAW 2022版本,先安裝Visual Studio2015或者以上版本,新建類(lèi)庫(kù)工程后將CorelDRAW的COM引用,然后將DotSpatial的GIS組件引入,主要包括Corel.Interop.VGCore21、DotSpatial.Controls、DotSpatial.Data等[5]。根據(jù)設(shè)計(jì)功能的需求,在工程中增加窗體,并在窗體中放置所需控件,然后編寫(xiě)功能代碼。
插件的功能主要分為以下兩個(gè)功能:①基礎(chǔ)數(shù)據(jù)的處理,主要是縮放和平移;②數(shù)據(jù)的圖形、屬性讀取并轉(zhuǎn)換為CorelDRAW中各類(lèi)符號(hào)和填充形式。
數(shù)據(jù)的處理流程如圖1所示。
圖1 數(shù)據(jù)處理流程圖
地圖編制過(guò)程中使用的GIS數(shù)據(jù),較多采用了地理坐標(biāo)系或者平面坐標(biāo)系,而在CorelDRAW中無(wú)法表示地圖的實(shí)際坐標(biāo),因此需要將原始的根據(jù)制圖比例尺進(jìn)行縮放和平移,讓制圖范圍的左下角和CorelDRAW中制圖的左下角坐標(biāo)一致。根據(jù)輸入的比例尺參數(shù),自動(dòng)測(cè)算縮放比,縮放工具界面如圖2所示。
圖2 地圖縮放對(duì)話(huà)框
以線(xiàn)要素縮放為例,讀取一個(gè)Shape File文件后,開(kāi)始遍歷圖形要素,讀取要素的圖形信息,根據(jù)縮放比例和平移參數(shù),將逐個(gè)要素進(jìn)行處理,并最后保存為新的矢量文件。
地圖數(shù)據(jù)經(jīng)過(guò)縮放和CorelDRAW制圖坐標(biāo)一致后,將縮放后的Shape File進(jìn)行導(dǎo)入操作。導(dǎo)入數(shù)據(jù)分為點(diǎn)、線(xiàn)、面3種類(lèi)型的要素,點(diǎn)要素的導(dǎo)入分為兩種情況,點(diǎn)要素作為符號(hào)要素進(jìn)行導(dǎo)入,設(shè)置好點(diǎn)符號(hào)的名稱(chēng)[6]。作為文字性導(dǎo)入,則需要設(shè)置導(dǎo)入文字的屬性字段名稱(chēng),選中“屬性轉(zhuǎn)注記”,并選擇文字對(duì)應(yīng)的屬性字段名稱(chēng)。面要素導(dǎo)入時(shí),可以只導(dǎo)入邊線(xiàn),也可以導(dǎo)入CorelDRAW后作為填充要素,并可以根據(jù)分色方案對(duì)對(duì)面要素逐個(gè)填充不同的顏色方案[7]。
在地圖實(shí)際生產(chǎn)中,對(duì)3200多個(gè)圖形元素進(jìn)行導(dǎo)入對(duì)比測(cè)試,導(dǎo)入前原始格式為shape file,導(dǎo)入后保存為CorelDRAW格式。通過(guò)插件導(dǎo)入數(shù)據(jù),可以迅速解決外部數(shù)據(jù)的導(dǎo)入,且圖層、要素類(lèi)型和屬性信息均保留原始數(shù)據(jù)的信息。
表1 生產(chǎn)過(guò)程中應(yīng)用對(duì)比
隨著CorelDRAW在地圖編制的廣泛應(yīng)用,基于CorelDRAW數(shù)據(jù)轉(zhuǎn)換的需求越來(lái)越重要,由于軟件自帶的數(shù)據(jù)交換不能滿(mǎn)足地圖的需求,因此利用開(kāi)源組件開(kāi)發(fā)相關(guān)的工具,不僅僅解決了軟件自身的功能不足,也提高了編圖的效率,組件不依賴(lài)任何商用GIS平臺(tái),直接讀取文件信息,解決的批量提醒縮放后,直接導(dǎo)入CorelDRAW中,從而達(dá)到了GIS數(shù)據(jù)的高效率、無(wú)損失的轉(zhuǎn)換,并可以自定義轉(zhuǎn)換后的符號(hào)參數(shù),減少了后期地圖編制符號(hào)化等的工作量,不僅僅提高了制圖效率,也提高了制圖質(zhì)量。