您当前的位置: 核心期刊论文发表咨询网电子论文》MapX的多字段专题饼图设计职称发表论文

MapX的多字段专题饼图设计职称发表论文

来源:核心期刊论文发表咨询网 所属分类:电子论文 点击:次 时间:2013-09-09 11:06

  摘要:本文以小灵通路测系统中同步与漂移测试数据为例,提出如何在VC++开发环境中利用MapX创建多字段的专题饼图,特别是如何利用安全数组进行数据绑定创建多字段的专题饼图。

  关键字:MapX 安全数组 专题地图

  引言

  组件式软件技术已经成为当今软件技术的潮流之一,组件式GIS技术将给整个GIS技术体系和应用模式带来巨大的影响。MapX 是MapInfo 公司提供的具有强大地图分析功能的 ActiveX控件,支持大多数标准的可视化开发环境并且可以脱离MapInfo的软件平台运行。利用MapX,能够简单快速地在企业应用中嵌入地图功能,增强应用的空间分析能力。

  在MapX中,专题地图是用来分析和表现数据的一种强有力的方式。利用专题地图,可根据表中特定的值来赋予地图对象颜色、图案和符号,从而把各种数据图形化,很直观地显示在地图上,为用户的决策支持提供依据。专题地图数据通常在创建地图时所基于的表中或在ODBC支持的外部数据源中,也可以在COM数据集安全数组中。在小灵通信号的测试分析系统中,地图格式支持栅格图与矢量地图,为提高效率、满足实时性的要求,相关待处理数据存放在安全数组中,创建专题地图时利用安全数组进行数据绑定。

  1 安全数组(SAFEARRAY)

  MapX既是一个自动化对象,也是一个标准的COM对象,它支持结构化存储技术、自动化技术等。自动化继承了COM的语言无关性、进程透明性等优点,也简化了COM的一些底层细节。但自动化技术有一组专用于自动化的数据类型,SAFEARRAY便是Automation中的标准数组存储方式。SAFEARRAY类型实际是一个结构类型,但它可用于描述各种数组,指定了数组每一维的边界信息。安全数组类型的使用主要是要定义一个安全数组及维数与维的边界。COM提供了一套API用于处理SAFEARRAY。为了保证程序和SAFEARRAY结构无关,程序中建立、读取、更改和释放SAFEARRAY都应该通过这些API进行,而不应该直接读写SAFEARRAY结构。其方法如下:

  ⑴ 定义安全数组

  ColeSafeArray theData;//或SAFEARRAY theData,用SAFEARRAYBOUND来设定维中的元素的个数及维的下界。

  ⑵ 设定维中元素的个数

  unsigned long dims[2]={row,col};//row是行数,col为列数。

  ⑶ 创建安全数组

  theData.Create(VT_VARIANT,2,dims);//创建一个二维的存放任意类型的安全数组,边界值为dims。

  ⑷ 定义安全数组元素索引

  long index[2];//index[0]为行标,index[1]为列标。

  ⑸ 数据的存放

  theData.putElement(index,ColeVariant(data));//把data放入安全数组中index 单元内。

  2 数据绑定

  数据绑定是将数据源中的数据导入MapX 的过程。为了增强GIS系统数据处理的灵活性,系统分开存储涉及的图形矢量数据及空间属性数据。MapX通过数据集集合(Datasets)对象,可以将用户的属性数据与地图的空间数据连接起来,属性数据与几何数据的关联是通过数据绑定实现的。数据绑定的数据源可以是ODBC数据源、MapInfo Table文件、安全数组等。要绑字一个数据源,首先要指定所绑定的图层,然后需要指定与图层中地图对象相匹配的关键字段。数据绑定主要有两个作用:以地图中的图形对象来显示数据及将属性数据绑定到地图中,并创建专题图。数据绑定的实现是通过Datasets.Add方法实现的。

  ⑴ DataSets.add方法原型如下:

  Datasets.Add ( Type, SourceData, [Name], [Geofield], [SecondaryGeofield], [BindLayer], [Fields], [Dynamic])//详解参见相关资料

  ⑵ 创建BindLayer

  当绑定时数据包含经度和纬度,且要在新的图层相应的位置上创建这些点,需使用BindLayer 对象。通过数据绑定,可以将BindLayer对象作为一个参数,使用Datasets.Add方法将自己的数据转变为一个DataSet。

  CMapXBindLayer BindLayer;

  BindLayer.CreateDispatch(BindLayer.GetClsid());

  BindLayer.SetLayerName(Customers);

  BindLayer.SetLayerType(miBindLayerTypeXY);//类型

  BindLayer.SetRefColumn1(X);//经度

  BindLayer.SetRefColumn2(Y);//纬度

  ⑶ 用Fields 集合

  在MapX中有Field对象和Fields对象。在数据绑定时,MapX 对绑定的每个数据列均需要开销,通过Field对象和Fields对象只绑定地图中需要的数据。使用Datasets.Add 的Fields 参数建立要绑定到地图上的字段。字段集合对象的Add方法的原型如下:

  [Field=]OBJECT.Add (DataSourceCol, [Name], [AggregateFunction], [Type]) // DataSourceCol取值为数据源中字段名或索引值,在本文中数据源为安全数组,其取值为索引值(COleVariant(1l)或COleVariant(2l)),详解参见相关资料。

  ⑷ 据绑定

  使用Datasets.Add可以将用户数据绑定到地图中。

  3 专题地图

  主题地图绘制是用于分析和可视化数据的一种强大方法。为数据提供图形格式,以便可以在地图上查看数据。制作专题地图是根据某个特定专题对地图进行“渲染”的过程。所谓的专题渲染,就是以某种图案或颜色填充来表明地图对象(点、线、区域)的某些信息(例如信号的同步状态、人口等等),也就是说,这类渲染存在着主题,经过这样渲染的地图就是专题地图。在小灵通信号的测试中,需要获取分析信号的多组数据与状态,本文以同步与漂移状态为例。通过使用饼状图的主题地图绘制,可以每行同时检查多个变量,可以显示每个统计组的统计数据,并查看其在每个饼状图中所占的比例。在创建专题图的过程中,有几个关键因素,包括专题图变量的确定、属性数据的获取以及专题地图的显示与控制。

  ⑴ 定专题图变量。在专题地图上显示的数据称为专题变量。根据要执行的专题分析的类型,地图可能会显示一个或多个专题变量,饼状图可以同时显示多个专题变量(Fields 集合),本文中包括三个专题变量:同步、单时隙同步、双时隙同步。

  ⑵ 属性数据的获取。数据来源于Field对象或Field集合,在Themes.Add方法中通过Fields参数传递。

  ⑶ 专题集(Themes)对象。MapX中使用Themes集合与Theme对象来实现对专题图的支持,每一个数据集对象都拥有一个专题集对象。

  ⑷ 创建专题地图,使用Themes.Add 方法为数据集创建Theme 对象。Add方法原型如下

  立刻注册,免费享受三天的试用收看期,火爆,激情 让您免费欣赏三天

  OBJECT.Add ([Type],[Field],[Name],[ComputeTheme])//Type取miThemePieChart

  ⑸ 通过处理ThemeProperties 对象,更改专题的属性,使用GetMultivarCategories ()。

  ⑹ 设置自定义图例。

  4 实例

  本文以小灵通信号路测中漂移数据为实验数据,以VC++6.0、MapX5.0为开发环境。在实施过程中利用芝测公司生产的接收仪器接收小灵通信号,分析提取出漂移与同步的数据。漂移分为:不漂移、漂移一、漂移二;同步分为:同步、单时隙异步、双时隙异步。其数据结构如下:

  struct PY

  {

  double lo;//经度

  double la;//纬度

  union{

  struct{

  long p1;// 不漂移或同步

  long p2;// 漂移一或单时隙异步

  long p3;// 漂移二或双时隙异步

  }pytb;

  int power;//值

  };

  将接收的数据放入安全数组中,绑定数据,创建专题地图,最后效果下如图:

  4 总结

  随着GIS技术的不断发展,组件GIS以其巨大的优势得到越来越广泛的应用。本文实现了利用MapX创建具有多专题变量的专题地图及控制专题地图的相关属性,实例运用于小灵通路测系统中。

  参考文献

  [1] MapInfo MapX v5.0 Developer’s

  [2] MSDN MSDN Library ht

  [3] 刘光 地理信息系统二次开发教程——组件篇 北京:清华大学出版社 2003

  [4] 潘爱民 COM原理与应用 北京:清华大学出版社 1999

转载请注明来自:http://www.lunwencheng.com/lunwen/dzi/1668.html

各行业核心期刊快速入口

医学类核心期刊汇总
口腔核心期刊
卫生核心期刊
药学核心期刊
眼科核心期刊
儿科核心期刊
医学核心期刊
兽医核心期刊
外科核心期刊
护理核心期刊
临床核心期刊
教育类核心期刊汇总
小学教育核心期刊
中学教育核心期刊
高等教育核心期刊
职业教育核心期刊
成人教育核心期刊
人文教育核心期刊
科学教育核心期刊
教育核心期刊
教学核心期刊
教育管理核心期刊
学科类核心期刊汇总
语文核心期刊
数学核心期刊
外语核心期刊
化学核心期刊
物理核心期刊
历史核心期刊
政治核心期刊
体育核心期刊
艺术核心期刊
法律核心期刊
经济类核心期刊汇总
市场经济核心期刊
经济核心期刊
金融核心期刊
财经核心期刊
审计核心期刊
旅游核心期刊
统计核心期刊
会计核心期刊
农业类核心期刊汇总
畜牧核心期刊
农业核心期刊
林业核心期刊
工业类核心期刊汇总
机械核心期刊
冶金核心期刊
电力核心期刊
铁路核心期刊
电气核心期刊
工业核心期刊
石油核心期刊
环境类核心期刊汇总
电力核心期刊
水利核心期刊
能源核心期刊
地质核心期刊
化工核心期刊
环境核心期刊
气象核心期刊
地理核心期刊
建筑类核心期刊汇总
测绘核心期刊
测量核心期刊
建筑核心期刊
交通类核心期刊汇总
铁路核心期刊
公路核心期刊
交通核心期刊
运输核心期刊
汽车核心期刊
轨道核心期刊
科技类核心期刊汇总
电子核心期刊
科技核心期刊
计算机核心期刊
其他类核心期刊汇总
管理核心期刊
档案核心期刊
心理核心期刊
政法核心期刊
文学核心期刊