1 / 67

MapX 开发培训

MapX 开发培训. 方正数码. MapX 简介. MapX 是 MapInfo 公司的地图化的 ActiveX, 在 使用面向对象语言(如: VB, VC++, Delphi, PB )开发的应用中嵌入 MapX 可以使您的应用具有强大的地图功能 . ActiveX 是 Microsoft 为了使开发人员能够把计算机桌面环境与构成 Internet 及其大量资源的环境集成起来,同时保护在 Windows 中现有的开发投资。由于 ActiveX 控件是被封装起来的,它适合于各种编程语言(如 VB 、 VC ++等),因此只需知道控件支持的属性、方法和事件,就可使用控件。.

Télécharger la présentation

MapX 开发培训

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MapX开发培训 方正数码

  2. MapX简介 • MapX是MapInfo公司的地图化的ActiveX, 在使用面向对象语言(如:VB, VC++, Delphi, PB)开发的应用中嵌入MapX可以使您的应用具有强大的地图功能. • ActiveX是Microsoft为了使开发人员能够把计算机桌面环境与构成Internet及其大量资源的环境集成起来,同时保护在Windows中现有的开发投资。由于ActiveX控件是被封装起来的,它适合于各种编程语言(如VB、VC++等),因此只需知道控件支持的属性、方法和事件,就可使用控件。

  3. MapX的主要优点 • MapX易于使用且价格低廉. • MapX能实现Pro 95%以上的功能。 • MapX用于实时监控,GPS和监控等。 • MapX提供面向对象开发,提供更为广阔的开发空间 • MapX为WEBGIS的开发打下基础。

  4. MapX主要欠缺的功能 • 数字化仪输入 • 排版输出 • PRO工具管理器中所有的工具,如数据转换 • Mapx不支持统计图

  5. MapX的安装 配置 • 系统需求 Win95, Win98, NT4.0 不支持Win3.1 至少15兆可用空间,不包括地图数据安装使用 • 安装新版本前先uninstall旧版本

  6. 主要支持的语言 • VB 右键单击Visual Basic工具箱,从快捷方式菜单中选择部件。 在部件对话框中,单击控件选项卡,寻找列表中的“MapInfo MapX V5”选中它 Map控件出现在工具箱上。 • VC Project menu, Add To Project>Files, choose MapX.cpp as the file to Add. • PB OLE>Insert Object Dialog>Insert object> MapInfo MapX V5 • Delphi Component>Install ActiveX control> MapInfo MapX V5

  7. 主要对象

  8. 主要对象的说明 • Geoset 是地图图层及图层属性值的集合。GeoSet 决定地图对象中放入的表的库名以及他们的设置值。 • Layers, Layer用户的数据反映在地图上通常根据点、线、面的层次结构进行归类。每一个独立的图层都可以作为一个独立的地图。MapX中调用的是一个由多个独立地图图层组成的地图集合。 • Feature, Features, Selection图层对象是由图形对象(Feature)集合、属性以及样式组成的。图形对象集合(Features Object)是由多个图形对象(Feature Object)组成的 • Annotations利用注释在地图上显示相应的文本或者符号。类似与Professional 中的装饰层 • Datasets 可以将外部数据与你的地图进行绑定。 • Themes专题化地图是根据特定专题普染地图的过程。

  9. 地图对象Map 控制地图显示的四个要素 • CenterX :Map1.CenterX = -79.4458 • CenterY: Map1.CenterY = 44.9932 • Zoom: Map1.Zoom = 500 • Rotation: Map1.Rotation = 179 Y X

  10. 地图对象Map

  11. Annotations AreaUnit AutoRedraw Bounds CenterX CenterY CurrentTool DataSet DataSetGeoField DataSets DataSetTheme DefaultStyle DisplayCoordSys DefaultConversionResolution ExportSelection FeatureFactory GeoDictionary Geoset Geosets GeoSetWidth hWnd Layers MapPaperHeight MapPaperWidth MapUnit MaxSearchTime 地图对象属性(Map Properties) MousePointer NumericCoordSys PaperUnit PreferCompactLegends Rotation SelectionStyle Title TitleText Version Zoom

  12. Geoset • GeoSet 是一个地图图层及图层属性值的集合。 • 一个文本文件,在Geoset Manager中制作。 • GeoSet 可以在设计时被指定。如果在运行过程中被指定,原来已安装的图层以及数据库(DataSet)会被删除。然后装入新的GeoSet。如果用户只想删除已装入的图层以及DataSets而不想装入新的GeoSet,用户可以设置一个空的Geoset。 • 系统提供的默认GeoSet文件为US.GST。 • 类似于Professional中的WorkSpace

  13. Geoset Manager和GeoDictionary • Geoset Manager: 如果你确定你得到的地图,你就可以将它保存为一个GeoSet (*.GST) 文件。当你打开这个GeoSet 文件,所有的地图图层和设置都将以保存值返回。使用geosetmanager的时候,所有的.gst文件要放在\Program Files\MapInfo\MapX 5.0\Maps>目录下。 • GeoDictionary: 用于外部数据与图层的自动绑定,以及创建专题图层。实际上是一个文件包含有数据绑定的信息geodict.dct。

  14. Layers • 用户的数据反映在地图上通常根据点、线、面的层次结构进行归类。每一个独立的图层都可以作为一个独立的地图。MapX中调用的是一个由多个独立地图图层组成的地图集合。

  15. Layers Methods • 图层控制对话框 • Map1.Layers.LayersDlg

  16. Layers Property • AnimationLayer Set Map.Layers.AnimationLayer = nothing • Bounds Map1.Bounds = ViewLayer.Bounds • Count • InsertionLayer set lyrInsertion = Map1.Layers("USA") lyrInsertion.Editable = True Set Map1.Layers.InsertionLayer = lyrInsertion • Item

  17. Layers Methods • 建新层 • Map1.Layers.CreateLayer “Offices” [Layer=]OBJECT.CreateLayer (Name , [FileSpec] , [Position] , [KeyLength] , [CoordSys]) • 加入图层 • Map1.Layers.Add “C:\Map\China.tab” [Layer=]OBJECT.Add (LayerInfo, [Position]) ] 。

  18. Layers Methods • 删除图层 • Map1.Layers.Remove 3 • 移动图层 • Map1.Layers.Move 1,2 • 用户自定义图层 • Map1.AddUserDrawLayer

  19. layerInfo对象 • 标准Table表: • 用户自定义图层:在此图层中,用户可以使用如Windows API函数来画图。 • 可自注册的栅格图象:如:GeoTiff。 • 栅格图象:以Tab表形式形式调入。支持24位真彩栅格图象。支持格网文件支持(MIG)。 • ARCVIEW的SHAPE文件:步骤如下: • .将其中的DBF文件写成TAB表形式. • .打开.tab文件,将 “Type DBF Charset "WindowsSimpChinese"”改为”Type SHAPEFILE Charset "WindowsSimpChinese"”. • .将文件加入应用.

  20. LayerInfoTypeConstants • miLayerInfoTypeTab = 0 • miLayerInfoTypeUserDraw = 1 • miLayerInfoTypeRaster = 2 • miLayerInfoTypeShape = 3 • miLayerInfoTypeServer = 4 • miLayerInfoTypeGeodictUserName = 5 • miLayerInfoTypeTemp = 6 • miLayerInfoTypeNewTable = 7

  21. 远程数据库 • 连接ODBC数据源,要求数据库已经地图化。 • Code: Dim LayerInfo As New MapXLib.LayerInfo LayerInfo.Type = miLayerInfoTypeServer LayerInfo.AddParameter “name”, “ODBCLayer” LayerInfo.AddParameter”connectstring",“Mapstats” LayerInfo.AddParameter "query",”Select * from Us_cust” LayerInfo.AddParameter "cache", “on” LayerInfo.AddParameter "toolkit", "ODBC" Set lyr = Map1.Layers.Add(LayerInfo, 1)

  22. 使用 Oracle 图层的 Visual Basic 示例 • Dim LayerInfoObject As New LayerInfo • Dim lyr As Layer • Dim l_strchris As String • l_strchris = "Select * From ""CITY"".""STATESBOUND""" • LayerInfoObject.Type = miLayerInfoTypeServer • LayerInfoObject.AddParameter "name", "cancaps" • LayerInfoObject.AddParameter "ConnectString", "SRVR=MARILYN;UID=city;PWD=city" • LayerInfoObject.AddParameter "Query", l_strchris • LayerInfoObject.AddParameter "toolkit", "ORAINET" • LayerInfoObject.AddParameter "AutoCreateDataset", 1 • LayerInfoObject.AddParameter "DatasetName", "Uscty" • Map1.Layers.Add LayerInfoObject

  23. AddServerLayer方法: • Map1.Layers.AddServerLayer "ssa","DSN=Spatial;HOST=spw;UUID=mapzk;UPWD=mapzk;UID=mapzk; PWD=mapzk;OSID=map", "select * from ""sloil"""

  24. 常用的Layer property • AutoLabel • Name • OverrideStyle • Selectable, Editable, Visible • Style • ZoomLayer, ZoomMax, ZoomMin • LabelProperties

  25. 常用的Layer method • AddFeature, DeleteFeature • BeginAccess, EndAccess • Refresh • UpdateFeature • Search • Layer.Pack • Layer.SupportsPack

  26. 标准 Tool的使用 • Map1.CurrentTool = miZoomInTool Map1 是 MapX的对象名,miRadiusSelect 是常量。在指定位置使用用户工具。 CurrentTool设置为当前工具。取值为 ToolConstants 值。默认值为 miArrowTool。

  27. 标准 Tool的分类 • 导航工具 (Zoom-In, Zoom-Out, Pan, Center) • 标注工具: • 一系列选择工具. • Annotations (symbols and text).

  28. 自定义Tools • Map.CreateCustomTool ToolNumber, Type, Cursor, [ShiftCursor], [CtrlCursor] • ToolNumber用于在此后引用它的工具的数量。此值必须是介于 1 和 999 之间的整数。 • Type 描述工具行为的类型。取值为 ToolTypeConstants 的值。 • Cursor 当前使用工具的光标形状。 • ShiftCursor 表示应该在按住 SHIFT 键时出现的光标 • CtrlCursor 表示应该在按住 CTRL 键时出现的光标

  29. 自定义Tools • 使用工具:需要设置MapX对象CurrentTool的值。 Private Sub Form_Load() Map1.CreateCustomTool 99, miToolTypePoint , miCrossCursor End Sub Private Sub Command1_Click() Map1.CurrentTool = 99 End Sub

  30. style • Map.defaultstyle • layer.style • feature.style • label .style • LabelProperties .style • Graphic .style • MultivarCategory .style • RangeCategories .style • IndividualValueCategories .style

  31. coordinate • Map.DisplayCoordSys 显示坐标系统 • Map.NumericCoordSys 数字坐标系统 • Layer.CoordSys

  32. Label • Layer.AutoLabel=true • Map.CurrentTool = miLabelTool • LabelAtPoint: Map.LabelAtPoint (x, y) • layer.LabelProperties属性 • Map.InfoTipSupport • labelproperties.DataField • LabelProperties.LabelAlong • Label 对象和 Labels 集合 • LabelChanged 事件: • Map.EditableLabels

  33. Annotations

  34. feature • 一个feature 对象相应于图层中的图元,例如纽约、芝加哥、路易斯安那或高速公路I-10。它们在地图上被表示为符号、线或者区域。 • Feature 对象的方法允许用户创建和操作独立的feature对象。如果用户创建了一个独立的feature对象,在使用feature 对象的方法与属性之前,必须将这个独立的对象关联到Map对象上。将独立图元与Map相关联可以使此对象与某一坐标系相联。

  35. feature

  36. FeatureFactory • 此对象使用户能够创建新的地图元素,或者通过在已有元素上执行操作来创建元素(例如缓冲区)。 • 创建一个地图元素有两个重要的步骤。首先是创建点集,对象将由此来创建。使用一个点集类似于“连点游戏”。如果只有一个点,只能创建一个符号对象。如果有两个点,可以创建一条直线。如果有三个或更多的点,就或者可以创建一条折线(由多个段组成的线,但仍被当作一个元素),或者可以创建一个区域(有封闭的边界)。样式在设置新对象的Type属性时决定。

  37. FeatureFactory • Dim f As MapXLib.Feature • Dim p As New MapXLib.Point • ' 使用地图当前的中心作为点坐标 • p.Set Map1.CenterX, Map1.CenterY • ' 创建文本图元并将其添加到图层 1 • Set f = Map1.Layers(1).AddFeature(Map1.FeatureFactory.CreateText(p, "Some Text"))

  38. 地图查询 • 返回到选择集Selection,高亮显示SelectAll SelectById SelectByPoint SelectByRadius SelectByrectangle SelectByRegion • 返回图元集合Features SearchWithDistance SearchWithinFeature SearchWithinRegtangle

  39. Selections • Feature 对象的集合,由选择动作产生 • 自动高亮 • 每层都有selection

  40. 属性查询 • Layer对象的Search方法,where子句 例如 ftrs=layer.search(“Character_Name like ”“%市”“”) ftrs=layer.search(“Area(obj)>10000000”) • Find查找对象 SearchEx方法 • 返回FindResult对象

  41. Find • 用于在地图上定位feature,前提是被操作的图层必须先有被索引的字段 • FindFeature:返回find对象的search方法的结果。 • findRC: result codes返回find的结果。

  42. 属性数据读写 • 设置Layer对象的keyfield属性确定字段 设置feature对象的keyvalue属性读取/设置值,更改后调用update方法. • 用dataset对象的value(i,j)属性读取值 pop=dataset.value(10,9) • Rowvalues集合,Rowvalue对象,按行读取,要求将图层加入数据集 [RowValues=]OBJECT.RowValues(Row)

  43. 数据绑定 • DataSets 可以把数据与地图进行绑定。 • 例如,一个MSAccess 数据库存放各县的销售数据,一个Lotus Notes 数据库存放所有销售人员的数据,你可以将两个数据库中的数据与地图进行绑定,在地图上发现数据中隐含的销售数量或突出显示两个数据库中数据的相互关系。 • 数据绑定是将数据源中的数据加入MapX的过程,它将外部数据与地图联系起来。在MapX中,这些数据是通过DataSet 对象来表示的。Dataset对象则由数据绑定而产生。

  44. DAO ODBC NOTES Other Sources 数据绑定DataBinding

  45. 如何绑定数据 • datasets.add方法 DataSets.Add ( Type, SourceData, [Name], [Geofield], [SecondaryGeofield], [BindLayer], [Fields], [Dynamic] ) • 在map中以feature来显示 • 在图层中增加字段 对于BindLayer miBindLayerTypeNormal =0 -miBindLayerTypeXY = 1 -miBindLayerTypePointRef=2

  46. Type • Dataset的类型 • SourceData • 对数据源的引用 • Name • Dataset 的名称 缺省为DatasetN • Geofield • 列的名称或序号,包含地理信息,缺省时Geodictionary • SecondaryGeofield • BindLayer • 图层名或bindlayer 对象,缺省时,Geodictionary • Fields • 所要的列,aggregation function,缺省时,All field • Dynamic 是否和数据进行动态绑定

  47. DataSet 类型常量列表

  48. DataSource • DataSource 实际上是一个OLE接口。 MapX 通过接口直接从数据源访问数据。数据的并没有真正传给DataSets.Add。 • 下面是详细的几种数据资源 (注意: 这些并不是全部的类型): • .miDataSetDAO – DAO数据集(Data Access Object Recordset). DataSets.Add 的DataSource必须是一个DAO数据集对象。 你可以从Visual Basic的数据控件, Access窗体,或是Visual Basic, Access, C++中创建 一个数据集。 • .miDataSetODBC – ODBC数据连接(Open DataBase Connectivity data source). MapX 可以通过ODBC从任意ODBC 数据源中获取数据。你需要指定连接字符串,数据源名称,使用ODBCQueryInfo执行的SQL查询语句(ODBCQueryInfo包含连接ODBC数据源的信息)。 • miDataSetLayer -如果Dataset的类型是miDataSetLayer , 那么参考MapInfo Table表中的字段创建Dataset,则SoureData参数项必须是一个Layer对象。

  49. GeoField • Geofield是DataSets.Add方法的参数,用来为数据源指定包含有地理信息的数据列。但是如果没有指定列,DataSets.Add确定可以自动指定数据地理信息的数据列。 • 如果要创建新的点图层则GeoField 列必须是唯一的(BindLayer.LayerType 是miBindLayerTypeXY 或 miBindLayerTypePointRef)。GeoField 列将作为新的点层中的图元的名称。如果值不唯一则将在遇到第一条记录时创建一个新的点,然后值重复的行的数据将作为聚合。 • 为使MapX将数据绑定到地图图层,需要完成一些设置。 1.对地图图层中含有的地理信息的数据列要做索引。 2.在GeoDictionary中必须注册,图层以及其主要数据列。

  50. 其他参数的说明 • Secondary Geofield:当主要数据列的数据值并不唯一的情况下,绑定数据时需要设置Secondary GeoField参数。例如,States图层中有多个洲的名字是“Warren” 或 “Washington”。因此,就需要更多的信息来解决潜在数据冲突。这第二个geofield 被用来确定匹配的唯一性。这个概念类似于创建field对象的精细查找边界。 • Dynamic:布尔型的参数决定是否动态绑定数据,可选参数项,如果省略,默认为False,说明数据绑定方式是静态的(指当数据库打开时MapX将拷贝需要的所有数据)。如果设置为True,MapX访问数据将是实时的,只获取需要的数据(例如当作标准时)。 • Fields:这是一个Fields集合对象,是包含Fields对象的集合。Field对象用来表示从数据源中引入的字段,并且当数据源中有多条记录对应某一地图图元时使用聚合函数来计算数据值。这是一个可选参数,如果没有指定,那么所有列都将被加入,如果多条数据记录对应一个图元则数据值取和。

More Related