关于CorelDRAW VBA的地图制图符号化设计研究

(整期优先)网络出版时间:2018-04-14
/ 2

关于CorelDRAWVBA的地图制图符号化设计研究

王红伟王睿于兴超

辽宁大连116023

摘要:计算机技术引入地图学以来,对其建设和发展起到了巨大的促进作用,各种制图软件也应运而生。CorelDraw软件使用方便,能精确编辑任何线条、图形和文字,在平面设计中越来越受地图制图者的关注,十分适合编制小幅面、内容相对简单、数学精度不高的专题地图,尤其适用于城市专题图集的编制,能有效展示地图的艺术性效果。

关键词:CorelDRAW;VBA;制图符号化

1CorelDraw与VBA概述

CorelDraw是近年来被广泛应用在地图制图领域的矢量图处理软件,相对于传统的地图制图软件ArcGis、MapGis等,作为专业的图形图像软件,在地图的美观性上,coreldraw有其无法比拟的优越性,在菜单文件选项下,它有专门的“为彩色输出做准备”一项。应用ArcGis做初期的数据采集与库管理工作,然后应用MapGis做初步的地图成图、注记标注等,最后用CorelDraw进行图面美化与细节修饰等。

VBA(VisualBasicforApplications)是MicrosoftVisualBasic(VB)面向对象程序开发环境的一个子集,是新一代标准宏语言。VBA使用VisualBasicEditor交互开发环境和VB语言操作应用程序的对象来增强应用程序的功能。VBA为用户提供了一套客户化CorelDraw应用程序的图形用户界面,用户可以对应用程序中的对象进行有效地操作和处理。VBA使用VB语言,由于它多用于集成到别的应用程序并对应用程序的函数进行客户化,它才加上了“forApplications”,称作VBA。

2关于CorelDRAWVBA的地图制图符号化设计

2.1点要素符号化

CorelDRAW中符号替换主要包括两种方法:一是手动替换,即将新符号复制拖动到原始符号位置,然后删除原始符号,但某些矢量点要素尺寸极小,肉眼无法识别,而且这种方法人工干预强、效率低,不适宜大批量的符号处理;二是建立点状符号库,但是新绘制的符号入库前,必须合并成单一的图形对象,而且所有组成部分都必须封闭。

实现流程分为以下几个步骤:

1)在CorelDRAW文档中,首先创建“图式符号”图层,然后在该图层中设计并绘制新符号,并将其Name修改为对应符号化图层的Name;

2)利用Shape的PositionX、PositionY、SizeWidth和SizeHeight属性,构建X,Y函数,依次获取待符号化图层中每个要素各定位点的坐标;

FunctionX(thshpAsShape)AsDouble

IfOption2.Value=TrueOrOption5.Value=TrueOrOption8.Value=TrueThen

X=thshp.PositionX+thshp.SizeWidth/2

EndIf

IfOption1.Value=TrueOrOption4.Value=TrueOrOption7.Value=TrueThen

X=thshp.PositionX-thshp.SizeWidth/2

EndIf

IfOption3.Value=TrueOrOption6.Value=TrueOrOption9.Value=TrueThen

X=thshp.PositionX+thshp.SizeWidth*1.5

EndIf

EndFunction

FunctionY(thshpAsCorelDRAW.shape)AsDouble

IfOption4.Value=TrueOrOption5.Value=TrueOrOption6.Value=TrueThen

Y=thshp.PositionY-thshp.SizeHeight/2

EndIf

IfOption7.Value=TrueOrOption8.Value=TrueOrOption9.Value=TrueThen

Y=thshp.PositionY-thshp.SizeHeight*1.5

EndIf

IfOption1.Value=TrueOrOption2.Value=TrueOrOption3.Value=TrueThen

Y=thshp.PositionY+thshp.SizeHeight/2

EndIf

EndFunction

3)同样的原理,构建x,y函数,获取新符号的定位点坐标;

4)根据Frame中点选的原符号和新符号的定位点,利用Shape的Duplicate方法,依次将新符号复制到待符号化图层中每个要素的定位点上,然后利用ShapeRange的Delete方法将待符号化图层中原符号全部删除,最后利用ShapeRange的cut方法和Layer的Paste方法,将“图式符号”图层中新复制的符号剪切并粘贴到待符号化的图层中。

2.2线状要素的符号化

线状符号在形态上呈条带状延伸,沿着定位基线由分层的图元叠合而成。线状符号主要表示物体的类别、位置特征等,它的几何中心与地物实际位置是一致的。以道路为例,在CorelDRAW中道路的表示主要由两层组成:上面一层为浅颜色,线略细;底下一层为深颜色线较粗。程序实现方法如下:

Setlr1=ActiveDocument.ActivePage.CreateLayer("一级道路白")'创建图层

Setslayer=ActivePage.Layers("一级道路")

Index=slayer.Shapes.Count

Fori=IndexTo1Step-1

Setsshape=slayer.Shapes.Item(Index-0)

sshape.Outline.Width=1.8*iscale'道路设置宽度

sshape.Outline.Color.CMYKAssign0,0,0,100'道路颜色

sshape.Copy

Setlr1=ActivePage.Layers("一级道路白")

lr1.Paste'复制到"一级道路白"

Clipboard.Clear

sshape.Layer=slayer

Index=slayer.Shapes.Count

Nexti

2.3面要素符号化

面要素是指地图上填充于面状分布现象范围内,用于说明面状分布现象质量特征或数量特征的要素符号。以面状水系为例,主要是填充颜色和设置边线。具体实现代码如下:

Setmlayer=ActivePage.Layers("水系")

iscale=TextBox1.Text

Index=mlayer.Shapes.Count

Fori=IndexTo1Step-1

Setmshape=mlayer.Shapes.Item(Index-0)

mshape.Outline.Width=0.1*iscale'设置边线宽度'设置边线和面的颜色

'mshape.Color.CMYKAssign70,0,0,0

'mshape.Fill.HatchFill.Color.CMYKAssign70,0,0,0

mshape.Outline.Color.CMYKAssign50,0,0,0

mshape.Fill.UniformColor.CMYKAssign25,0,0,0

mshape.Layer=mlayer

Index=mlayer.Shapes.Count

Nexti

3结语

通过实践证明按照本文的地图制图符号化程序进行地图制图编制,有很多优点。主要体现在:1)符号化程序能快速生成所需的基础地理底图,快速的还原基本的地理底图;2)减少人工操作的参数不一致问题;3)制图区域跟数据源有关,数据冗余低,从而极大的提高了工作效率。

参考文献:

[1]ArcGIS到CorelDRAW平台的地图符号自动配置方法[J].严锐,任福,杨杨,陶桐桐.测绘地理信息.2017(03)

[2]CorelDRAW软件在计算机辅助产品设计与生产中的应用[J].袁玲.大众文艺.2014(05)

作者简介:

王红伟(1981.04.20)性别:女,毕业院校:解放军信息工程大学测绘学院,学历:大学本科工作任职经历2004年,专业方向:制图