999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于CorelDRAWX6的專題地圖統計圖表自動化實現

2014-08-25 01:19:05張志鵬
測繪工程 2014年1期
關鍵詞:圖表數據庫

李 論,張志鵬,陳 慎

(61175部隊,湖北 武漢 430074)

基于CorelDRAWX6的專題地圖統計圖表自動化實現

李 論,張志鵬,陳 慎

(61175部隊,湖北 武漢 430074)

憑借卓越的圖形、文字編輯功能,CorelDRAW頗受制圖人員的青睞,尤其在專題地圖的設計與編繪中扮演著重要角色。文中基于專題地圖統計圖表的快速準確繪制的需求,結合ActiveX Automation和ADO數據庫訪問技術,利用Visual Basic語言在CorelDRAW X6中進行二次開發,實現多種常用統計圖表的自動化生成,為今后各類專題地圖的內容表達提供借鑒與參考。

CorelDRAW X6;ADO;Visual Basic;專題地圖;統計圖表

藝術性與技術性兼具的專題地圖主要為國民經濟建設服務,它們突出而詳細地表示一種或幾種自然現象、社會經濟現象。專題地圖內容表達方法眾多,定位圖表法和分區統計圖表法尤為常用,柱狀圖、折線圖、餅狀圖、環狀圖、雷達圖等形象生動地反映了制圖區域特定點位或特定范圍內某些現象的數量、質量特征。

盡管在制作統計圖表時,可以手工繪制或單獨借助于外部軟件(如EXCEl、Adobe Illustrator等)生成其它格式統計圖表,但是這些傳統的方法不僅人工干預性強、兼容性較差,而且精確性和美觀性也大打折扣。

憑借卓越的圖形、文字編輯功能,CorelDRAW頗受制圖人員的青睞,尤其在專題地圖的設計與編繪中扮演著重要角色。文章基于專題地圖統計圖表的快速準確繪制問題,結合ActiveX Automation和ADO數據庫訪問技術,利用Visual Basic語言進行了二次開發,實現了多種常用統計圖表的自動化生成,為在CorelDRAW環境下制作各類專題地圖的統計圖表提供方便。

1 ActiveX Automation與ADO技術概述

ActiveX Automation是面向對象的解釋型開發工具,在廣義上是指微軟公司的整個COM(Component Object Model,組件對象模型)架構,但是現在通常用來稱呼基于標準COM接口來實現對象連接與嵌入的ActiveX控件。該技術通過應用程序對外界提供面向某一特定任務并提供完成該任務的完整功能的Automation對象實現應用程序間的對象共享。

由于ActiveX不依賴于語言,本文所研究的統計圖表生成工具選用的是Visual Basic編程語言,通過CorelDRAW ActiveX Automation技術來建立與CorelDRAW對象的連接。通過VB編程語言控制CorelDRAW的對象模型,從而實現訪問和控制CorelDRAW。

在VB中,有4種常用數據庫訪問接口,分別是Data控件、DAO、RDO和ADO。其中,ADO是Microsoft公司開發的面向對象數據庫訪問最新接口,不僅占用內存資源少、簡單易用,而且能夠獨立創建除Error對象和Field對象外的所有對象,具有非常靈活的對象模型。

ADO同樣是利用“對象”的概念來實現VB應用程序與外部數據庫的訪問和操作,將具體的操作細節隱藏起來,用戶在使用ADO對象時只需要通過訪問對象的“屬性”、“方法”及“事件”進行操作即可。

2 統計圖表的常規制作方法

2.1 直接繪制法

直接繪制法,就是不利用其它軟件生成專題統計圖來過渡到CorelDRAW中,而是直接在CorelDRAW中矢量繪制,根據直接繪制前的準備工作不同,可以分為以下兩種:

1)在圖紙上繪制好統計圖表(如柱狀圖),再掃描到計算機中,然后利用CorelDRAW進行手工描繪。這樣的統計圖表雖然在數據信息共享和傳遞上有一定的改善,但是存在不易編輯、費時費力、精度差等缺點,不能滿足準確、快速繪制地圖的需要。

