高壽峰 楊欣
1. 安徽省第四測繪院 安徽 合肥 230031;2. 合肥工業大學 安徽 合肥 230009
隨著計算機技術和地圖編制技術的不斷發展,現代制圖技術和手段也在不斷發展和變化,針對不同的制圖需求,采用了不同的地圖編制技術。在地圖編制過程中,較多采用兩種編圖模式,一種是傳統的GIS軟件模式,比如ArcGIS、MapGIS等GIS平臺,另外一種模式是平面設計軟件模式,比如采用CorelDRAW和Illustrator等平臺進行編輯制圖[1]。GIS軟件作為制圖軟件,作為應急制圖的應用較多,而作為以印刷為目的編圖任務,盡管基礎數據的處理采用GIS軟件進行,但是編圖平臺還是采用了CorelDRAW等平面設計軟件。CorelDRAW作為一款平面圖形處理軟件,近年來,版本不斷推陳出新,功能也不斷強大,但是作為一個通用的平面設計圖形處理軟件,并未考慮到地圖編制過程中GIS格式數據的交互性,導致地圖編制人員只能采用CorelDRAW支持圖形交換格式DXF進行數據的導入。
在傳統的數據交換中,將GIS數據轉換為DXF,此格式是AutoCAD繪圖交換格式,導出后原始屬性、圖層等信息都無法保存,僅僅把數據的幾何圖形信息保存下來。然后利用CorelDRAW導入DXF文件功能導入數據[2]。該方法使用較廣,但是數據信息損失較多,特別是點要素在AutoCAD中是塊的定義,而在CorelDRAW中是點符號進行表達,軟件之間要素的定義不兼容,導致了轉換數據的時候只能轉換其表征特點,DXF中點符號導入CorelDRAW后變為一個或多個圓圖形,造成了后期編輯的復雜性。此外,為了解決圖層信息丟失的問題,常常把GIS數據先按照屬性拆分為單個文件,然后逐個轉換為DXF格式文件,最后逐文件導入CorelDRAW中,大大增加了數據處理的工作量。
為了解決CorelDRAW和其他GIS數據的有效轉換,技術人員探索了基于開源GIS組件的DotSpatial,對GIS交換格式數據(Shape File)進行處理后直接導入CorelDRAW中,省去了中間的環節,解決了GIS矢量數據和CorelDRAW軟件的有效交互。
CorelDRAW軟件提供了多種開發模式,常見以VBA、VSTA方式進行開發。VBA是一種宏語言,采用的是Basic語言腳本的形式,功能開發后保存為GMS格式文件,雖然VBA是一門容易掌握和開發的形式,但是代碼的安全性差,主要處理自身文檔,而對其他軟件組件的兼容性較差[3]。為此技術人員采用了VSTA的開發模式,該模式為二次開發人員提供了微軟的Visual Studio開發環境,編程語言采用C#。C#是微軟桌面語言主推的開發平臺之一,C#是一種安全的、穩定的、簡單的由C語言和C++語言衍生出來的面向對象的編程語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性。
GIS開發組件選用了DotSpatial,DotSpatial是一套基于.Net Framework平臺開發的開源GIS類庫,整套類庫是使用C#語言編寫完成,DotSpatial是眾多GIS開源軟件中功能比較全面、擴展性比較好的一款,具有開源、免費、穩定且獨立于特定操作系統的地理信息系統類庫。它提供空間數據的處理、分析、投影等功能。DotSpatial整個類庫實現的功能包括[4]:①顯示地圖;②支持Shape File,以及其他常用的柵格數據和遙感影像數據;③渲染符號和標簽;④支持動態投影和投影變換;⑤支持屬性數據的編輯和顯示;⑥支持空間分析,包括疊加分析、緩沖區分析、差值分析、空間統計等。
軟件平臺采用了CorelDRAW 2022版本,先安裝Visual Studio2015或者以上版本,新建類庫工程后將CorelDRAW的COM引用,然后將DotSpatial的GIS組件引入,主要包括Corel.Interop.VGCore21、DotSpatial.Controls、DotSpatial.Data等[5]。根據設計功能的需求,在工程中增加窗體,并在窗體中放置所需控件,然后編寫功能代碼。
插件的功能主要分為以下兩個功能:①基礎數據的處理,主要是縮放和平移;②數據的圖形、屬性讀取并轉換為CorelDRAW中各類符號和填充形式。
數據的處理流程如圖1所示。

圖1 數據處理流程圖
地圖編制過程中使用的GIS數據,較多采用了地理坐標系或者平面坐標系,而在CorelDRAW中無法表示地圖的實際坐標,因此需要將原始的根據制圖比例尺進行縮放和平移,讓制圖范圍的左下角和CorelDRAW中制圖的左下角坐標一致。根據輸入的比例尺參數,自動測算縮放比,縮放工具界面如圖2所示。

圖2 地圖縮放對話框
以線要素縮放為例,讀取一個Shape File文件后,開始遍歷圖形要素,讀取要素的圖形信息,根據縮放比例和平移參數,將逐個要素進行處理,并最后保存為新的矢量文件。
地圖數據經過縮放和CorelDRAW制圖坐標一致后,將縮放后的Shape File進行導入操作。導入數據分為點、線、面3種類型的要素,點要素的導入分為兩種情況,點要素作為符號要素進行導入,設置好點符號的名稱[6]。作為文字性導入,則需要設置導入文字的屬性字段名稱,選中“屬性轉注記”,并選擇文字對應的屬性字段名稱。面要素導入時,可以只導入邊線,也可以導入CorelDRAW后作為填充要素,并可以根據分色方案對對面要素逐個填充不同的顏色方案[7]。
在地圖實際生產中,對3200多個圖形元素進行導入對比測試,導入前原始格式為shape file,導入后保存為CorelDRAW格式。通過插件導入數據,可以迅速解決外部數據的導入,且圖層、要素類型和屬性信息均保留原始數據的信息。

表1 生產過程中應用對比
隨著CorelDRAW在地圖編制的廣泛應用,基于CorelDRAW數據轉換的需求越來越重要,由于軟件自帶的數據交換不能滿足地圖的需求,因此利用開源組件開發相關的工具,不僅僅解決了軟件自身的功能不足,也提高了編圖的效率,組件不依賴任何商用GIS平臺,直接讀取文件信息,解決的批量提醒縮放后,直接導入CorelDRAW中,從而達到了GIS數據的高效率、無損失的轉換,并可以自定義轉換后的符號參數,減少了后期地圖編制符號化等的工作量,不僅僅提高了制圖效率,也提高了制圖質量。