APP下载

基于GDI+的三维统计地图符号的研究与实现*

2011-12-23李双银李嘉星曹亚妮吴永明

地矿测绘 2011年3期
关键词:专题地图柱状图绘图

李双银,李嘉星,,曹亚妮,吴永明

(1.68029部队,甘肃 兰州 730020;2.信息工程大学 测绘学院,河南 郑州 450052)

基于GDI+的三维统计地图符号的研究与实现*

李双银1,李嘉星1,2,曹亚妮2,吴永明1

(1.68029部队,甘肃 兰州 730020;2.信息工程大学 测绘学院,河南 郑州 450052)

分析了三维统计地图符号的构图规律,并将其分为简单符号、复合符号和组合符号3类。在此基础上,提出了基于GDI+的三维统计地图符号的绘制方法。实践证明,利用该方法建立常用的三维统计地图符号库,并将其应用于专题地图的制作,能取得良好的效果。

GDI+;三维统计地图符号;构图规律;简单符号;复合符号;组合符号

0 引言

专题地图是突出表示一种或几种自然现象和社会经济现象的地图,如各种应急地图、旅游图、经济图、气象图和影像图等[1]。专题地图能够深入地揭示制图区域内某一种或者几种自然或社会经济现象,对于地理要素的表达形象、鲜明、生动、深刻。随着专题地图在国民经济生活中的广泛应用,其类型已经由单一的定性分析专题地图发展到定量、评价、三维综合景观等多类型专题地图。统计专题地图是专题地图中最常用、最直观的一类,目前统计地图制作工具主要有Adobe公司的Illustrator和Photoshop两款图形、图像处理软件以及MapInfo、SuperMap、ArcGIS等GIS软件中的统计地图制作模块。符号化是专题地图制图的关建环节,直接影响着地图的表达能力和显示效果。鉴于这些模块的统计符号都是二维符号和一些简单的三维符号,本文提出了一种基于GDI+的三维统计地图符号的绘制方法,该方法主要是从GIS系统的底层开发来探讨三维统计符号的设计。

1 三维统计地图符号的构图规律分析

按照符号与数据关系的复杂度,统计地图符号可以分为简单符号、复合符号、组合符号3大类,下面详细介绍3类统计符号的特点。

1.1 简单统计符号

简单统计地图符号无内部结构,主要用来表示单指标、单要素的分级特征和数值特征。表示分级特征时,有点、线、面3种形态。点状统计分级符号主要采用各种无内部结构的几何图形或者图片符号来表示。线状统计分级符号主要通过线状符号的粗细来表示。面状统计分级符号主要通过色相相同,饱和度或者亮度不同的色彩来表示。表示数值特征时,可以采用无结构的柱、矩形等基本几何图形来表示;也可以用几何图形的组合形式,即零钱法来表示,用不同的数目代表不同的数值,用户依据其数目来计算得出专题要素的具体值。简单统计符号,如图1所示。

图1 简单统计符号Fig.1 Simple statistic symbols

1.2 复合统计符号

复合统计地图符号是指能够表示总要素由各个子要素构成的比例关系的统计符号[2,4]。具体可以分为以下几类:

1)柱状图:通过分割柱体来表现总量与分量的对比关系。

2)条形图:在表示数量关系时,条形图的功能与柱状图基本一致,但在表现频率分布时,主要表述的是各组分量的情况。如:人口图中人口的年龄分组。

3)折(曲)线图:在表示频率关系时也是以一组分量的形式出现,与柱状图和条形图只是形式上差别,当分组较多时不宜采用。

4)饼图:表示总量百分比的方法,饼图有许多变种,包括圆环饼图、半圆环饼图、半圆饼图和分裂饼图等。

5)风玫瑰图:表现与空间方位相关的统计数据的数量对比关系,用于不同区域风向频率的对比,在气候图中常用到。

复合统计符号,见图2。

图2 复合统计符号Fig.2 Compound statistic symbols

1.3 组合统计符号

当同一区域或者同一定位点要配置多个统计地图符号时,为了显示的美观性和有序性,避免产生重叠,将各个统计符号组合为一个整体,这样就生成了组合统计符号。组合统计符号中的各个统计符号是相互独立的。常用的组合方式有柱状图与环状图、饼状图的组合,半圆和半圆的组合、以及圆与圆环的组合等。

