• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于CorelDRAWX6的專題地圖統(tǒng)計圖表自動化實現(xiàn)

      2014-08-25 01:19:05張志鵬
      測繪工程 2014年1期
      關鍵詞:專題地圖統(tǒng)計圖表坐標軸

      李 論,張志鵬,陳 慎

      (61175部隊,湖北 武漢 430074)

      基于CorelDRAWX6的專題地圖統(tǒng)計圖表自動化實現(xiàn)

      李 論,張志鵬,陳 慎

      (61175部隊,湖北 武漢 430074)

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

      CorelDRAW X6;ADO;Visual Basic;專題地圖;統(tǒng)計圖表

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

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

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

      1 ActiveX Automation與ADO技術概述

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

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

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

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

      2 統(tǒng)計圖表的常規(guī)制作方法

      2.1 直接繪制法

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

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

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

      2.2 間接繪制法

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

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

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

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

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

      3 統(tǒng)計圖表的新制作方法

      3.1 程序開發(fā)原理及功能

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

      圖1 程序界面

      圖2 程序體系結構

      3.2 開發(fā)步驟

      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數(shù)據(jù)庫文件,實現(xiàn)相互訪問通信。

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

      3.3 統(tǒng)計圖表的實現(xiàn)過程

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

      3.3.1 柱狀圖表

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

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

      L1=N×10.

      (1)

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

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

      L2=(M+1)×10.

      (2)

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

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

      (3)

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

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

      坐標軸繪制完成后,再進行柱形圖表的生成。程序中是通過方法CreateRectangle(Left As Double, Top As Double, Right As Double, Bottom As Double)來創(chuàng)建矩形的,其中變量Left為矩形左邊橫坐標,Top為矩形上邊縱坐標,Right為矩形右邊橫坐標,Bottom為矩形底邊縱坐標。這里假設所給數(shù)據(jù)庫中縱坐標最大刻度值為YTopValue,各個變量值為Value(i),最大變量值為maxValue,最高矩形高長為maxLenth。矩形的高度Top反映出數(shù)據(jù)的大小,即由變量值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月部分省區(qū)財政收入數(shù)據(jù),根據(jù)該數(shù)據(jù)源建立數(shù)據(jù)庫文件后,生成的3種柱狀統(tǒng)計圖表如圖3所示。

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

      圖3 生成的3種柱狀統(tǒng)計圖

      3.3.2 折線圖表

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

      X=10×i-5,

      (7)

      Y=L2×Value(i)/YTopValue.

      (8)

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

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

      圖4 生成的折線圖

      3.3.3 餅狀圖表和環(huán)狀圖表

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

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

      (9)

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

      圖5 生成的兩種餅狀圖

      圖6 生成的兩種環(huán)狀圖

      3.3.4 雷達圖表

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

      Arc=360°/N.

      (10)

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

      Distance=L2×Value(i)/YTopValue.

      (11)

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

      圖7 生成的雷達圖

      4 結束語

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

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

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

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

      [4]劉志銘,等.Visual Basic數(shù)據(jù)庫開發(fā)實例解析[M].北京:機械工業(yè)出版社,2003.

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

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

      [7]熊金華,曹亞妮,程越.基于統(tǒng)計分析方法的地理要素顯示重要性確定研究[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

      猜你喜歡
      專題地圖統(tǒng)計圖表坐標軸
      統(tǒng)計圖表的數(shù)據(jù)分析與應用
      用坐標軸平移妙解斜率和(或積)為定值問題
      天安門地區(qū)三維立體實景系統(tǒng)建設及專題地圖服務
      北京測繪(2021年8期)2021-10-20 05:09:58
      2019年1-5月全國商用車市場銷售統(tǒng)計圖表
      商用汽車(2019年6期)2019-09-10 08:15:35
      2019年1-4月全國商用車市場銷售統(tǒng)計圖表
      商用汽車(2019年5期)2019-09-10 07:16:39
      基于CorelDRAW與MAPGIS的專題地圖制作技巧
      巧用仿射變換妙解高考解析幾何題
      地震應急專題地圖快速化產出研究
      山西地震(2014年3期)2014-09-11 02:09:12
      社會經濟統(tǒng)計地理信息系統(tǒng)中統(tǒng)計圖表功能的實現(xiàn)
      SUPERMAP DESKPRO在地震專題地圖中的制作方法
      新巴尔虎右旗| 磴口县| 手机| 安仁县| 永善县| 东海县| 鄂托克前旗| 天门市| 丁青县| 乐平市| 邯郸市| 罗江县| 太原市| 抚松县| 枞阳县| 敦化市| 滦平县| 佛教| 封丘县| 法库县| 凯里市| 汉沽区| 贵阳市| 临朐县| 孝感市| 凌源市| 墨脱县| 安塞县| 中超| 濮阳县| 昌平区| 舒城县| 旅游| 潜山县| 萝北县| 涿州市| 武平县| 凤阳县| 苏尼特左旗| 盐津县| 定兴县|