2)根據統計數據計算好各制圖對應的比例,再設計好統計圖表的屬性值,比如柱形的長、寬、高等,然后利用CorelDRAW的矢量繪圖工具進行手工繪制。需要坐標軸的統計圖表,如柱形圖,還得手工添加橫、縱坐標軸,不僅要按設計比例單元添加小刻度線,還要用文本工具對應添加刻度值。顯然,這種方式也存在工作量大、制圖效率低的缺點。

2.2 間接繪制法

顧名思義,間接繪制法并不是直接在CorelDRAW中繪制統計圖表,而是利用具有繪制統計圖表功能的其它外部軟件來制作,然后導入到CorelDRAW中進行后期編輯修改。

1)利用Excel的間接繪制。 Excel通過錄入的數據和統計圖模板自動生成圖表后選擇性粘貼到CorelDRAW中,但這樣插入的統計圖表為一個OLE對象整體,有時也存在圖表變形,而且不能編輯圖形,當然也可先將插入的OLE對象圖形輸出為WMF格式的矢量圖形文件,然后再導入CorelDRAW,就可以矢量編輯了,但這樣可編輯的矢量統計圖表邊線存在鋸齒狀變形,尤其體現在餅狀圖等具有弧狀的圖形上。

2)利用Adobe Illustrator間接繪制。 選擇Adobe Illustrator工具箱中的一種統計圖表工具,在繪圖區拖出一個矩形框來設置將要制作圖表的大小,然后在彈出數據對話框中直接輸入統計數據或導入Excel表格中的數據,確定后生成需要的統計圖表,最后保存為最低版本的EPS并用高版本CorelDRAW打開即可。但由于軟件兼容性問題,仍然存在一些不盡人意的地方,比如圖形數據的丟失、文本變曲等問題。

3)利用地理信息系統軟件的間接繪制。 常用的地理信息系統軟件有MapInfo、MapGIS、ArcGIS等,它們都是通過創建統計圖向導,選擇圖表樣式和其它相關設置后,根據圖層的屬性表數據進行自動生成,然后將生成的統計圖導出為EPS或PDF等矢量格式文件,最后再導入到CorelDRAW中。但這樣會出現信息丟失、縮放操作產生變形等問題。

綜上所述,現有這些方法普遍存在效率低、兼容性差、數據丟失、圖形變形等問題,所以一種全新的便捷、快速、準確、靈活的專題圖統計圖表制作方法應運而生。

3 統計圖表的新制作方法

3.1 程序開發原理及功能

使用Visual Basic平臺,建立工程文件,使用VB提供的ADO數據庫訪問技術和CorelDRAW提供的ActiveX Automation技術,在同一個VB應用程序中實現CorelDRAW與MDB數據庫的通信,然后添加相應控件,設計好程序界面(見圖1),通過對象訪問機制編寫功能程序,編譯成功后,發布成EXE應用程序文件。程序結構體系如圖2所示 。點擊“數據庫”菜單,會彈出“新建數據庫”、“打開數據庫”、“新建表”、“關閉數據庫”等子菜單,可以實現新建和打開MDB數據庫功能,并將表數據顯示在窗體的MSHFlexGrid控件對象中;點擊“圖表”菜單,會彈出各類統計圖表的生成子菜單,可以實現柱狀圖、折線圖、餅狀圖、環狀圖、雷達圖等常用統計圖表的繪制(包括單式和復式兩種),操作員在打開MDB數據庫后,選擇不同的生成統計圖表子菜單,便可在CorelDRAW頁面中生成相應的統計圖表;點擊“修改”菜單,會彈出“立體化”、“點替換”、“數據修改”等子菜單,可以對柱狀圖、餅狀圖和環狀圖等進行立體化處理,也可以對折線圖、雷達圖中的點符號進行點替換,還可以對打開的數據庫數據進行修改,其對應統計圖表也隨之自動變化。工具欄中不同的工具圖標,操作員也可通過點擊相應工具圖標實現各菜單功能。