1.3.1 同类数据的组合

在多数情况下依靠时间轴将其联系在一起,通过采用相同量纲的复合统计图型的排列、叠置、翻转展示不同时段数据间的对比关系,最常见的如相互叠置的饼图,顺序排列的带有构成的柱状图等。

1.3.2 相关数据的组合

以同一种统计符号出现时,可以根据数据相关类型考虑将两个符号放置成平行或对比的形式。有时几组数据间表面上没有直接的关联,往往可以采用几种统计符号来表达,常见的有用柱状表示一个区域的各月平均降雨量,用折线表示平均气温、日照时数等,这样的组合统计符号反映了该区域的气候特点。组合统计符号,如图3所示。

图3 组合统计符号Fig.3 Combination statistic symbols

图4中显示了各种统计符号[7],越靠近中间符号越简单,越往边上符号构成越复杂。

图4 统计地图符号的种类Fig.4 The kinds of statistic map symbols

2 三维统计地图符号的实现

2.1 GDI+绘图原理及优势

目前对矢量系统开发有较好支持的图形库主要有微软的GDI+,开源的 AGG,Cairo等[2]。作为微软的产品,GDI+在Windows系统下得能到较好的支持,是Windows系统底层开发的首要选择。设备环境是Windows程序、驱动程序和输出设备(如打印机、绘图仪)之间的纽带,GDI是一组C++类,它在驱动程序的协助下把数据描绘在硬件上,位于应用程序与硬件之间,把数据从一方传到另一方。在.Net中Microsoft解决了GDI中的许多问题,并让它变得更容易使用,这就是GDI的升级版本GDI+。

利用GDI+绘图的一个好处就是程序员不必知道任何关于数据在设备上渲染的细节,只需要知道对应的接口函数如何使用。与传统的GDI相比,GDI+主要有渐变画刷、独立的路径对象、矩阵对象、区域和多格式图片支持等特点。另外,GDI+能够定义Alpha通道合成运算,能够自定义线条样式,设置线宽并支持线头和线冒及线条拐角处的链接样式;提供了对矩阵计算的支持,可以通过矩阵运算来进行图形的平移、缩放、旋转、变换等操作;使用了浮点数作为数据源,提高了显示精度。

2.2 在VC6.0中使用GDI+的配置

VC6.0中默认支持GDI绘图[3],并不支持GDI+的绘图包,因此需要下载微软的GDIPlus支持包。一个完整的GDI+支持包至少应包括头文件 gdiplus.h,动态库文件 gdiplus.lib和gdiplus.dll三个文件。一般从官方网站上下载的支持包是一个文件夹,里面大致有26个文件,如图5所示。

图5 GDI+文件夹结构Fig.5 GDI+folder construction

在VC6.0中使用GDI+时,应将GDI+文件夹拷贝到工程目录下,并在项目工程中进行如下设置:

1)在头文件stdafx.h中加入3行代码:

#include"GDI+//GdiPlus.h"

using namespace Gdiplus;

#pragma comment(lib,"GDI+//GdiPlus.lib")

2)在APP类的头文件中声明一个全局变量m_gdiplusToken:

GdiplusStartupInput m_gdiplusStartupInput;

ULONG_PTR m_gdiplusToken;

3)在APP类的InitInstance()函数、ExitInstance()函数中加入以下代码:

InitInstance中添加:

GdiplusStartup(&m_gdiplusToken,&m_gdiplusStartupInput,NULL);

ExitInstance中添加:

GdiplusShutdown(m_gdiplusToken);

通过这些设置就可以在工程中利用GDI+提供的函数绘制三维地图符号。

2.3 三维统计地图符号的实现

2.3.1 三维效果的实现

符号的三维效果(光影效果)是通过GDI+中的渐变画刷来实现的,先由绘图函数生成图形路径,再由不同的颜色生成画刷,最终用画刷填充图形路径即可得到对应的三维符号,如图6所示。

2.3.2 组合符号的实现

