300 likes | 556 Vues
RSGIS. MapInfo 之. MapX 开发. 版权所有 • 地理信息系统教研室. RSGIS. 关于 MapX-----GIS 控件. MapX 是一个基于 ActiveX(OCX) 技术的可编程控件。它使用与 MapInfo Professional 一致的地图数据格式,并实现了大多数 MapInfo Professional 的功能。
E N D
RSGIS MapInfo 之 MapX 开发 版权所有•地理信息系统教研室
RSGIS 关于MapX-----GIS控件 MapX 是一个基于ActiveX(OCX)技术的可编程控件。它使用与MapInfo Professional 一致的地图数据格式,并实现了大多数MapInfo Professional 的功能。 MapX 为开发人员提供了一个快速、易用、功能强大的地图化组件。在VB,Delphi,PowerBuilder,VC 等可视化开发环境中,只需在设计阶段将MapX 控件放入窗体中,并对其进行编程,设置属性或调用方法或相应事件,即可实现数据可视化,专题分析,地理查询,地理编码等丰富的地图信息系统功能。 MapX 定义了一个类体系,以有效的组织图形元素,图层,属性数据等对象。 版权所有•地理信息系统教研室
RSGIS MapX的主要优点 MapX易于使用且价格低廉. MapX能实现Pro 95%以上的功能。 MapX用于实时监控,GPS和监控等。 MapX提供面向对象开发,提供更为广阔的开发空间 MapX为WEBGIS的开发打下基础。 MapX主要欠缺的功能 数字化仪输入 排版输出 PRO工具管理器中所有的工具,如数据转换 Mapx不支持统计图 版权所有•地理信息系统教研室
RSGIS MapX 45类图 MapX组件的基本组成单元是Object(单个对象)和Collection(集合)。其中集合包括对象,是多个对象的组合。每种对象和集合负责处理地图某一方面的功能。位于顶层的是Map对象本身,其它均由Map对象继承。Layers、DataSets、Annotations是Map对象下面的三个重要的分支。其中Layer主要用于操作地图的图层,DataSet用于访问空间数据表,Annotation用于在地图上增加文本或者符号。 版权所有•地理信息系统教研室
RSGIS Geoset 是地图图层及图层属性值的集合。GeoSet 决定地图对象中放入的表的库名以及他们的设置值。 Layers, Layer用户的数据反映在地图上通常根据点、线、面的层次结构进行归类。每一个独立的图层都可以作为一个独立的地图。MapX中调用的是一个由多个独立地图图层组成的地图集合。 Feature, Features, Selection图层对象是由图形对象(Feature)集合、属性以及样式组成的。图形对象集合(Features Object)是由多个图形对象(Feature Object)组成的 Annotations 利用注释在地图上显示相应的文本或者符号。类似与Professional 中的装饰层 Datasets可以将外部数据与你的地图进行绑定。 Themes 专题化地图是根据特定专题普染地图的过程。 版权所有•地理信息系统教研室
RSGIS MapX 45的功能 • MapX 的主要功能包括: • 显示MapInfo 格式的地图; • 对地图进行放大、缩小、漫游、选择等操作; • 专题地图; • 图层控制; • 注解:提供方向、加亮显示特殊数据,加入文本、符号、表格使地图信息更加丰富直观; • 数据绑定; • 动态图层和用户绘图图层; • 生成和编辑地图对象; • 简单地理查询:边界查询,地址查询。 • 栅格图象 • 远程空间数据服务器 版权所有•地理信息系统教研室
RSGIS MapX 45 VS MapObjects 2.0 版权所有•地理信息系统教研室
RSGIS MapX开发语言 版权所有•地理信息系统教研室
RSGIS MapX 45 支持的外部数据 (1) 地图数据:MapInfo 格式 (2) 远程空间数据:Oracle8i, MapInfo SpatialWare (3) 其它远程数据:ADO,DAO,ODBCc 版权所有•地理信息系统教研室
RSGIS MapX 的数据源 MapInfo采用双数据库存储模式,即其空间数据与属性数据是分开来存储的。属性数据存储在关系数据库的若干属性表中,而空间数据则以MapInfo的自定义格式保存于若干文件中,二者通过一定的索引机制联系起来。为了提高查询和处理效率,MapInfo采用层次结构对空间数据进行组织,即根据不同的专题将地图分层(图层还可以分成若干图幅),每个图层存储为若干个基本文件。 (1) 属性数据的表结构文件.TAB (2) 属性数据文件.DAT (3) 交叉索引文件.ID (4) 空间数据文件.MAP (5) 索引文件.IND 版权所有•地理信息系统教研室
RSGIS VB 工具箱 Form 工程窗口 Project Window 属性窗口 代码窗口 版权所有•地理信息系统教研室
RSGIS 开始 MapX 45 开发(With VB) • Loading MapX • Start Visual Basic and select New project from the dialog box. Now right-click on the toolbox (the left-hand-side toolbar), and choose Additional Controls. Or through menu:Project->Components MapX Map Control 版权所有•地理信息系统教研室
RSGIS 开始 MapX 45 开发(With VC) 版权所有•地理信息系统教研室
RSGIS 两个程序 Geoset Manager:如果你确定你得到的地图,你就可以将它保存为一个GeoSet (*.GST) 文件。当你打开这个GeoSet 文件,所有的地图图层和设置都将以保存值返回。使用geosetmanager的时候,所有的.gst文件要放在C:\Program Files\MapInfo\MapX 4.0\Maps>目录下。 Geoset Dictionary:用于外部数据与图层的自动绑定,以及创建专题图层。实际上是一个文件包含有数据绑定的信息geodict.dct。 版权所有•地理信息系统教研室
RSGIS 使用地图与图层 • 给表单加入地图控件 • (1)双击工具跳上的地图控件或拖动地图控件到表单上 • (2)调整地图控件的大小至合适尺寸 • 添加地图数据 地图控件 版权所有•地理信息系统教研室
RSGIS • 添加Pan和Zoom控制 工具 Private Sub Command1_Click() Map1.CurrentTool = miZoomInTool End Sub Private Sub Command2_Click() Map1.CurrentTool = miZoomOutTool End Sub Private Sub Command3_Click() Map1.CurrentTool = miPanTool End Sub • Resize Private Sub Form_Resize() Map1.Move Map1.Left, Command1.Top + Command1.Height, ScaleWidth, ScaleHeight End Sub 版权所有•地理信息系统教研室
RSGIS • 添加点、线、面、文本工具 工具 版权所有•地理信息系统教研室
RSGIS • 自定义工具 创建自定义工具:Map1.CreateCustomTool RULERTOOLID, miToolTypeLine, miSizeCursor 响应选中工具:Map1.CurrentTool = RULERTOOLID 响应鼠标按下消息 响应鼠标移动消息 版权所有•地理信息系统教研室
RSGIS 图层 • 用户的数据反映在地图上通常根据点、线、面的层次结构进行归类。每一个独立的图层都可以作为一个独立的地图。MapX中调用的是一个由多个独立地图图层组成的地图集合。 Pacific Ocean 版权所有•地理信息系统教研室
RSGIS • 图层管理 Private Sub ListAllLayer() Dim x As Integer List1.Clear For x = 1 To Map1.Layers.Count List1.AddItem Map1.Layers(x).Name Next End Sub Private Sub Form_Load() ListAllLayer End Sub • 所有图层列出 Private Sub Command4_Click() Map1.Layers.LayersDlg End Sub • 添加图层管理 Private Sub Command5_Click() Dim selectlayer As Integer selectlayer = List1.ListIndex If selectlayer = -1 Then Exit Sub End If Map1.Layers.Remove selectlayer + 1 ListAllLayer End Sub • 删除图层 Private Sub Command6_Click() Map1.Layers.RemoveAll ListAllLayer End Sub • 删除所有图层 版权所有•地理信息系统教研室
RSGIS • 层的属性 Map1.Layers.Item(1).Visible = False Name 图层的名称。 MsgBox Map1.Layers(4).Name Visible 图层是否可见。 Map1.Layers.Item(2).Visible = False OverrideStyle 是否替代该图层的默认显示特性。 Map1.Layers(9).OverrideStyle = True Style 如果 OverrideStyle 为真时图层样式将应用。 Map1.Layers(9).Style = newstyleobject ZoomLayer 设置图层缩放打开或关闭。 Map1.Layers(“States”).ZoomLayer = True ZoomMin 设置图层可见的最小缩放级别。 Map1.Layers(“States”).ZoomMin = 45 ZoomMax 设置图层可见的最大缩放级别。 Map1.Layers(“States”).ZoomMin = 580 Selectable 当用户单击该图层时设置 MapX 是否认可。 Map1.Layers(“States”).Selectable = True AutoLabel • 外部加图层 版权所有•地理信息系统教研室
RSGIS • 添加标注 Private Sub Command7_Click() Dim UsLayer As Layer Dim USData As Dataset Set UsLayer = Map1.Layers.Item("USA") Set USData = Map1.Datasets.Add(miDataSetLayer, UsLayer) Set UsLayer.LabelProperties.Dataset = USData Set UsLayer.LabelProperties.DataField = USData.Fields.Item("State_Name") UsLayer.LabelProperties.Position = miPositionBR UsLayer.LabelProperties.Offset = 4 UsLayer.AutoLabel = True End Sub Private Sub Command8_Click() Map1.Layers.Item("USA").LabelProperties.Visible = False End Sub 版权所有•地理信息系统教研室
RSGIS • 动态图层 (模拟GPS监控) 版权所有•地理信息系统教研室
RSGIS 图元 • 地图图元是地图上的地理对象,例如点、线或区域。例如,在美国地图中区域表示州、线表示公路、点表示城市。在 MapX 中,地图图元表示为 Feature 对象。 • 添加地图图元 • 选择地图图元 Map1.Layers(5).Selection.SelectByPoint -98, 31.56, miSelectionNew Map1_SelectionChanged() • 创建地图图元 版权所有•地理信息系统教研室
RSGIS 图元查找 • 搜索边界 • 选择地图图元 Map1.Layers(5).Selection.SelectByPoint -98, 31.56, miSelectionNew Map1_SelectionChanged() 版权所有•地理信息系统教研室
RSGIS 数据绑定 • 所谓数据绑定,就是将数据从数据源放入 MapX 的处理过程 (1) 以地图中的图形对象来显示数据:通过数据绑定,可以将BindLayer对象作为一个参数,使用Datasets.Add方法将自己的表转变为一个DataSet。 (2) 将属性数据绑定到地图中,并创建专题图 如果地图对象中包含相应的属性信息,也可以使用Datasets.Add方法将某个属性字段添加到地图中,进而就可以按照需要创建相关的专题图。 版权所有•地理信息系统教研室
RSGIS • 数据绑定 DataSets.Add Type, SourceData, [Name], [Geofield], [SecondaryGeofield], [BindLayer], [Fields], [Dynamic] 版权所有•地理信息系统教研室
RSGIS 专题图 • 专题制图是按照特定专题渲染地图的过程。专题通常使用数据集中的一组或多组数据。专题利用颜色渲染、填充图案、符号、直方和饼图表示数据。根据数据中的特定值指派这些颜色、图案或符号,可以创建不同的专题地图。直方和饼图使您可以比较数据集中每个记录的数据。 • 开始应用专题地图前,需要决定要显示哪些信息以及信息驻留的位置。创建专题所用的数据来自数据集的 Field 对象或 Field 集合。这些字段作为 Themes 集合的 Themes.Add 方法的 Fields 参数来传递。 Themes.Add [Type], [Field], [Name] 版权所有•地理信息系统教研室
RSGIS 输出地图 Map.ExportMap (Location, Format, [W], [H]) 版权所有•地理信息系统教研室
RSGIS 发布MapX程序 • 当把应用交付给客户时,需要安装以下项目。它们是: • 已创建的软件。 • MapX 控件,以及与它相关的文件。 • 在应用中用到的地图和 Geoset 版权所有•地理信息系统教研室