圖1 程序界面

圖2 程序體系結構

3.2 開發步驟

1)新建VB工程,通過添加引用“Microsoft ActiveX Data Objects 2.5 Library”和“Corel-CorelDRAW 16.0 Type Library”兩個類庫文件,將工程與ADO和CorelDRAW連接起來,具體方法是在VB工程界面中選擇菜單“工程—引用”,在彈出“引用”對話框中勾選“Microsoft ActiveX Data Objects 2.5 Library”和“Corel-CorelDRAW 16.0 Type Library”兩個引用類庫文件。

2)在工程中添加菜單和相應的控件,新建CorelDRAW連接模塊和ADO連接模塊,通過CorelDRAW.Application和ADODB.Connection直接訪問CorelDRAW應用程序和MDB數據庫文件,實現相互訪問通信。

3)新建數據庫功能模塊、統計圖表生成模塊和統計圖表修改模塊,分別編寫各菜單的功能過程、函數。編譯運行成功后生成EXE應用程序,有利于代碼保護,方便共享傳輸。

3.3 統計圖表的實現過程

統計圖表的生成模塊是程序的核心部分,這里重點對統計圖表的數學模型進行分析。在生成統計圖表前,預先定義一個顏色數組,包括10種色彩對比鮮明的RGB色彩值,用于對不同組數據生成的復式統計圖表進行不同的填色區分,方便后期統一的更改編輯。

3.3.1 柱狀圖表

在生成柱形圖表前,首先要進行坐標軸的繪制。坐標軸包括橫坐標軸和縱坐標軸兩部分,橫坐標為變量,縱坐標為變量值。為了方便后期的縮放,本文中所采用的橫、縱坐標單位刻度長度都為10 mm,坐標原點設置在CorelDRAW頁面左下角頂點處,即(0,0)位置。

1)橫坐標軸長度L1是由變量數N來確定,即

L1=N×10.

(1)

2)縱坐標軸長度L2分兩種情況:

①當所給數據庫中數據最大值的首位數字M大于或等于5時

L2=(M+1)×10.

(2)

②當所給數據庫中數據最大值的首位數字M小于5時

L2=(M+1)×2×10.

(3)

式(3)可以保證縱坐標軸長度不會太短,當然此時標注單位刻度值也要相應減半。

橫坐標軸的實現相對簡單些,只是根據變量數確定軸長度后,添加刻度線及表中字段1對應的變量名即可。橫縱坐標軸的具體實現通過在模塊中編寫公共(Public)過程ZuoBiaoZhou(Combo1 As ComboBox),在后期統計圖表繪制過程中調用該過程即可。

坐標軸繪制完成后,再進行柱形圖表的生成。程序中是通過方法CreateRectangle(Left As Double, Top As Double, Right As Double, Bottom As Double)來創建矩形的,其中變量Left為矩形左邊橫坐標,Top為矩形上邊縱坐標,Right為矩形右邊橫坐標,Bottom為矩形底邊縱坐標。這里假設所給數據庫中縱坐標最大刻度值為YTopValue,各個變量值為Value(i),最大變量值為maxValue,最高矩形高長為maxLenth。矩形的高度Top反映出數據的大小,即由變量值Value(i)決定。

Top=max Lenth×Value(i)/max Value,

(4)

max Lenth=L2×max Value/YTopValue.

(5)

由式(4)、式(5)可以推出Top化簡后表達式為

Top=L2×Value(i)/YTopValue.

(6)

表1為2013年1~4月部分省區財政收入數據,根據該數據源建立數據庫文件后,生成的3種柱狀統計圖表如圖3所示。

表1 2013年1~4月部分省區財政收入 億元

圖3 生成的3種柱狀統計圖

3.3.2 折線圖表

折線圖與柱形圖具有相同的坐標軸,其繪制首先是確定數據對應的點,再用折線連接各點即可,所以關鍵是確定點的(X,Y)坐標值。其中Y值才能反映數據信息,表達式為

X=10×i-5,

(7)

Y=L2×Value(i)/YTopValue.

