基于GDI+的地形图符号库中点符号的设计和实现

2016-03-30 15:12秦佐刘鹏程
城市勘测 2016年3期
关键词:弧段定位点拐角

秦佐,刘鹏程

(长沙市规划勘测设计研究院,湖南 长沙 410007)



基于GDI+的地形图符号库中点符号的设计和实现

秦佐*,刘鹏程

(长沙市规划勘测设计研究院,湖南 长沙410007)

摘要:地形图符号库是数字化成图系统与地理信息处理软件中的一个重要组成部分。符号绘制是实现地图符号库的关键,GDI+作为微软推出的最新的图形设备接口,与之前的GDI相比,具有更加强大的图形图像处理功能,给地图符号带来了新的绘制技术。本文在分析GDI+的基础上,按照分层的思想归纳了点符号的构成单元,并通过组合GDI+函数绘制出符号,并在此基础上提出了一些地图符号绘制改进的方法。

关键词:地图符号;GDI+;点符号;算法优化

1引言

随着新地物的不断出现,对地形图图示进行相应的增添和修改是一个非常重要的工作,目前的绘图软件均带有地图符号制作功能,已经有很多文献做了这方面的研究,比如利用.NET、SVG、ObjectARX等软件,但仅局限于在自身软件平台上加以开发,通用性不强[1~4],GDI是Windows系统的重要组成部分,是与设备无关的图形设计平台,因此通用性更强。由于一些特殊地物或者每个单位要求会稍有区别,因此国外的软件不适合我国的国情需要,不能自定义符号库[5]。因此,加强地图符号库的管理,增进对地图符号库设计技术的交流,研究出一套开放式的地图符号设计与实现方法,显得尤为重要[6~8]。本文旨在利用VC++平台,以GDI+图形处理接口为基础,开发出一套参数化的点符号制作方法[9,10]。

2点符号的设计

点符号的设计必须研究点符号的构成规律,并设计出能够描述所有点状符号的基本单元。

2.1点符号的组合形式

对于简单几何图形的点符号,如图1所示,均由点、线和圆构成。

对于复杂的点状符号,有些没有明显的几何规律,采用简单符号的组成方式难以实现,则需要加入新的描述方式,如填充法,弧段等,如图2所示。

2.2点符号的参数化基本单元

针对点符号的图形特点,设计了一个通用的类模板。本文经过对国标地形图图式[10]中约172个点符号进行组合分析,设计了5种图素及其描述参数。

(1)圆:图素定位点为圆心

描述参数为:C,X,Y,a,b,counts,angle,filled,

penwidth,r,填充模式。

其中:C:表示该图素类型是圆;X,Y:代表图素定位点与符号定位点的偏移量;a,b:代表图素旋转点与符号定位点的偏移量,一般均采用0值,即与符号定位点一致;counts:代表图素的个数;angle:代表图素整体旋转的角度,以度为单位。;filled:代表图素是否以指定颜色填充;penwidth:代表画笔的宽度;r:表示圆的半径;填充模式:值取1或者0。为1时,图素的颜色将是画布背景色;为0时,图素的颜色为用户指定的颜色。参数的几何构成如图3所示:

(2)弧段:图素定位点为弧段所对应的圆心

描述参数为:A,X,Y,a,b,counts,angle,filled,penwidth,r,beginangle,endangle,closed,leftCap,rig htCap,填充模式。

其中:A:表示该图素类型是弧段;X,Y,a,b,counts,angle,filled,penwidth,r:同上;beginangle:表示弧段的起始角度,以度为单位从X轴顺时针测量;endangle:表示弧段起始角度和弧线末尾之间的角度,以度为单位;closed:表示是否构成封闭的扇形区域;leftCap:表示图素的起始线帽;rightCap:表示图素的结束线帽;填充模式:同上。参数的几何构成如图4所示:

(3)拐角:定位点为拐角点

描述参数为:L,X,Y,a,b,counts,angle,filled,penwidth,LeftLength,RightLength,LeftAngle,RightAngle,closed,leftCap,rightCap,填充模式。

其中,L:表示该图素类型是拐角;X,Y,a,b,counts,angle,filled,penwidth:同上;LeftLength:代表拐角图素的左边长;RightLength:代表拐角图素的右边长;LeftAngle:代表拐角图素的左边与x轴(横轴)水平方向夹角;RightAngle:代表拐角图素的左边与x轴(横轴)水平方向夹角;closed:表示该拐角是否首尾闭合,构成封闭的区域,1表示闭合,0表示不闭合;leftCap,rightCap,填充模式:同上。参数的几何构成如图5所示:

(4)矩形:定位点为矩形几何中心

描述参数为:R,X,Y,a,b,counts,angle,filled,penwidth,w,h,填充模式。

其中,R:表示该图素类型是矩形;X,Y,a,b,counts,angle,filled,penwidth:同上;w:代表矩形的宽度;h:代表矩形的高度;填充模式:同上。参数的几何构成如图6所示:

(5)等边三角形:定位点为三角形的

描述参数为:T,X,Y,a,b,counts,angle,filled,penwidth,Length,填充模式。

其中:T:表示该图素类型是等边三角形;X,Y,a,b,counts,angle,filled,penwidth:同上;Length:代表等边三角形的边长;填充模式:同上。参数的几何构成如图7所示:

2.3点状符号的数据组织

本文设计的点状符号数据组织格式为:

点状符号编码1;图素1;图素2;图素3;……#符号名称1

点状符号编码2;图素1;图素2;图素3;……#符号名称2

点状符号是由多种图素按照一定的规律组合而成的,选择适当的图素类型和图素参数,就能方便地完成点状符号的描述。图1和图2中所示符号的图素选择情况如表1所示:

确定好图素的类型和个数后,可设置图素的参数值,再按照点状符号的数据组织方式加以描述,带有方向性质的点符号,如流向,将绘图时设置的角度保存为属性数据,再读入到angle参数当中。本文以独立天文点为例,参数描绘为:

110402;L,0,-2,0,0,1,0,0,1,1.45,1.45,-72,-72,0,16,16;A,0,0,0,0,1,0,1,1,0.3,0,360,0,16,16,0#独立天文点

3点符号的实现

3.1点符号的绘制流程

3.2符号管理器

点符号管理器中符号即为设计出的图例,另外,通过点符号管理器,还可以更改点符号的类型、颜色和大小设置。如图9所示:

4改进

在对面域进行符号化时,点状符号的填充一直是个难点。需要先计算填充的点状符号具体位置,然后根据符号样式绘制。本文的改进在于充分利用了GDI+的栅格图像操作功能,提高了符号的绘制速度。

在GDI+中有图形的拷贝函数,能够完整复制一张在内存中已绘制完的位图,本文利用这一功能设计的改进方法:先根据所需要填充的符号样式,在内存中新建一张适当大小的位图样图,最好是点符号尺寸的最小外接矩形大小,背景色通过Alpha值设为透明,再读取填充符号的描述数据加以绘制;确定好填充点的屏幕位置,利用Clone函数,以内存中的样图为拷贝模板,复制出一张一模一样的位图,再将其绘制到屏幕上。令m_nWidth,m_nHeight分别为点状符号最小外接矩形的宽和高,m_CompleteGraphics为屏幕画板,pt为符号填充点。步骤如下:

(1)创建内存样图:m_MryBitmap=new Bitmap(m_nWidth,m_nHeight);

(2)创建内存样图画板绘制:m_MerGap=Graphics::FromImage(m_MryBitmap);

(3)创建空白位图:m_CopyBitmap=new Bitmap(m_nWidth,m_nHeight);

(4)复制图形:m_CopyBitmap=m_MryBitmap.Clone();

(5)在屏幕上绘制图形:m_CompleteGraphics->DrawImage(m_CopyBitmap,pt)。

5总结

本文提出了组成点状符号的5类图素:圆、拐角、弧段、矩形和等边三角形,给出了各类图素的参数化描述结构,同时设计了图素的组合形式。并把所设计的地图符号库成功运用于村镇增量信息更新系统(eVillageUpdateSystem)的开发中。设计改进并实现了提高面域的点状符号填充速率的方法。

参考文献

[1]李青元,李洪省,刘皓晨. GIS符号库数据模型抽象及其交换格式研究[J]. 武汉大大学报.信息科学版,2008,33(6):565~568.

[2]徐拥国,钱佳智,陈荣. 基于.NET的GIS地图符号库的设计与实现[J]. 城市勘测,2016,1:135~137.

[3]高金锋,陈笑蓉,陈笑媛. 基于SVG的地图符号库设计[J]. 贵州大学学报·自然科学版,2009,26(1):74~76.

[4]张巨林,陈兆烟,谢刚生. 基于ObjectARX的用户地图符号库系统的设计与开发[J]. 测绘通报,2013(11):109~111.[5]Colavolpe,Giulio,etal. On map symbol detection for ISI channels using the underboeck observation model[J]. In IEEE communications letters,2005,9(8):720~722.

[6]杨勇,李霖,王红. 地图制图软件中符号图形的研究[J]. 测绘信息与工程,2007,32(3):46~48.

[7]麦照秋,韩雪华. GIS数据用于CorelDRAW地图制图方法的研究[J]. 测绘通报,2008(2):62~64.

[8]车森,孙群,刘海砚. 线状地图符号设计及其制图表达研究[J]. 测绘通报,2013(9):95~97.

[9]秦佐,周晓光,刘军生等. 基于GDI+的复杂线状符号优化算法[J]. 测绘科学,2011,36(4):183~185.

[10]秦佐. 基于GDI+的地图符号库的设计开发与优化[D]. 长沙:中南大学,2010.

[11]国家基本比例尺地图图式第1部分:1∶500 1∶1000 1∶2000地形图图式[S].

The Design and Realization of Point Symbols in the Topogrphic Map Symbol Database Base on GDI+

Qin Zuo,Liu Pengcheng

(Changsha Planning Survey & Investigation & Design Institute,Changsha 410007,China)

Key words:topograhic symbols;GDI+;point symbols;algorithm optimization

Abstract:Topographic map symbol database is an important part of the digital drawing system and geographic information processing software. Symbol drawing is the key factor of the realization of map symbol database. Compared with the previous GDI,GDI+ has a more powerful image processing function as the latest Microsoft’s graphics device Interface,bringing a new rendering technology. In the paper, the structure units of point symbols are hierarchical summarized based on analysis of GDI+,and then symbols are rendered by the combination of GDI functions. Finally,the method to improve topograhic symbols is proposed.

文章编号:1672-8262(2016)03-63-04

中图分类号:P208.1

文献标识码:B

*收稿日期:2016—02—25

作者简介:秦佐(1985—),男,工程师,主要从事城市测绘及地理信息系统研究和应用工作。

猜你喜欢
弧段定位点拐角
基于改进弧段切点弦的多椭圆检测
钢丝绳支撑波状挡边带式输送机物料通过支座的轨迹研究
数独小游戏
交通运输网络的二叉堆索引及路径算法优化
Where Is My Home?
电弧增材制造过程的外形控制优化
复杂零件的曲面反求算法及3D打印修复方法研究
汽车大灯定位方案设计研究
我的结网秘籍
走过那一个拐角