齊志飛,陳功,龔天宇,王柳
(南通市測繪院有限公司,江蘇 南通 226006)
專題地圖編制的工具,采用GIS軟件符號化還是采用平面設計軟件,是地圖生產(chǎn)單位長期以來面臨的選擇難題。
ArcGIS、SuperMap等GIS軟件在空間數(shù)據(jù)的管理和分析上具有明顯優(yōu)勢,使用GIS軟件符號化制圖的優(yōu)勢是數(shù)據(jù)分類管理方便、出圖快、生產(chǎn)效率高,并且GIS軟件符號化制圖的獨有優(yōu)勢還在于可用于電子地圖發(fā)布,缺點是藝術設計效果稍差。而CorelDRAW、Adobe Illustrator等平面設計軟件具有更優(yōu)的藝術設計效果[1]。使用平面設計軟件進行專題制圖的優(yōu)缺點與GIS軟件相反,兩類工具存在明顯的互補性。
為了結合平面設計軟件與GIS平臺軟件各自的優(yōu)勢,達到兼顧生產(chǎn)率和制圖效果的目的,地圖編制人員曾進行一些嘗試[2]。
(1)基于數(shù)據(jù)格式的交換
DXF、EPS、PDF等中間交換格式被各大平面設計軟件和GIS平臺所支持,故可以實現(xiàn)平面設計軟件與GIS之間的互操作[3]。但是通過中間交換格式的互操作邏輯層次太低,這些交換格式有的只能將線劃導出、有的無法攜帶分類和屬性信息,更無從談起基于分層分類的批量符號化。數(shù)據(jù)每交換一次即損失一次。
(2)MAPublisher設計插件
MAPublisher設計軟件是加拿大Avenza公司出品的地圖制圖軟件,其應用形式為基于Adobe Illustrator的擴展插件。該制圖軟件已在地圖編制業(yè)內(nèi)得到應用[4]。該工具的優(yōu)點包括:直接讀取Shapefile等數(shù)據(jù)格式,無須GIS軟件環(huán)境支持;實現(xiàn)由屬性數(shù)據(jù)支撐的分類自動化符號配置;數(shù)據(jù)編輯結果可以回寫Shapefile等。
但該工具也存在缺點:一是讀取數(shù)據(jù)格式受限,如可以讀取ArcGIS的Shapefile格式但不能讀取GDB、MDB等Geodatabase,不支持注記要素類;二是地圖文檔(如MXD)中的符號化信息無法被帶到MAPublisher中,在MAPublisher中的符號化信息無法回寫GIS數(shù)據(jù)庫或MXD地圖文檔;三是用戶的二次開發(fā)困難;此外制圖單位需要向廠商支付購買制圖插件的費用。
(3)基于二次開發(fā)的轉(zhuǎn)換
二次開發(fā)是主流GIS軟件平臺的必備功能,例如ArcGIS的ArcObjects是基于COM的組件化平臺[5]。在平面設計軟件中,CorelDRAW支持VBA開發(fā)接口[6],Adobe Illustrator也提供了基于C++和COM Automation的二次開發(fā)SDK。因此基于開發(fā)接口來進行GIS數(shù)據(jù)庫與平面設計軟件間的互通是可行的選擇。
VBA開發(fā)的問題在于難以整合ArcObjects這樣的復雜類庫,并隨著技術發(fā)展其適應性明顯下降。外部COM Automation開發(fā)接口得到了Adobe Illustrator和CorelDRAW的支持,但其應用模式是新建立一個來外部進程實現(xiàn)跨進程調(diào)用,每訪問一個對象屬性和調(diào)用對象方法,均需要穿越進程邊界,故運行速度較慢[7]。
VSTA(Visual Studio Tools for Application)是CorelDRAW在X5及更高版本中提供的開發(fā)接口,應用程序內(nèi)嵌于CorelDRAW進程,因此運行速度快[8]?;赩isual Studio開發(fā)易于整合ArcObjects。此外由于應用被編譯為DLL更易于軟件封裝,且基于.NET和C#語言還具有技術適應性好、開發(fā)效率高等特點。
(1)結合GIS平臺和平面設計軟件的雙方優(yōu)勢,即基于GIS平臺來管理制圖數(shù)據(jù)庫,基于設計軟件來做藝術設計、要素的圖面關系處理、圖面配置等工作。
(2)在平面設計軟件中,對制圖對象進行自動分類符號化以保證人工編輯量少,保持平面設計文件數(shù)據(jù)結構的清晰性以保證人工檢索效率高。
(3)平面設計軟件中進行的制圖對象數(shù)據(jù)修改(包括符號信息、幾何信息、分層分類信息),可以回寫到GIS平臺的數(shù)據(jù)庫及其地圖文檔。
(4)雙向互通過程的效率高。
基于Visual Studio 2012,整合ArcGIS 10.2及其ArcObjects.NET SDK和CorelDRAW X7及其VSTA開發(fā)接口,讀取MXD地圖文檔和數(shù)據(jù)圖層,遍歷各圖層要素及其分類信息、符號化信息,在CorelDRAW下實現(xiàn)制圖對象的自動化重建、分層、符號化和注記配置。對于CorelDRAW下的編輯結果,包括數(shù)據(jù)的分層分類、屬性、幾何屬性變化情況,可回導為ArcGIS的數(shù)據(jù)庫與MXD地圖文檔。
(1)圖層組織
CorelDRAW不支持嵌套圖層,支持自定義屬性,但不支持層設置不同的數(shù)據(jù)結構。根據(jù)這樣的特性,不同幾何類型、不同大類、不同小類應使用不同的圖層。
(2)圖層名稱組成
圖層命名規(guī)則為:幾何類型+大類+小類。按照幾何類型,圖層分為注記圖層、點類圖層、線圖層、面圖層。按照大類將制圖對象分為居民地、道路、水系、植被、地貌等。小類是在大類中將制圖對象進行細分,如將道路分為高速公路、國道、省道等。圖層在CDR文件中進行排序,按照幾何類型、大類、小類依次排序。
(3)制圖符號
每個圖層只支持一類制圖對象,每類對象使用同一種符號樣式。建立CDR模板庫,用于存儲圖層及其使用符號。對于CDR模板不能記錄的信息,使用程序配置文件進行補充。
(1)分層分類方式
按照幾何類型和大類信息劃分為不同的要素類。在要素類中,對象小類存儲在字段TYPE中,名稱屬性存儲在NAME存儲信息中,要素的編碼存儲在GB字段中。
(2)符號化信息
對于點、線、面三類對象,ArcMap圖層(*.lyr文件)記錄了其符號化設置信息,并可被MXD地圖文檔管理;對于文字注記,如果使用要標注則存儲在圖層(*.lyr文件)中,如果使用注記要素類則存儲在GeoDatabase中。
在GIS數(shù)據(jù)庫中要素以實際位置存儲,而平面設計軟件中制圖對象則使用圖紙坐標系和圖紙單位。故GIS數(shù)據(jù)在轉(zhuǎn)為平面設計軟件制圖對象前,需要首先將坐標系統(tǒng)投影變換并按制圖比例縮小到圖紙坐標系。
點、線、面類型的制圖對象在ArcObjects與CorelDRAW VSTA中的實現(xiàn)對照關系如表1、表2、表3所示。
點對象在ArcObjects與CorelDRAW VSTA中的實現(xiàn)對照 表1
線對象在ArcObjects與CorelDRAW VSTA中的實現(xiàn)對照 表2
面對象在ArcObjects與CorelDRAW VSTA中的實現(xiàn)對照 表3
注記對象的屬性包含字大、字體、加粗、顏色等,讀取GIS數(shù)據(jù)庫要素的NAME字段值,在CorelDRAW中利用Shape類及其Text屬性可以創(chuàng)建注記文字對象。點的注記生成方法為,采用點所在位置偏移圖上可讀距離,繪出注記文字;線的注記生成方法,采用在線的起始點位置繪出注記文字;面的注記生成,采用在面的標注位置繪出注記文字。
構建如表4所示的測試環(huán)境。在CorelDRAW X7中,運行基于VSTA的擴展程序來進行MXD轉(zhuǎn)CorelDRAW,共轉(zhuǎn)換制圖對象1 600個,生成CorelDRAW圖層2個,耗時 12 s,轉(zhuǎn)換速率為133個/s,轉(zhuǎn)換效果如圖1所示。再進行CorelDRAW回寫Shapefile,共轉(zhuǎn)換制圖對象 1 600個,生成Shapefile要素類2個,耗時10秒,轉(zhuǎn)換速率為1 600個/秒,程序運行界面如圖2所示。
測試運行環(huán)境 表4
圖1 MXD轉(zhuǎn)CorelDRAW符號效果
圖2 CorelDRAW回寫Shapefile程序
基于外部COM Automation的開發(fā)方式,轉(zhuǎn)換對象 1 600個,耗時 120 s??梢钥闯鯟orelDRAW VSTA程序在運行效率上明顯優(yōu)于COM Automation轉(zhuǎn)換方式。
本文基于CorelDRAW X7及其VSTA開發(fā)接口,讀取ArcGIS的MXD地圖文檔生成CorelDRAW制圖對象,并完成的自動化重建、分層、符號化和注記配置,并將CorelDRAW下的編輯結果回導至ArcGIS的數(shù)據(jù)庫,保證了程序運行的高效。在地圖編制過程中,綜合運用GIS平臺和平面設計軟件,可達到兼顧制圖藝術效果和編圖生產(chǎn)率的目的。