(8)

表2為2013年6月第3周武漢市溫度走勢數據,根據該數據源建立數據庫文件后,生成的折線圖表如圖4所示。

表2 2013年6月第3周武漢市溫度走勢 ℃

圖4 生成的折線圖

3.3.3 餅狀圖表和環狀圖表

餅狀圖表與環狀圖表的實現類似,都是通過不同數據對應餅狀圖或環狀圖中所占圓弧比例來表達的。即各變量值Value(i)所占該組數據總和SumValue的比例決定對應的弧度Arc,表達式為

Arc=360°×Value(i)/SumValue.

(9)

通過CreateEllipse2()方法,從12時方向開始順時針依次繪制各數據對應圖形(式中i=1,2,…),并通過定義的顏色數組填充不同色彩。對于環狀圖而言,在餅狀圖繪制完成后,多一步裁切步驟,即在以餅狀圖圓心繪制一個小同心圓進行裁切,便得到環狀圖。若為復式圖表,則圓弧半徑與SumValue成正比關系。根據表1數據生成的兩種餅狀圖表和兩種環狀圖表分別如圖5、圖6所示。

圖5 生成的兩種餅狀圖

圖6 生成的兩種環狀圖

3.3.4 雷達圖表

雷達圖同樣需要坐標軸,但與前面所述橫縱坐標軸不同,它的坐標軸數由數據變量個數(數據庫表中記錄數)N決定。相鄰兩軸以原點為中心,相差弧度為

Arc=360°/N.

(10)

各坐標軸長度與前面所述縱坐標軸長度L2一樣,不再重復,各坐標軸相同單位刻度用同心圓環連接。雷達圖的繪制關鍵是各組數據中各變量值Value(i)對應的在各坐標軸上位置的確定,程序中,通過定義一個Node類型的數組變量JieD(1 To N)存放各變量值在對應軸上的位置節點,該節點由變量值Value(i)在對應軸上長度位置處用函數AddNodeAt(Distance, cdrAbsoluteSegmentOffset) 添加一個節點得到

Distance=L2×Value(i)/YTopValue.

(11)

參數Distance確定后,即可獲取該節點在CorelDRAW頁面中的橫、縱坐標(PositionX,PositionY),然后用折線連接各節點即可輕松完成雷達圖的繪制。根據表2數據生成的雷達圖表如圖7所示。

圖7 生成的雷達圖

4 結束語

CorelDRAW中自動生成的統計圖表,實用性和準確性很高。對于生成的統計圖表,既可以進行立體化、點符號替換、數據圖形同步修改等,又可以不失真地等比例縮放和便捷的后期編輯,這樣不但豐富了專題地圖內容,而且增強了藝術效果。此統計圖表的自動生成實現,解決了以往傳統方法在CorelDRAW中繪制統計圖時存在的兼容性差、編輯困難、圖形變形、效率低等缺點,大大提高了專題圖制圖效率,并且成功引入了ADO技術,為以后CorelDRAW二次開發擴展了空間。

[1]高小明,湯青慧,溫俊麗.CorelDRAW中基于VBA的二次開發[J].測繪與空間地理信息,2006,29(6):54-56.

[2]黃仁濤,龐小平,馬晨燕.專題地圖編制[M].武漢:武漢大學出版社,2003.

[3]戴欣明.基于MapInfo & CorelDRAW的地質圖制作[J].測繪通報,2002 (5):39-40.

[4]劉志銘,等.Visual Basic數據庫開發實例解析[M].北京:機械工業出版社,2003.

[5]盧記軍.ADO數據庫訪問技術在CorelDRAW中的應用[J].微型電腦應用,2006(3):56-59.

[6]于冬梅,董羅海,張力果.數字地圖制圖理論方法與應用[J].地球信息科學,2003(6).

[7]熊金華,曹亞妮,程越.基于統計分析方法的地理要素顯示重要性確定研究[J].測繪工程,2012,21(3):26-30.

[責任編輯:張德福]

AutomaticimplementationofstatisticalchartinthematicmapbasedonCorelDRAWX6

