張 雷,黃亞萍,楊 覓
(江蘇省基礎(chǔ)地理信息中心,江蘇 南京 210013)
CorelDraw平臺(tái)下專題地圖實(shí)時(shí)展現(xiàn)的研究
張 雷,黃亞萍,楊 覓
(江蘇省基礎(chǔ)地理信息中心,江蘇 南京 210013)
由于專題地圖集制作周期較長(zhǎng),最初設(shè)計(jì)時(shí)用到的數(shù)據(jù)一般不是最終數(shù)據(jù),因此需要出版前更換為最終數(shù)據(jù),這為地圖制作帶來了繁重的工作量。本文通過分析專題地圖中統(tǒng)計(jì)數(shù)據(jù)與圖形之間的關(guān)系,利用VBA對(duì)CorelDraw進(jìn)行二次開發(fā),建立圖形和外部數(shù)據(jù)庫(kù)的關(guān)聯(lián),實(shí)現(xiàn)了專題地圖的自動(dòng)更新,有效減少了專題地圖制作過程中多次更新數(shù)據(jù)所帶來的繁瑣的人工勞動(dòng)。
CorelDraw;VBA;專題地圖
專題地圖是按照地圖主題的要求,突出而完善地表示與主題相關(guān)的一種或幾種要素,從而使地圖成為內(nèi)容專題化、用途專門化的地圖。
準(zhǔn)確實(shí)時(shí)的數(shù)據(jù)是編制專題地圖的前提條件。專題圖均由定量數(shù)據(jù)根據(jù)一定的規(guī)則生成,用于清晰地表達(dá)現(xiàn)象、觀點(diǎn)、趨勢(shì)等。
統(tǒng)計(jì)數(shù)據(jù)具有實(shí)效性。專題地圖制作周期較長(zhǎng),在開始設(shè)計(jì)制作時(shí)使用的最新數(shù)據(jù)往往不是最終數(shù)據(jù),因此在專題地圖制作完成后需要替換為最新數(shù)據(jù),其工作量基本相當(dāng)于利用新數(shù)據(jù)重新制作。本文主要解決多次利用較新數(shù)據(jù)更新專題地圖內(nèi)容的問題。
CorelDraw軟件是加拿大Corel公司開發(fā)的一款通用的基于矢量的圖形制作軟件,在平面設(shè)計(jì)、地圖制圖、服裝設(shè)計(jì)等行業(yè)中應(yīng)用廣泛。CorelDraw支持Visual Basic語(yǔ)言的二次開發(fā)功能,用戶可以在一定程度上通過VBA操作CorelDraw的對(duì)象,通過程序開發(fā)實(shí)現(xiàn)個(gè)性化的功能。
CorelDraw VBA是VB的子集,是一種標(biāo)準(zhǔn)宏語(yǔ)言,是面向?qū)ο蟮母叨燃傻拈_發(fā)環(huán)境,在 Corel-Draw內(nèi)部運(yùn)行。
CorelDraw VBA有特殊的數(shù)據(jù)類型,可以實(shí)現(xiàn)計(jì)算機(jī)制圖中常用的基本函數(shù),如畫線、畫圓、畫面、面域填充和文字標(biāo)注等基本命令。對(duì)象分為以下幾類:應(yīng)用程序(Application)類、文檔(Document)類、組織結(jié)構(gòu)(Organizing)類、圖元(Entity)類。Corel-Draw中對(duì)象模型的結(jié)構(gòu)如圖1所示。
圖1 CorelDraw對(duì)象模型
專題地圖的原始數(shù)據(jù)主要由專業(yè)部門或統(tǒng)計(jì)部門提供,大多為表格數(shù)據(jù)?;A(chǔ)地圖數(shù)據(jù)一般為圖形數(shù)據(jù),包括點(diǎn)狀要素、線狀要素和面狀要素。下面就如何基于統(tǒng)計(jì)數(shù)據(jù)更新地圖基本要素予以說明。
1.專題地圖要素更新方法
CorelDraw本身不具備數(shù)據(jù)庫(kù)功能,不能像GIS軟件一樣通過改變對(duì)象屬性來修改對(duì)象的可視化效果。為了達(dá)到GIS軟件操作的效果,只能通過VBA二次開發(fā)實(shí)現(xiàn)圖形對(duì)象與外部數(shù)據(jù)的關(guān)聯(lián)。當(dāng)數(shù)據(jù)改變時(shí),通過執(zhí)行命令就可以方便地實(shí)現(xiàn)圖形的顏色、大小、形狀等屬性的修改,從而達(dá)到快速更新專題地圖內(nèi)容的目的。下面以人口專題為例說明專題地圖內(nèi)容更新方法。
(1)基礎(chǔ)地圖處理
基礎(chǔ)地圖是專題圖的基礎(chǔ),對(duì)專題圖集起到至關(guān)重要的作用。每幅專題圖根據(jù)不同數(shù)據(jù)對(duì)地圖要素的色彩、大小、形狀進(jìn)行變化而成。如分級(jí)統(tǒng)計(jì)圖表法根據(jù)顏色分級(jí),在建立基礎(chǔ)地圖時(shí)通過對(duì)象數(shù)據(jù)管理器為面狀對(duì)象添加屬性,也可以在導(dǎo)入其他格式的基礎(chǔ)地圖數(shù)據(jù)時(shí)使圖形對(duì)象與外部數(shù)據(jù)關(guān)聯(lián)。為基礎(chǔ)地圖要素添加屬性如圖2所示。
圖2 為圖形添加屬性
(2)數(shù)據(jù)庫(kù)的建立
通過對(duì)象數(shù)據(jù)管理器,可以為點(diǎn)、線、面添加屬性,如名稱、級(jí)別等,使之對(duì)應(yīng)于數(shù)據(jù)庫(kù)中相應(yīng)的字段。
根據(jù)表達(dá)需要,專題地圖屬性數(shù)據(jù)描述精度分為定性數(shù)據(jù)和定量數(shù)據(jù),本文主要針對(duì)定量數(shù)據(jù),選用Excel數(shù)據(jù)庫(kù)模型。
通過分析數(shù)據(jù)源,確認(rèn)圖形與數(shù)據(jù)庫(kù)的關(guān)聯(lián)字段,根據(jù)圖形表現(xiàn)方式確定數(shù)據(jù)結(jié)構(gòu),包括字段數(shù)量和字段類型。通過計(jì)算、取舍、輸入記錄來建立與圖形對(duì)應(yīng)的數(shù)據(jù)庫(kù)。同一數(shù)據(jù)庫(kù)可關(guān)聯(lián)多幅地圖。數(shù)據(jù)庫(kù)建立見表1。
(3)基礎(chǔ)地圖圖形與數(shù)據(jù)庫(kù)的關(guān)聯(lián)
專題圖的表示方法多種多樣,不可能采用同一個(gè)數(shù)學(xué)模型來滿足所有專題圖需要,因此,需要針對(duì)每種方法設(shè)計(jì)對(duì)應(yīng)的數(shù)學(xué)模型。本文介紹的方法只可作為建立數(shù)學(xué)模型的借鑒,不可直接拿來使用,除非與本文專題圖實(shí)例具有相同的需求。
表1 數(shù)據(jù)庫(kù)建立
表1數(shù)據(jù)庫(kù)中圖形建立了與色號(hào)的對(duì)應(yīng)關(guān)系。包含色號(hào)字段的顏色表是實(shí)際需要的顏色值,如圖3所示。通過表1、圖3即可實(shí)現(xiàn)圖形與填充顏色的關(guān)聯(lián),通過運(yùn)行VBA程序,將自動(dòng)更換圖形的填充顏色。
圖3 顏色對(duì)應(yīng)表
(4)圖形更新
由上可知,當(dāng)某些區(qū)域的人口數(shù)據(jù)發(fā)生了變化,通過程序?qū)⒆詣?dòng)更新表1中“色號(hào)”字段的值;再通過VBA程序的運(yùn)行調(diào)用修改后的數(shù)據(jù),獲得正確的顏色值等信息,從而改變圖形的顏色、形狀、大小等。整體流程如圖4所示。
圖4 專題地圖更新流程
(5)地圖中點(diǎn)狀要素符號(hào)的更新
專題圖中表示數(shù)量關(guān)系一般采用圓形、柱狀圖、餅狀圖等大小、形狀或顏色。下面以圓形為例介紹一種點(diǎn)狀要素符號(hào)的更新方法。該類符號(hào)首先要確定最大和最小半徑,然后按照比率計(jì)算不同要素對(duì)應(yīng)的大小。通過數(shù)據(jù)庫(kù)獲得對(duì)應(yīng)數(shù)據(jù),利用VBA功能繪制大小不同的圓形符號(hào),如圖5所示。
圖5 點(diǎn)狀符號(hào)更新
圓形符號(hào)更新的VBA程序的主要語(yǔ)句如下:
2.統(tǒng)計(jì)圖表更新方法
統(tǒng)計(jì)圖表也是專題地圖集編制中應(yīng)用較多的內(nèi)容之一。制作統(tǒng)計(jì)圖表的軟件很多,如 Illustrator、ArcGIS、Excel等。相比來說 Excel表現(xiàn)形式最豐富,使用方便;但不足之處是弧線轉(zhuǎn)入 CorelDraw后,鋸齒現(xiàn)象比較明顯,而且顏色模式為RGB色彩模式,需要進(jìn)一步加工處理,如圖6所示。
圖6 Excel生成圖表
為了解決這個(gè)問題,筆者在CorelDraw中使用VBA程序制作。下面以立體餅圖為例介紹VBA程序開發(fā)過程。
(1)數(shù)據(jù)規(guī)范化
為了VBA對(duì)數(shù)據(jù)的正確調(diào)用,必須對(duì)數(shù)據(jù)進(jìn)行規(guī)范化處理,主要解決處理數(shù)據(jù)類型和數(shù)據(jù)對(duì)應(yīng)位置(哪一列),如圖7所示。
圖7 數(shù)據(jù)整理
(2)圖表生成
根據(jù)規(guī)范化數(shù)據(jù),利用VBA程序代碼即可實(shí)現(xiàn)餅狀圖的生成,主要源代碼如下:
功能1:通過設(shè)置半徑,自動(dòng)繪制圓形,并轉(zhuǎn)換成圓形曲線:
功能2:按照各行數(shù)據(jù)所占比例,計(jì)算對(duì)應(yīng)圓弧上的弧段長(zhǎng)度,并根據(jù)長(zhǎng)度依次切斷圓形曲線,得到一組與數(shù)據(jù)對(duì)應(yīng)的弧段組:
功能3:遍歷弧段組,將弧段首結(jié)點(diǎn)連接圓心,閉合弧段:
代碼中pieShape為最終生成的餅狀圖。
圖表生成功能運(yùn)行界面如圖8所示。
圖8 圖表生成功能運(yùn)行界面
在專題地圖集編制工作中,合作單位或相關(guān)部門一般已有基礎(chǔ)性圖形數(shù)據(jù),主要包括GIS數(shù)據(jù)和圖形數(shù)據(jù)。CorelDraw能夠兼容 DXF、EPS、CMX、AI、JPG、TIFF等多種數(shù)據(jù)格式,為數(shù)據(jù)轉(zhuǎn)換提供了可行性。
常見的GIS數(shù)據(jù)有MapGIS和ArcGIS數(shù)據(jù)等,其他GIS數(shù)據(jù)都可以轉(zhuǎn)換為ArcGIS數(shù)據(jù)。如果要在CorelDraw中使用GIS數(shù)據(jù),可采用兩種方式轉(zhuǎn)換:一是通過開發(fā)程序直接讀取GIS數(shù)據(jù),然后按CorelDraw能夠讀取的格式導(dǎo)出,CorelDraw即可以直接導(dǎo)入;二是把GIS數(shù)據(jù)轉(zhuǎn)換為自定義文件格式,由CorelDraw的VBA程序讀入自定義格式。
CorelDraw軟件是地圖制圖領(lǐng)域使用較廣的軟件,其較強(qiáng)的圖形處理功能和完美的特效是其他軟件難以比擬的,但是其在GIS功能上的先天不足也給地圖制圖帶來了較多的障礙,通過VBA二次開發(fā)在一定程度上輔助解決了部分快速制圖的問題。本文所述方法在《江蘇省地圖集》專題地圖的編制中發(fā)揮了很大作用,避免了數(shù)據(jù)更新的重復(fù)勞動(dòng),原來需要幾個(gè)月才能完成的工作,現(xiàn)在只需兩三天,且大大減少了人為錯(cuò)誤,不僅提高了生產(chǎn)效率,而且為工作的開展贏得了寶貴的時(shí)間。
[1] 黃仁濤,龐小平,馬晨燕.專題地圖編制[M].武漢:武漢大學(xué)出版社,2003:48-49.
[2] 麥照秋,韓雪華.GIS數(shù)據(jù)用于CorelDraw地圖制圖方法的研究[J].測(cè)繪通報(bào),2008(2):62-64.
[3] 曾克明.CorelDraw軟件的二次開發(fā)在地圖制圖中的應(yīng)用與實(shí)例[J].測(cè)繪通報(bào),2010(8):60-61,73.
[4] 高小明,湯青慧,溫俊麗.CorelDraw中基于VBA的二次開發(fā)[J].測(cè)繪與空間地理信息,2006,29(6):54-56.
[5] 顏振宇.CorelDraw X5中基于VBA實(shí)現(xiàn)線漸變的技術(shù)研究[J].測(cè)繪與空間地理信息,2012,35(11):202-204.
[6] 張榮茜,熊亮.CorelDraw12環(huán)境下VBA二次開發(fā)實(shí)現(xiàn)圖形變換[J].電腦編程技巧與維護(hù),2008(6):65-68.
[7] 鐘煒.利用CorelDraw VBA開發(fā)宏程序繪制地圖[J].江西測(cè)繪,2007,69(3):4-6.
[8] 王瑞璋.基于CorelDraw的二次開發(fā)技術(shù)在地圖制圖中的應(yīng)用[J].測(cè)繪與空間地理信息,2013,36(3):173-175.
[9] 楊穗,易捷.應(yīng)用VB或VBA對(duì)CorelDraw進(jìn)行二次開發(fā)[J].電腦學(xué)習(xí),2004,2(1):31-33.
[10] 張青梅,黃玉英,宋華明.基于CorelDraw的地圖編繪技術(shù)研究[J].科技資訊,2012(20):46-48.
Real-time Presentation Research of Thematic Maps Based on CorelDraw
ZHANG Lei,HUANG Yaping,YANG Mi
P285
B
0494-0911(2014)12-0118-04
張雷,黃亞萍,楊覓.CorelDraw平臺(tái)下專題地圖實(shí)時(shí)展現(xiàn)的研究[J].測(cè)繪通報(bào),2014(12):118-121.
10.13474/j.cnki.11-2246. 2014.0414
2014-04-28;
2014-06-30
江蘇省測(cè)繪科研資助項(xiàng)目(JSCHKY201320)
張 雷(1973—),男,陜西富平人,高級(jí)工程師,主要從事地圖編制工作。