欢迎来到天天文库
浏览记录
ID:27092477
大小:58.00 KB
页数:7页
时间:2018-12-01
《基于mapx的多字段专题饼图的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于MapX的多字段专题饼图的设计摘要:本文以小灵通路测系统中同步与漂移测试数据为例,提出如何在VC++开发环境中利用MapX创建多字段的专题饼图,特别是如何利用安全数组进行数据绑定创建多字段的专题饼图。关键字:MapX安全数组专题地图引言组件式软件技术已经成为当今软件技术的潮流之一,组件式GIS技术将给整个GIS技术体系和应用模式带来巨大的影响。MapX是MapInfo公司提供的具有强大地图分析功能的ActiveX控件,支持大多数标准的可视化开发环境并且可以脱离MapInfo的软件平台运行。利用MapX,能够简单快速地在企业应用中嵌入地图功能,增强应
2、用的空间分析能力。在MapX中,专题地图是用来分析和表现数据的一种强有力的方式。利用专题地图,可根据表中特定的值来赋予地图对象颜色、图案和符号,从而把各种数据图形化,很直观地显示在地图上,为用户的决策支持提供依据。专题地图数据通常在创建地图时所基于的表中或在ODBC支持的外部数据源中,也可以在数据集安全数组中。在小灵通信号的测试分析系统中,地图格式支持栅格图与矢量地图,为提高效率、满足实时性的要求,相关待处理数据存放在安全数组中,创建专题地图时利用安全数组进行数据绑定。1安全数组(SAFEARRAY)MapX既是一个自动化对象,也是一个标准的对象,它支
3、持结构化存储技术、自动化技术等。自动化继承了的语言无关性、进程透明性等优点,也简化了的一些底层细节。但自动化技术有一组专用于自动化的数据类型,SAFEARRAY便是Automation中的标准数组存储方式。SAFEARRAY类型实际是一个结构类型,但它可用于描述各种数组,指定了数组每一维的边界信息。安全数组类型的使用主要是要定义一个安全数组及维数与维的边界。提供了一套API用于处理SAFEARRAY。为了保证程序和SAFEARRAY结构无关,程序中建立、读取、更改和释放SAFEARRAY都应该通过这些API进行,而不应该直接读写SAFEARRAY结构。
4、其方法如下:⑴定义安全数组ColeSafeArraytheData;//或SAFEARRAYtheData,用SAFEARRAYBOUND来设定维中的元素的个数及维的下界。⑵设定维中元素的个数unsignedlongdims[2]={ros);//创建一个二维的存放任意类型的安全数组,边界值为dims。⑷定义安全数组元素索引longindex[2];//index[0]为行标,index[1]为列标。⑸数据的存放theData.putElement(index,ColeVariant(data));//把data放入安全数组中index单元内。2数据绑
5、定数据绑定是将数据源中的数据导入MapX的过程。为了增强GIS系统数据处理的灵活性,系统分开存储涉及的图形矢量数据及空间属性数据。MapX通过数据集集合(Datasets)对象,可以将用户的属性数据与地图的空间数据连接起来,属性数据与几何数据的关联是通过数据绑定实现的。数据绑定的数据源可以是ODBC数据源、MapInfoTable文件、安全数组等。要绑字一个数据源,首先要指定所绑定的图层,然后需要指定与图层中地图对象相匹配的关键字段。数据绑定主要有两个作用:以地图中的图形对象来显示数据及将属性数据绑定到地图中,并创建专题图。数据绑定的实现是通过Data
6、sets.Add方法实现的。⑴DataSets.add方法原型如下:Datasets.Add(Type,SourceData,[Name],[Geofield],[SecondaryGeofield],[BindLayer],[Fields],[Dynamic])//详解参见相关资料⑵创建BindLayer当绑定时数据包含经度和纬度,且要在新的图层相应的位置上创建这些点,需使用BindLayer对象。通过数据绑定,可以将BindLayer对象作为一个参数,使用Datasets.Add方法将自己的数据转变为一个DataSet。CMapXBindLayer
7、BindLayer;BindLayer.CreateDispatch(BindLayer.GetClsid());BindLayer.SetLayerName("Customers");BindLayer.SetLayerType(miBindLayerTypeXY);//类型BindLayer.SetRefColumn1("X");//经度BindLayer.SetRefColumn2("Y");//纬度⑶用Fields集合在MapX中有Field对象和Fields对象。在数据绑定时,MapX对绑定的每个数据列均需要开销,通过Field对象和Fiel
8、ds对象只绑定地图中需要的数据。使用Datasets.Add的Fields参数建立要绑定到地图
此文档下载收益归作者所有