用DELPHI开发”MapInfo MapX“

MapInfo MapX是一个用来做地图化工作的OCX控件,
首先是简介
是mapinfo4.0以后才有的
 MapX是一个OCX组件,可以被快速集成到使用Visual Basic、PowerBuilder、Delphi、Visual C++或其他面向对象的语言的客户端应用程序以及使用Lotus Script的Lotus Notes (v4.5)中。开发人员可以在他们熟悉的环境中工作,最终用户可以通过他们熟悉的应用程序来访问地图数据。
 MapX 的功能
 MapX不仅仅是一个“地图浏览器”。通过MapX,可以分析并直观地显示业务数据,创建或编辑地图图元,并按地理位置显示数据结果。
1、专题制图 - 使用专题制图显现数据。联合数据和地图中的每个图元,并在地图中用颜色编码(或其他样式)来表示数据。可使用六种不同的样式来观察数据(色彩范围、点密度、独立值、等级符号、饼图、直方图)。
2、逐层细化制图 - 可以通过简单的定点和单击来浏览数据,在OLAP S环境下,可以允许用户通过定点和单击逐层细化地图的某个区域。
3、数据绑定 - 地图可合并来自嵌套OCX的容器、ODBC或DAO数据源(例如MSAccess)的数据。MapX提供多种不同类型数据的绑定,包括邮政编码级别的地理编码。
4、注释 - 可以提供定位、高亮显示特定数据的功能,通过添加文本、符号和标注来使您的地图信息变得更加丰富。
5、图层化 - 显示和控制地图图层的显示,让它只在地图的缩放比例符合事先调整的距离时才显示。还可以使用或创建无缝地图图层,它可以把一组基表看作一个整体。特殊图层类型可以支持特殊类型的应用,如动态图层(用于实时跟踪)和用户描绘图层(用于描绘特殊的地图元素,如地图上方的标志)。
6、栅格图像 - 用一幅放在底层的栅格图像作为地图背景,使您的地图更生动、更详细。目前,主要是配合卫星行片,使地图更加逼真
7、自动标注 - 自动向地图添加标注,同时控制其属性及显示。
8、选择 - 通过分组和组织数据,发挥MapX的分析特性。即在一个指定的半径、矩形区域或指定点的范围内选择地图图元。
图元工厂 - FeatureFactory对象使您得以创建、合并和缓冲区或擦除点、线和区域图元。
工具 - 用户可以通过单击和拖动直接与地图交互。通过MapX内置的导航、选择和标注工具或自定义工具来对地图进行操作。
地图编辑 - 可以让用户在地图上添加、修改或删除图元。
投影和坐标系 - MapX对地图坐标系和投影的完全支持使您可以更精确地调整地图的显示并在自己的坐标系中处理X-Y数据。
9、远程空间服务器连接 - 可以连接运行在Oracle8.0.5、Informix或其他所支持的数据库上的Oracle8i Spatial和MapInfo SpatialWare上存储的真实数据。为集中管理和安全起见,空间服务器允许公司在企业数据库中主持他们的地图数据。象SpatialWare和Oracle8i Spatial之类的空间服务器还提供高级查询处理功能,并增加了用于处理组织机构的空间数据的服务器性能。在一个RDBMS中存储空间数据对于需要进行大量地图编辑和处理大型数据集的应用程序也是必要的。
但需要说明的是,mapinfo公司有专门用于web的maoxtrem 
安装 MapX
因为MapX是32位OCX,所以它需要一个32位版本的Windows (Windows 95/98或Windows NT 4.0)。MapX应用程序不能在Windows 3.1 中运行。
下面讲组织数据和地图
要使用 MapX,需要有您的记录和MapInfo地图文件。MapX 以 MapInfo 表的形式组织所有潜在信息。每个表都是一组用来在地图中创建图层的 MapInfo 文件。
文件如何组成表?
所有的 MapInfo 表都会拥有下列文件:
<文件名>.tab:描述 MapInfo 表的结构。它是描述包含数据的文件的格式的小文本文件。
<文件名>.dat:(.mdb、.aid 或 .dbf):这些文件含有表格格式数据。
<文件名>.map:描述图形对象(如果表没有地图对象则不存在该文件)。
<文件名>.id:是链接对象和数据的交叉引用文件(如果表没有地图对象则不存在该文件)。
<文件名>.ind:索引文件。索引文件允许使用 Find 对象来查找地图对象。
不熟悉,就讲一下MapInfo 表和 MapX 图层
每个可用地图表示的 MapInfo 表都能在地图上作为图层显示。例如,您可以显示客户表、街道表以及县边界表。
图层是透明的,而每一层都包含了地图的不同部分。这些图层是一层层叠加,这样您就可以看到整个地图信息。
  