统计符号虽然多样,但很多都是由各种简单符号组合而成的[5],而且在符号组合中需要考虑的问题很多,如定位点、压盖关系、颜色匹配等,图7显示出组合符号的实现过程。

根据上述方法,利用GDI+的绘图函数,本文实现了一些组合的复杂统计地图符号,如图8所示。

2.4 三维统计地图符号库的实现

为了管理这些三维统计地图符号,本文还设计了一个统计地图符号库,用于管理和维护所生成的符号 。符号库的设计遵循了完备性、灵活性、精确性、易用性、开放性这5个原则,能够有效地组织管理文中提到的3类统计符号。用户不仅可以对符号库内的符号进行增加、删除、修改,而且还可以用简单符号自己组合生成新的符号。本文设计实现的符号库,见图9。

图6 三维效果的实现过程Fig.6 Implementation process of 3D effect

图7 组合符号的实现过程Fig.7 Implementation process of combination symbols

图8 三维统计符号的实现效果图Fig.8 Implementation effect diagram of 3D statistic symbols

图9 统计符号库管理界面Fig.9 Management interface of library of statistic symbols

3 三维统计符号的应用

以河南省各类粮食产量、亩产量及增长率为实验数据,制作分区组合统计图,用结构环表示各类粮食的产量,用中间的柱表示粮食增长率,如图10所示。

4 结束语

本文在研究统计地图符号构图规律的基础上,着重探讨了基于GDI+的三维统计地图符号的实现方法,利用GDI+的绘图函数绘制各种复杂的三维统计符号,并设计了符号库对符号进行管理。以河南粮食数据为例,制作了分区统计图表三维专题图,验证了符号的实用性。本研究为三维统计地图符号的设计和实现提供了一个新思路,有利于提高统计地图的显示效果,提升各类专题信息的传输效率。

图10 分区统计图表专题地图Fig.10 The thematic map of the subarea statistics graphics

[1]曹亚妮.面向快速制作的专题地图符号生成研究[D].郑州:解放军信息工程大学,2010.

[2]扈洋,杨世杰.基于GDI+的数字地图符号设计[J].地理信息世界,2010(3):20 -24.

[3]李利正,杨世杰.基于 GDI+特殊统计图的设计[J].科技信息,2007(35):571-572.

[4]王宇红.专题地图可视化符号自动生成的研究[D].西安:陕西师范大学,2004.

[5]王海龙.统计数据地图可视化研究[D].郑州:解放军信息工程大学,2007.

[6]谢超,陈毓芬.基于GDI+的电子地图符号库的改进[J].测绘工程,2006,15(2):45 -49.

[7]陈棉,王秀斌,施建勇.空间信息多媒体可视化设计探讨[J].测绘通报,2007(7):54-57.

Research and Practice of 3D Statistic Map Symbols Based on GDI+

LI Shuang-yin1,LI Jia-xing1,2,CAO Ya-ni1,WU Yong-ming1
(1.68029 Troops,Lanzhou Gansu 730020,China;2.Department of Surveying and Mapping,Information Engineering University,Zhengzhou Henan 450052,China)

This paper analyzes the rule of composition of a map of 3D statistic map symbols.They are divided into three kinds:simple symbols,compound symbols and combination symbols.The paper puts forward drawn method of 3D statistic map symbols based on GDI+.The practice proved to apply that the method establish 3D statistic map symbols library in common use,and application to the making of thematic map could get better effect.

GDI+;3D statistic map symbols;composition rule of a map;simple symbol;compound symbol;combination symbol

P 285;TP 302.4

A

1007-9394(2011)03-0012-03

2011-03-28

李双银(1972~),男,甘肃临洮人,硕士,高级工程师,主要研究方向:数字地图制图和遥感摄影测量。

猜你喜欢

专题地图柱状图绘图
来自河流的你
“禾下乘凉图”绘图人
基于Unity3D 的冒泡排序算法动态可视化设计及实现
垂涎三尺
基于数据库的专题地图编制问题探讨
基于数据库的专题地图编制问题探讨
基于CorelDRAW与MAPGIS的专题地图制作技巧
由科研论文中一个柱状图引发的编辑思考
基于Android平台的柱状图组件的设计实现
基于Excel-VBA的深水井柱状图绘制程序的设计和实现