330 likes | 594 Views
MapX 简介. MapX 是 MapInfo 公司向用户提供的具有强大地图分析功能的 ActiveX 控件产品。 它是基于 Windows 操作系统的标准件,能支持绝大多数标准的可视化开发环境如 Visual C++ 、 VB 、 Delphi 、 PowerBuilder 等 选用自己最熟悉的开发语言,轻松地将地图功能嵌入到应用中,可以脱离 MapInfo 的软件平台运行。. 利用 MapX ,能够简单快速地在各种应用中嵌入地图化功能,增强应用的空间分析能力,实现应用的增值。
E N D
MapX是MapInfo公司向用户提供的具有强大地图分析功能的ActiveX控件产品。 • 它是基于Windows操作系统的标准件,能支持绝大多数标准的可视化开发环境如Visual C++、VB、Delphi 、 PowerBuilder等 • 选用自己最熟悉的开发语言,轻松地将地图功能嵌入到应用中,可以脱离MapInfo的软件平台运行。
利用MapX,能够简单快速地在各种应用中嵌入地图化功能,增强应用的空间分析能力,实现应用的增值。利用MapX,能够简单快速地在各种应用中嵌入地图化功能,增强应用的空间分析能力,实现应用的增值。 • MapX采用基于MapInfo Professional的相同的地图化技术,可以实现MapInfo 具有的绝大部分地图编辑和空间分析功能。而且,MapX提供了各种工具、属性和方法,实现这些功能是非常容易的。
横向分析 • 是基于空间实体和空间索引相结合的一种结构。 • 空间实体是地理图形的抽象模型,主要包括点、线、面三种类型。任何点、线、面实体都可以用直角坐标点x、y来表示。 • 空间索引是查询空间实体的一种机制,通过空间索引,就能够以尽量快的速度查询到给定坐标范围内的空间实体及其所对应的数据。
纵向分析 • 是一种分层存放的结构。用户可以通过图形分层技术,根据自己的需求或一定的标准对各种空间实体进行分层组合,将一张地图分成不同图层。采用这种分层存放的结构,可以提高图形的搜索速度,便于各种不同数据的灵活调用、更新和管理。
MapX组件的模型结构 • MapX组件的基本组成单元是Object(单个对象)和Collection(集合)。其中集合包括对象,是多个对象的组合。每种对象和集合负责处理地图某一方面的功能。
位于顶层的是Map对象本身,其它均由Map对象继承。Layers、DataSets、Annotations是Map对象下面的三个重要的分支。位于顶层的是Map对象本身,其它均由Map对象继承。Layers、DataSets、Annotations是Map对象下面的三个重要的分支。 • 其中Layer主要用于操作地图的图层,DataSet用于访问空间数据表,Annotation用于在地图上增加文本或者符号
MapX的基本属性 • Map 每个Map对象主要包括Datasets、Layers、Annotations三个对象集合。 Map对象有一些主要的属性,如Zoom用来设置放大级别(在地图上显示的大小),Rotation控制地图的旋转角度,CenterX和CenterY用于设置x和y的坐标系,这要取决于地图的投影。 Map对象的许多属性本身又是一个对象,比如说一幅地图由多个图层组成,则在一个Map对象中存在一个单独的layers集合,其中包含所有图层的信息。
Layers 在MapX中,每张单独的地图都被表示成单独的一个图层,所有的图层存储在layers集合中。 Layers集合由Layer对象组成,按顺序编号为0到n。Layer对象由features对象组成,features对象又是由Feature对象组成,对应于地图中的点、线、区域或符号。
最上面一层为Layers(1),Layers(2)位于Layers(1)的下面,以次类推。最下面的图层最先绘制,最上面的图层最后绘制。在应用程序中,合理地安排好每层在Layers中的顺序是至关重要的。最上面一层为Layers(1),Layers(2)位于Layers(1)的下面,以次类推。最下面的图层最先绘制,最上面的图层最后绘制。在应用程序中,合理地安排好每层在Layers中的顺序是至关重要的。 另外,在进行地图选择操作时,根据要求调整图层的顺序也是十分重要的。MapX中的选择工具总是从可选择图层中的最上层开始选择,如果在地图上的同一位置存在多个位于不同层的地图对象,其结果是很难精确地选择到目标对象。因此,最好将被选择图层提到最上层显示。
GeoSets 是在GeoManager中建立好的.GST文件,类似MapInfo中的WorkSpace概念,是图层及其设置的集合,控制程序中显示的地图。 也可以在运行阶段设置GeoSet,此时将导致已经加载的所有图层和DataSet被删除而由GeoSet中定义的图层所代替。 可以使用GeoSet Manager程序来管理GeoSet 文件(*.GST)。默认情况下.GST文件存储在…\\mapx\maps目录下,可以调用GeoDictionary Manager程序进行修改,指向用户程序数据所在的位置。
Datasets 用于实现地图与数据的绑定。 建立地图信息与属性数据之间联系的过程称之为自动绑定或自动匹配(autobinding /automatching)。要实现这一过程,必须首先将地图在GeoDictionary 中注册。 属性数据表示的可视化使得创建专题地图成为可能。
Annotations 提供了操纵地图中文字和符号的简单方法。 Annotations位于所有其它图层的上方并且不与任何数据连接,有点儿象MapInfo中的透明图层。 Annotations包括以下主要的属性与方法: AddSymbol在Annotations中增加符号,符号类型使用Map.DefaultStyle定义; • AddText在Annotations中增加文本; • Remove删除特定的标注.; • Type取值为miSymbolAnnotation或miTextAnnotation。
Annotations还有一个非常重要的属性Graphic,其定义为Graphic对象,在该对象中包含了符号或文本的样式、位置等信息,即Graphic的Caption、Position、Style 、X、Y属性。如Annotations的Type属性定义为miTextAnnotation,则可以定义Graphic的Caption属性设置标注的字符串。
可创建对象 在MapX对象模型中,以下对象是可以被创建的: AffineTransform、BindLayer、BitmapSymbols、CoordSys、Datum、Feature、Fields、LayerInfo、Map、 ODBCQueryInfo、 Parts、Point、Points、Rectangle、RowValue、RowValues、Style、Variables、NotesQueryInfo、NotesViewInfo。
两个实用的程序 Geodictionary Manager • Geodictionary中包含了MapX进行自动数据绑定时可以进行匹配的MapInfo表的注册信息。只有能够被匹配的MapInfo表可以在Geodictionary中注册。 • 应用程序Geodictionary Manager的作用是用来操纵与管理Geodictionary。
每当创建一幅地图时,MapX就会在注册表的 • HKEY_LOCAL_MACHINE\Software\MapInfo\MapX\4.0\中查询GeoDictionary的注册键值。注册键值主要包括两方面的信息:一是GeoDictionary,用于定位.DCT文件;二是SearchPaths,其值是缺省的数据目录,用于定位.GST文件,可以是多个目录,之间用逗号隔开。
Geoset Manager 可以将所有的工作表集中在一起,连同每一层的设置一并存储到一个.GST文件中,下次使用时,只需打开此文件就可以了。 在Geoset Manager中,可以浏览已定义的GeoSet,也可以建立新的GeoSet。可以调出Layers控制对话框对每一图层分别进行设置,还可以改变投影方式。另外,在tools菜单中提供了Register Layers in GeoDictionary项,可以将当前.GST中的某些或全部.TAB文件直接注册到GeoDictionary中。
MapX支持的外部数据 MapX在中可以引用多种类型的外部数据。 • 地图数据:如果用户已经购买了或是利用MapInfo创建了MapInfo地图,可以直接将它们在应用中打开。 • 远程空间数据库:利用MapX可以访问保存在Oracle8i及MapInfo SpatialWare中的地图数据。其中,对Oracle8i的支持是MapX 4.0的新特性。通过Oracle8 Call Interface(OCI),MapX可以将存储在Oracle8i数据库服务器中的MapInfo空间数据和属性数据同时下载到本地。 • 其它远程数据:MapX支持多种对外远程数据的访问方式,如ADO、DAO、及RDO等,更可以通过ODBC使用更广范围内的数据。
数据绑定 • 在MapX中,属性数据与几何数据的关联是通过数据绑定实现的。
什么叫数据绑定 • 数据绑定是将外部数据引入MapX的过程。可以绑定的数据源包括以下类型:
数据绑定的强大作用 • 以地图中的图形对象来显示数据 • 通过数据绑定,可以将BindLayer对象作为一个参数,使用Datasets.Add方法将自己的表转变为一个DataSet。这将在地图中创建一个新的图层,并且将表中的数据以点等图形对象表示。一旦将数据引入地图,就可以很容易地使用MapX创建应用程序,并实现多种地图功能。 • 将属性数据绑定到地图中,并创建专题图 • 如果地图对象中包含相应的属性信息,也可以使用Datasets.Add方法将某个属性字段添加到地图中,进而就可以按照需要创建相关的专题图。
数据绑定的实现方法 • 使用Datasets.Add可以将用户数据绑定到地图中。 • 在MapX中,每张地图对应多个图层(Layers),每一个图层(Layer)都有一个Datasets,其中包含DataSet对象。 • Datasets拥有一些属性和方法,用来在集合中添加和删除Dataset 对象,主要方法包括Add和Remove。
使用Datasets.Add绑定的最终结果是Dataset对象的创建。这个Dataset对象被加入到Datasets集合中,包含了被绑定图层的对象的计算结果。使用Datasets.Add绑定的最终结果是Dataset对象的创建。这个Dataset对象被加入到Datasets集合中,包含了被绑定图层的对象的计算结果。 • 比如说,如果数据被绑定到US_States地图,每一个州将对应一个新的数据值,这个数据值被用来控制地图的绘制。如果数据源中含有某个州的多个记录,则这些记录的值可以进行累加、平均值等计算。使用Dataset的Value方法可以取得地图中每一个对象的计算结果
DataSets.Add方法详解 • Datasets.Add方法的使用主要需确定所绑定数据源的类型、绑定到地图的哪一层以及与地图之间关联的字段。语法如下: • Datasets.Add Type, SourceData, [Name], [Geofield], [SecondaryGeofield], [BindLayer], [Fields], [Dynamic]
Type • Type的取值范围为DatasetType常量,对应于可绑定的数据类型, DatasetType的定义如下: • DatasetType=[miDatasetADO,miDatasetDelphi,……,miDatasetLayer,miDatasetODBC,miDatasetUnbound] • 其中miDatasetLayer表示绑定的是MapInfo表(.TAB),miDatasetODBC表示绑定的是ODBC 数据源中的表。
SourceData • 根据DatasetType的不同,SourceData有不同的取值,如miDatasetLayer对应MapInfo表,miDatasetODBC对应ODBCQueryInfo对象等等。因此,在引如ODBC数据时,需要首先创建ODBCQueryInfo对象,并为其参数ConnectString、Datasource和SqlQuery赋值。
Name • String类型,唯一标识Dataset,默认名称为Dataset1、Dataset2……。
Geofield • 指定数据源中包含地理信息的字段名称或索引。如果不指定,则MapX会自动在GeoDictionary中搜索,看哪个字段包含地理信息。 • 如果要将数据表示为地图上的图形对象,数据源中GeoField所表示的字段必须唯一,并且被用来命名新的图层中的对象。非唯一值将在新的图层中以一点代替,重复记录对应的数据值将被求和。 • 如果定义了Fields,则Geofield参数将表示Fields中的字段,而不是sourcedata。 • 可以看到,Geofield在几何数据与属性数据关联中起了绝对关键的作用。
Secondary Geofield • 只有当被绑定的数据集有非唯一主键时才定义该参数。 BindLayer • 指明外部数据应该绑定到地图中的哪一层。.该参数可选,未指定时MapX自动在GeoDictionary中查找相匹配的图层。但是从性能考虑,在肯定的情况下应当明确指定。
Fields • 描述外接数据源中的哪些字段被引用,以及当数据源中有多条记录对应一个地图对象时使用哪些集合函数,默认的集合函数是SUM(求和)。 • 如果该参数有定义,则Geofield和SecondaryGeofield参数均将其作为参照。 Dynamic • 布耳类型参数,用于控制数据绑定是否动态,默认为False,表示静态绑定,即当数据库被打开时MapX将拷贝所需数据;如果设定为True,MapX会以实时的方式访问数据。