什么是 GeoSets?
Geoset 保存了地图图层的集合以及一些对您来说简单易用的设置。其名称的由来是因为 Geosets 是由一些表示同一地理区域的以标准 MapInfo 格式出现的地图文件(.tab)组成的数据集。当您希望将多个图层作为示例地图使用时,会发现单独打开和显示多个图层是件多么费时的工作,Geoset 使您避免这样的情况。Geoset 的扩展名是 .gst。.gst 文件是文本文件,它包含若干用来告诉 MapX 显示什么表以及如何显示的元数据键值。
当打开 Geoset 时,它自动打开所有包括在 Geoset 中的文件并默认显示。开发者可以更改“默认显示”来迎合自己的需要。Geoset 设置包括投影、默认缩放值,对象的自动标注,缩放范围以及打开的表是否可见。MapX 也可以打开开发者指定的任意单个(.tab)地图文件。使用 Geoset 非常方便,无需 MapX 就能运行。MapX 将不会打开 MapInfo 工作空间(.wor 文件类型)。但在地图的组织上相当于MapInfo 工作空间
第三个概念:地图图元
以上是入门
下面讲的也是基础性的
 Map 对象
下列图表是 MapX 对象体系的局部,您可以看到 Map 对象存在于最顶端。每个 MapX 的对象、属性和方法都衍生于 Map 对象。每个在 Map 对象之下的属性和方法都会对生成整个 Map 对象有所影响。主要是由 DataSets、Layers 和 Annotations 对象定义每一个 Map 对象。
  
下表显示了一些由数值表示的 Map 对象属性。可以在“设计时”改变这些属性,也可以在“运行时”使用以下代码示例来更改。
属性 描述 代码示例 
 Zoom 设置在地图中显示的英里(默认的距离单位)数。 Map1.Zoom = 500 
 Rotation 对地图旋转指定的度数 Map1.Rotation = 179 
 CenterX 设置 x 和 y 坐标,它们可能代表经纬度。这是由地图的投影来决定的。 Map1.CenterX = -79.4458 
 CenterY 设置 x 和 y 坐标,它们可能代表经纬度。这是由地图的投影来决定的。 Map1.CenterY = 44.9932 
显示不正常
 Zoom 设置在地图中显示的英里(默认的距离单位)数。 Map1.Zoom = 500 
 Rotation 对地图旋转指定的度数 Map1.Rotation = 179 
 CenterX 设置 x 和 y 坐标,它们可能代表经纬度。这是由地图的投影来决定的。 Map1.CenterX = -79.4458 
 CenterY 设置 x 和 y 坐标,它们可能代表经纬度。这是由地图的投影来决定的。 Map1.CenterY = 44.9932 
用 Map 对象,可以通过操纵地图的几个方法和属性来控制地图如何来显示。有一些属性是由其他对象来表示的。例如,当您看到 MapX 地图时,也就是看到单独图层的集合,它是由 Layers 集合来表示的。Layers 集合是 Map 对象的属性。
现在让我们来看一看如何改变地图的属性。属性页允许我们操作 Map 对象的多个属性。
  
上面是属性页,可以直接修改,也可以在程序里修改 
下面讲图层
每一幅单独的地图是一个图层,MapX 把地图存储为图层的集合。
 区域地图
 
图层集合还有很多,以后再详细讲
下面是GeoSets
 GeoSet 是地图图层及其设置的集合。可以在“设计时”指定GeoSet 。如果在“运行时”设置,则先要删除所有已加载的图层和数据集,然后加载新的 GeoSet。
