APP下载

基于CorelDRAWX6的专题地图统计图表自动化实现

2014-08-25张志鹏

测绘工程 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

猜你喜欢

专题地图统计图表坐标轴
用坐标轴平移妙解斜率和(或积)为定值问题
艺术跨学科之美——基于第五届中国中小学生统计图表设计活动的思考
2019年1-5月全国商用车市场销售统计图表
2019年1-4月全国商用车市场销售统计图表
基于数据库的专题地图编制问题探讨
基于数据库的专题地图编制问题探讨
2018年1—5月全国商用车市场销售统计图表
基于CorelDRAW与MAPGIS的专题地图制作技巧
巧用仿射变换妙解高考解析几何题
SUPERMAP DESKPRO在地震专题地图中的制作方法