LI Lun, ZHANG Zhi-peng, CHEN Shen

(Troops 61175, Wuhan 430074, China)

Relying on the excellent graphics and text editing function, CorelDRAW is popular with the cartographers, especially which plays an important role in the design and compilation of thematic maps. Based on the need of rapidly and exactly drawing thematic map statistical charts, ActiveX Automation and ADO database accessing technology are combined to apply Visual Basic programming language to do secondary development in CorelDRAW X6 in order to realize the automatic generation of a variety of commonly-used statistical charts, which will provide a reference for all kinds of thematic map content expression in the future.

CorelDRAW X6; ADO; Visual Basic; thematic map; statistical chart

2013-09-02

李 論(1987-),男,助理工程師,碩士研究生.

TP311

:A

:1006-7949(2014)01-0065-05

猜你喜歡
圖表數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
圖表
方圓(2016年22期)2016-12-06 19:27:28
雙周圖表
足球周刊(2016年14期)2016-11-02 10:54:56
雙周圖表
足球周刊(2016年15期)2016-11-02 10:54:16
圖表
足球周刊(2016年11期)2016-10-09 11:53:25
雙周圖表
足球周刊(2016年10期)2016-10-08 18:30:55
圖表
世界博覽(2016年16期)2016-09-27 18:25:26
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 国产精品吹潮在线观看中文| 精品一区国产精品| Aⅴ无码专区在线观看| 久久精品国产在热久久2019| 亚洲福利片无码最新在线播放| 国产福利观看| 免费Aⅴ片在线观看蜜芽Tⅴ | 免费一级大毛片a一观看不卡| 免费看av在线网站网址| 日韩精品一区二区三区大桥未久 | 精品亚洲国产成人AV| 美女内射视频WWW网站午夜 | 九九热在线视频| 免费一级毛片完整版在线看| 91福利片| 人妻丰满熟妇AV无码区| 国产美女无遮挡免费视频| 女高中生自慰污污网站| 亚洲天堂网视频| 国产永久在线观看| 亚洲日韩精品欧美中文字幕| 毛片一级在线| 国产黄色片在线看| 国产伦片中文免费观看| 久久综合激情网| 亚洲天堂自拍| 另类重口100页在线播放| 中文字幕亚洲专区第19页| 亚洲乱码视频| 久久国产亚洲欧美日韩精品| 亚洲经典在线中文字幕| 综合天天色| 91福利一区二区三区| 欧美性天天| 欧美午夜性视频| 全午夜免费一级毛片| 国产在线精品美女观看| 国产高清毛片| 日韩欧美高清视频| 午夜不卡福利| 99热国产这里只有精品无卡顿"| 国内精自线i品一区202| 国产无码精品在线| 中文字幕人成乱码熟女免费| 久久夜色撩人精品国产| 亚洲精品波多野结衣| 福利在线一区| 中文字幕首页系列人妻| 久无码久无码av无码| 久久无码免费束人妻| 高清精品美女在线播放| 欧美三級片黃色三級片黃色1| 亚洲精品爱草草视频在线| 无码高潮喷水专区久久| 9cao视频精品| 久久人人97超碰人人澡爱香蕉 | 色妞www精品视频一级下载| 狠狠干综合| 一区二区三区四区日韩| 女人18一级毛片免费观看 | 亚洲中文无码av永久伊人| 欧美不卡视频一区发布| AV不卡国产在线观看| 国产一区在线观看无码| 国产精品对白刺激| 色爽网免费视频| 乱色熟女综合一区二区| 亚洲床戏一区| 67194亚洲无码| 国产精品视频猛进猛出| 亚洲国产精品一区二区高清无码久久| 国产精品高清国产三级囯产AV| 欧美激情综合| 一区二区三区四区精品视频| 国产黄色视频综合| 中文字幕久久精品波多野结| 国产成年女人特黄特色大片免费| 国产精品一线天| 国产精品毛片一区| 久久黄色视频影| 欧美在线视频a| 国产高潮流白浆视频|