如前所述,在运行时指定要加载的其他 GeoSet、给地图对象添加图层,或是操作图层的外观等操作都可以通过属性页来实现,或者可以通过与 MapX 一起装载的 MapX Geoset Manager 程序  来实现(此程序可以在 MapX 程序组中找到)。
可以利用GeoSetManager管理工具更改图层设置,当认为满意时,就可以保存地图。这将把 GeoSet 文件(*.GST)写到驱动器中。当打开该 GeoSet 文件时,将返回所有的地图图层和设置。Geoset Manager 使您可以修改图层、管理缩放等级、标注,以及其他属性。
下面是GeoDictionary,数据绑定的
你可以把图片打包,压缩传他
利用MapXz作数据绑定或创建专题地图时,可以用 GeoDictionary来匹配数据源与地图图层。GeoDictionary 是一个保存了关于哪个地图图层可以匹配、哪个字段可以用作匹配字段的信息文件(一般命名为 geodict.dct)。如果想运用自动匹配/自动绑定,则必须在 GeoDictionary 中注册文件。例如,如果拥有按州划分的销售额的数据,那么 GeoDictionary 就可以确定此数据和“USA”地图图层相匹配。
修改 GeoDictionary
如果在做数据绑定时要利用自动匹配,则在 GeoDictionary 里注册 MapInfo表是必要的。在 MapX GeoSet Manager 的工具菜单下有执行GeoDictionary 程序的选项。MapX GeoDictionary 程序允许把新的MapInfo 表注册到 GeoDictionary 中。同时,在 MapX GeoDictionary 中,单击注册表……按钮,然后选择要注册的表,设置表属性并为其输入描述。如果要想自动地把这张表加载到 GeoSet 中,请单击添加按钮然后选择要把表添加进的 GeoSet 。
下面是基础部分的第五个问题:DataSets
 DataSets使您可以将数据绑定到地图。例如,如果您有一个按县划分的关于销售额的 MS Access 数据库和一幅县地图,您就可以把数据绑定在这幅县地图上,并可以发现这个按县划分的销售额趋势图,而以表格数据的形式则不容易突出显示该趋势。
如上所示,当 MapX 需要在数据和地图之间指定某个匹配时,该匹配是通过称为自动匹配/自动绑定的处理过程来确定的。如要利用自动匹配/自动绑定,首先必须在 GeoDictionary 中注册地图。一旦将数据和地图绑定,就可以看到相关的地理化信息。数据的直观表示使得专题地图的创建变得可行。专题就是以颜色划分的地图,以该方式来表现数据的变化趋势。我们将在以后章节中详细的讲解专题图的制作。
 Annotations 集合是把文本和符号放在地图上的简单方法。注释放在所有其他图层的最顶端,并且不和任何数据链接。如果您熟悉 MapInfo,Annotations的概念在目的上与地图的装饰图层比较相似。
下表列出了 Annotations 集合对象的方法和属性:
Annotations 集合方法 
表格显示不正常,表格项依次是
方法 描述 代码示例 
AddSymbol 向 Annotation 集合添加符号。使用默认样式(由 Map.DefaultStyle 指定)。 Map1.Annotations.AddSymbol  X, Y 
AddText 向 Annotation 集合添加文本。第四个参数表示文本在指定坐标系中的初始位置。 Map1.Annotations.AddText _ “Developer Services”, _ 79.44, 46.8889, _ miPositionTL Remove 从集合中删除指定的 Annotation。 Map1.Annotations.Remove 1 
RemoveAll 从集合中删除所有的 Annotation。 Map1. Annotations.RemoveAll 
Annotation 集合属性
 
 Editable 指定注释是否能够编辑。 Map1.Annotations.Editable _ = True 
Type 指定 Annotation 对象类型。 If Map1.Annotations(2).Type_ 
Graphic 包含了拥有 Annotation 属性的 Graphic 对象。请参阅联机帮助中的 Graphic 对象描述。  
请注意在注释对象中没有关于位置、符号样式或是注释的属性。注释的图形属性包含了该信息的图形对象。要修改注释,可修改注释的图形对象。
下列代码在指定位置添加符号:
'Add a symbol at location
Map1.Annotations.AddSymbol(X1, Y1);  
第七个问题:创建对象
在 MapX 对象模型中,可以使用下列对象类来创建独立对象。
 BindLayer  ODBCQueryInfo 
 BitmapSymbols  点集的集合 
 Feature  Point 
 Fields  Points 
 NotesQueryInfo  Rectangle 
 NotesViewInfo  Style 
Delphi 示例
Var
   s : variant;
begin
     s := CreateOleObject('MapX.Style.4');
     s.PickRegion;
     MapObject.Layers.Item(1).Style := s;
End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值