第二章MapX基础
- 格式:pdf
- 大小:513.83 KB
- 文档页数:8
Mapx 入门教程目录∙ 1 MapX入门∙ 2 MapX基础∙ 3 按图层地图化∙ 4 Features 和Selections∙ 5 在地图中查找图元∙ 6 工具∙7 数据绑定∙8 从DBMS 中访问数据∙9 专题制图和分析∙10 使用“逐层细化”图层∙11 输出地图∙12 发布MapX 应用程序一、MapX入门MapInfo MapX是一个用来做地图化工作的OCX控件,它可以很容易地在您的应用程序中加入强大的制图功能。
它可以把您的数据用地图的形式显示出来,更易于理解。
地图形式可以比简单的图表、图形提供更多的信息,而且描述地图比描述数据表更加简单迅速。
本章主要对mapx的安装和在编程语言中的使用进行讲解。
1MapX 入门1Mapx 的功能概述1安装MapX1添加Map 控件1Visual Basic 入门1地图化概念MapX入门MapX是一个提供给应用程序开发人员的工具。
它提供了一个最简单和最节约成本的方法,用来将地图化功能嵌入到新的和现有的应用中。
MapX是一个OCX组件,可以被快速集成到使用Visual Basic、PowerBuilder、Delphi、Visual C++或其他面向对象的语言的客户端应用程序以及使用Lotus Script的Lotus Notes (v4.5)中。
开发人员可以在他们熟悉的环境中工作,最终用户可以通过他们熟悉的应用程序来访问地图数据。
通过MapX,可以完全按照您的意愿在应用程序中加入强大的制图功能。
您可以按点、按专题渲染区域、按饼图或直方图等等来显示数据。
启用MapX的分析功能,可以分组和组织数据、执行搜索或在一个指定的半径、矩形区域或指定的点的周围选择地图图元。
例如,MapX能够显示哪一分店最接近您最大的客户,可以计算客户和商店之间的距离;还可以显示去年花销最大的客户;并按销售额给表示商店的符号进行颜色编码。
所有这些结合在一起就是您的数据在地图上的直观显示。
第二章 入门 1.工具(ToolConstants) 在上一章里我们试着做了一个将地图放大的应用程序.在这章里,我们将接触到更多的工具,并介绍自定义工具. MapX为开发人员提供一系列的工具,这些工具的作用各有不同,我们通过开发一个应用程序来了解这些工具的作用,至于这些工具的具体说明,可以在MapX的帮助文档中,通过查找"Available Standard Tools" 看到相应的解释.一些MapX的相关资料也有介绍. 在.Net编程环境中新建一个C#的WindeosApplication(Windows应用程序)项目,然后在菜单中选择”项目/添加引用”,打开如下图的窗口,在窗口中选择COM标签,在组件名称列表中双击MapInfo MapX V5.单击"确认"按钮,将Map5控件加入到.Net的工具箱中. 接着,将MapInfo MapX V5 控件画到窗体上,再在窗体上画一个ComboBox控件comboBox1.如下图: 双击设计窗体,编写Form1_Load代码如下: private void Form1_Load(object sender, System.EventArgs e) { ArrayList ToolsList=new ArrayList(); ToolsList.Add(MapXLib.ToolConstants.miArrowTool); ToolsList.Add(MapXLib.ToolConstants.miCenterTool); ToolsList.Add(MapXLib.ToolConstants.miLabelTool); ToolsList.Add(MapXLib.ToolConstants.miPanTool); ToolsList.Add(MapXLib.ToolConstants.miPolygonSelectTool); ToolsList.Add(MapXLib.ToolConstants.miRadiusSelectTool); ToolsList.Add(MapXLib.ToolConstants.miSymbolTool); ToolsList.Add(MapXLib.ToolConstants.miTextTool); ToolsList.Add(MapXLib.ToolConstants.miZoomInTool); ToolsList.Add(MapXLib.ToolConstants.miZoomOutTool); comboBox1.DataSource=ToolsList; } 以上代码通过一个数组ToolsList,将MapXLib的工具加入到comboBox1中.MapX还有一些其它的工具,它们的作用是往地图上加上点,线,多边型和圆.因为这些工具要求有操作图层,一并在介绍图层的时候介绍.关于ArrayList的用法,请参考C#的有关资料.接着,双击comboBox1,并编写代码如下private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) { axMap1.CurrentTool=(MapXLib.ToolConstants)comboBox1.SelectedItem; }应注意,在C#中必须要显式地把comboBox1的选择项目SelectedItem(数据类型为object)转换为MapXLib.ToolConstants.因为ToolConstants是MapX自己定义的一个枚举数据类型,C#不能自动完成这种枚举成员变量到object的数据转换. 编译执行程序,从comboBox1中选择不同的工具,在地图上进行操作,你可以了解到MapX工具集的强大功能. 实际上,MapX提供的工具集就好像Photoshop,AutoCAD的工具栏一样,为你提供了一些控制地图的工具.但是,在开发GIS的时候,这些工具是不能完全满足要求的.所以,还应该学会自定义工具. 下面,通过一个在地图上测距的例子,来介绍一下如何在C#下自定义MapX工具 如前所述建立一个C#的Windows应用程序并将Mapinfo MapX V5 控件加到窗体上.并加入一个Button控件button1.将button1的Text属性改为"测距",再在窗口中放上两个Label控件label1,label2,将它们的Text属性设置为""空字符串,如下图: 双击设计窗体,编写Form1_Load代码如下: private void Form1_Load(object sender, System.EventArgs e) { axMap1.CreateCustomTool(100,MapXLib.ToolTypeConstants.miToolTypePoly, MapXLib.CursorConstants.miCrossCursor,null,null,null); } 在加载窗口的时候,我们定义了一个工具.它的编号是100(不要和MapX本身的工具编号重复),它的类型是一个多义线,采用十字光标. 关于此函数的用法,建议查看MapX的开发手册和相关资料. 现在我们定义了一个编号为100的工具,可以在程序中使用它了.双击设计窗体中的button1,编写它的Click事件处理代码如下: private void button1_Click(object sender, System.EventArgs e) { axMap1.CurrentTool=(MapXLib.ToolConstants)100; } 现在编译运行,单击button1,就可以在地图上使用这个工具了.但是还有一部分重要的代码没有完成:测距! 完成测距功能的代码在C#使用MapX开发GIS中非常具有代表性,也比较有难度.我在首次使用C#+MapX开发GIS的时候,被这个问题困扰了很久.项目经理也来研究,过两天说有结果了,但他给出的例子根本就行不通.当然,会了就不难了.其实,也很简单. 首先,在窗口类中声明两个私有全局变量以保存测出的距离和总距,注意声明代码的位置: public class Form1 : System.Windows.Forms.Form { private AxMapXLib.AxMap axMap1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; /// <summary> /// 必需的设计器变量。
MapX培训教程引言MapX是一款强大的地图制作和地理信息系统(GIS)软件,广泛应用于地图制作、空间数据分析、地图发布等领域。
为了帮助用户更好地了解和掌握MapX的使用方法,本教程将详细介绍MapX的基本操作、功能模块和实际应用案例。
通过本教程的学习,用户将能够熟练使用MapX进行地图制作和空间数据分析,为工作和研究提供有力的支持。
第一章:MapX概述1.1MapX简介MapX是一款基于Windows操作系统的地图制作和地理信息系统软件,由美国Intergraph公司开发。
MapX提供了丰富的地图制作和空间数据分析功能,支持多种地图投影和坐标系,可以处理各种类型的地理数据。
1.2MapX的特点(1)强大的地图制作功能:MapX提供了丰富的地图制作工具和符号库,可以制作高质量的地图。
(2)灵活的空间数据分析:MapX支持多种空间分析功能,如缓冲区分析、叠加分析、网络分析等。
(3)易于使用的界面:MapX的界面直观易用,用户可以快速上手。
(4)与其他软件的兼容性:MapX可以与其他GIS软件和办公软件无缝集成,方便数据交换和共享。
第二章:MapX基本操作2.1安装和启动用户需要从官方网站MapX安装包,并按照提示完成安装。
安装完成后,双击桌面上的MapX图标即可启动软件。
2.2地图制作(1)打开地图文件:“文件”菜单,选择“打开”,在弹出的对话框中选择地图文件(.mxd)。
(2)添加图层:“图层”菜单,选择“添加图层”,在弹出的对话框中选择需要添加的图层。
(3)调整图层顺序:在“图层”面板中,拖动图层上下移动,以调整图层顺序。
(4)设置图层样式:在“样式”面板中,选择合适的符号和颜色,为图层设置样式。
(5)添加标注和图例:“标注”菜单,选择“添加标注”,在地图上添加标注。
“图例”菜单,选择“添加图例”,在地图上添加图例。
(6)保存和输出地图:“文件”菜单,选择“保存”,将地图保存为.mxd文件。
“文件”菜单,选择“输出”,将地图输出为图片或PDF 文件。
目录第一章GIS开发方式选择3一、应用型GIS开发的三种实现方式31、独立开发32、单纯二次开发33、集成二次开发3二、三种实现方式的分析与比较3第二章组件式GIS与MAPX4一、组件技术41、组件技术的兴起42、COM与DCOM43、ActiveX与ActiveX控件5二、组件技术与GIS的发展61、引言62、组件式GIS系统的特点73、组件式GIS开发平台的结构74、GIS组件的构成85、GIS组件产品86、应用及评价9三、MAPINFO相关技术91、MapInfo公司及其产品92、MapInfo空间数据的拓扑关系模型93、主要技术特点104、MapInfo的数据组织11四、MAPX研究121、MapX简介122、MapX的空间数据结构133、MapX组件的模型结构144、MapX的显著特征145、MapX的基本属性15五、MAPX的两个实用应用程序161、Geodictionary Manager162、GeoSet Manager16第三章关键技术分析与难点攻克17一、地图的获取171、空间地理数据的获取方式172、应用分析173、配准方法与投影选择184、小结18二、地图数据与属性数据的关联181、MapX支持的外部数据192、数据库设计原则193、关联属性数据的方法194、DataSets.Add方法详解20三、专题图的生成211、专题地图的概念212、专题图的六种类型213、MapX对专题图的支持224、专题图的规划225、控制专题地图236、自定义图例24第一章GIS开发方式选择地理信息系统根据其内容可分为两大基本类型:一是应用型地理信息系统,以某一专业、领域或工作为主要内容,包括专题地理信息系统和区域综合地理信息系统;二是工具型地理信息系统,也就是GIS工具软件包,如ARC/INFO等,具有空间数据输入、存储、处理、分析和输出等GIS基本功能。
随着地理信息系统应用领域的扩展,应用型GIS的开发工作日显重要。
第二章MapX 基础概述本章是对应用程序中用来创建和操作MapX 地图的主要组件的概述。
在后面的各章中将对这些选出的主题做详细讨论。
第一节 Map 对象下列图表是MapX 对象体系的局部,您可以看到Map 对象存在于最顶端。
每个MapX 的对象、属性和方法都衍生于Map 对象。
每个在Map 对象之下的属性和方法都会对生成整个Map 对象有所影响。
主要是由DataSets、Layers 和Annotations 对象定义每一个Map 对象。
MapX 对象模型局部说明:这不是一个完整的MapX 对象模型。
下表显示了一些由数值表示的Map 对象属性。
可以在“设计时”改变这些属性,也可以在“运行时”使用以下代码示例来更改。
用Map 对象,可以通过操纵地图的几个方法和属性来控制地图如何来显示。
有一些属性是由其他对象来表示的。
例如,当您看到MapX 地图时,也就是看到单独图层的集合,它是由Layers 集合来表示的。
Layers 集合是Map 对象的属性。
现在让我们来看一看如何改变地图的属性。
属性页允许我们操作Map 对象的多个属性。
第二节属性页当设计和测试应用程序时属性页对于修改地图属性非常有用。
我们以Visual Basic 工程中访问属性页为例,相应的步骤如下:方法一:如右图1.从属性窗口中单击自定义。
2.单击自定义行上的按钮。
方法二:在设计时可以通过右键单击窗体内的Map 对象并选择属性来访问属性页,见下图方法三:运行时查看属性页也可以在运行时查看属性页。
为此,请把下列代码添加到Map.Mouse_Up 事件中去。
If Button = 2 Then Map1.PropertyPage这段代码将检测用户是否在运行时单击鼠标右键,然后显示属性页。
使用鼠标右键,是因为不会影响工具(左键)的正常使用。
说明:您应该仅在设计和测试时使用这段代码,因为它给用户太多权限来控制整个地图。
然而,如果希望完成的产品要为最终用户显示对话框的话,可能就需要使用yersDlg 方法来代替PropertyPage 方法,因为LayersDlg对话框对用户更友好一些。
第二章 MapX 基础 概述 本章是对应用程序中用来创建和操作MapX 地图的主要组件的概述。
在后面的各章中将对这些选出的主题做详细讨论。
第一节 Map 对象 下列图表是 MapX 对象体系的局部,您可以看到 Map 对象存在于最顶端。
每个 MapX 的对象、属性和方法都衍生于 Map 对象。
每个在 Map 对象之下的属性和方法都会对生成整个Map 对象有所影响。
主要是由 DataSets、Layers 和 Annotations 对象定义每一个 Map 对象。
MapX 对象模型局部 说明:这不是一个完整的 MapX 对象模型。
下表显示了一些由数值表示的 Map 对象属性。
可以在“设计时”改变这些属性,也可以在“运行时”使用以下代码示例来更改。
属性描述代码示例Map1.Zoom = 500 Zoom 设置在地图中显示的英里(默认的距离单位)数。
Rotation 对地图旋转指定的度数Map1.Rotation = 179Map1.CenterX = -79.4458 CenterX 设置 x 和 y 坐标,它们可能代表经纬度。
这是由地图的投影来决定的。
CenterY 设置 x 和 y 坐标,它们可能代表经纬度。
Map1.CenterY = 44.9932这是由地图的投影来决定的。
用 Map 对象,可以通过操纵地图的几个方法和属性来控制地图如何来显示。
有一些属性是由其他对象来表示的。
例如,当您看到 MapX 地图时,也就是看到单独图层的集合,它是由Layers 集合来表示的。
Layers 集合是 Map 对象的属性。
现在让我们来看一看如何改变地图的属性。
属性页允许我们操作 Map 对象的多个属性。
第二节 属性页 当设计和测试应用程序时属性页对于修改地图属性非常有用。
我们以V isual Basic 工程中访问属性页为例,相应的步骤如下:方法一:如右图1. 从属性窗口中单击自定义。
2. 单击自定义行上的按钮。
方法二:在设计时可以通过右键单击窗体内的 Map 对象并选择属性来访问属性页,见下图方法三:运行时查看属性页也可以在运行时查看属性页。
为此,请把下列代码添加到Map.Mouse_Up 事件中去。
If Button = 2 Then Map1.PropertyPage这段代码将检测用户是否在运行时单击鼠标右键,然后显示属性页。
使用鼠标右键,是因为不会影响工具(左键)的正常使用。
说明:您应该仅在设计和测试时使用这段代码,因为它给用户太多权限来控制整个地图。
然而,如果希望完成的产品要为最终用户显示对话框的话,可能就需要使用 yersDlg 方法来代替 PropertyPage 方法,因为 LayersDlg对话框对用户更友好一些。
此方法将在下一章中讨论。
第三节 图层 如下图所示,点图层本身并不是非常有用,但当把这样的由点类型构成的地图覆盖在线状地图和区域地图上时,就得到了一幅非常有用的地图。
每一幅单独的地图是一个图层,MapX 把地图存储为图层的集合。
在“设计时”通过 MapX属性对话框或是在“运行时”通过编程可以对图层进行改变。
在上述部分,属性对话框允许设计者通过简单地更改设置来操作图层。
我们也可以在程序中随时更改图层属性和方法的代码。
新建图层,删除图层以及更改图层的可见性和样式都是一些能在图层上完成的操作。
图层集合对象(Layers Object) 图层集合(Layers)是由 0 到 n 个 Layer 对象组成的。
图层对象(Layer)是由特性集合(Features)组成的,且每一个特性(Feature)都有其自己的属性和样式。
特性集合(Features)由 Feature 对象组成,它对应地图中的图元,例如点、线或区域。
可以创建独立的 Feature 对象,也可以取得 Feature 对象的集合。
第四节 GeoSetsGeoSet 是地图图层及其设置的集合。
可以在“设计时”指定GeoSet 。
如果在“运行时”设置,则先要删除所有已加载的图层和数据集,然后加载新的 GeoSet。
如前所述,在运行时指定要加载的其他 GeoSet、给地图对象添加图层,或是操作图层的外观等操作都可以通过属性页来实现,或者可以通过与 MapX 一起装载的 MapX Geoset Manager程序来实现(此程序可以在 MapX 程序组中找到)。
区域地图线状地图点图层右图为GeoSetManager的用户界面,可以利用此管理工具更改图层设置,当认为满意时,就可以保存地图。
这将把 GeoSet 文件(*.GST)写到驱动器中。
当打开该GeoSet 文件时,将返回所有的地图图层和设置。
Geoset Manager 使您可以修改图层、管理缩放等级、标注,以及其他属性。
GeoDictionary 利用MapXz作数据绑定或创建专题地图时,可以用 GeoDictionary来匹配数据源与地图图层。
GeoDictionary 是一个保存了关于哪个地图图层可以匹配、哪个字段可以用作匹配字段的信息文件(一般命名为 geodict.dct)。
如果想运用自动匹配/自动绑定,则必须在 GeoDictionary 中注册文件。
例如,如果拥有按州划分的销售额的数据,那么 GeoDictionary 就可以确定此数据和“USA”地图图层相匹配。
可以编程或者明确指定图层中要匹配的列与数据文件/表中的哪些列匹配,也可以让 MapX 参考 GeoDictionary 尝试找到匹配。
修改 GeoDictionary 如果在做数据绑定时要利用自动匹配,则在GeoDictionary里注册 MapInfo表是必要的。
在 MapX GeoSet Manager 的工具菜单下有执行GeoDictionary 程序的选项。
MapX GeoDictionary 程序允许把新的MapInfo 表注册到 GeoDictionary 中。
同时,在 MapX GeoDictionary 中,单击注册表……按钮,然后选择要注册的表,设置表属性并为其输入描述。
如果要想自动地把这张表加载到 GeoSet 中,请单击添加按钮然后选择要把表添加进的 GeoSet 。
GeoDictionary管理器的用户界面如下图所示:第五节DataSetsDataSets使您可以将数据绑定到地图。
例如,如果您有一个按县划分的关于销售额的 MS Access 数据库和一幅县地图,您就可以把数据绑定在这幅县地图上,并可以发现这个按县划分的销售额趋势图,而以表格数据的形式则不容易突出显示该趋势。
如上所示,当 MapX 需要在数据和地图之间指定某个匹配时,该匹配是通过称为自动匹配/自动绑定的处理过程来确定的。
如要利用自动匹配/自动绑定,首先必须在 GeoDictionary 中注册地图。
一旦将数据和地图绑定,就可以看到相关的地理化信息。
数据的直观表示使得专题地图的创建变得可行。
专题就是以颜色划分的地图,以该方式来表现数据的变化趋势。
我们将在以后章节中详细的讲解专题图的制作。
第六节AnnotationsAnnotations 集合是把文本和符号放在地图上的简单方法。
注释放在所有其他图层的最顶端,并且不和任何数据链接。
如果您熟悉 MapInfo,Annotations的概念在目的上与地图的装饰图层比较相似。
下表列出了 Annotations 集合对象的方法和属性:Annotations 集合方法 方法描述代码示例AddSymbol向 Annotation 集合添加符号。
使用默认样式(由 Map.DefaultStyle 指定)。
Map1.Annotations.AddSymbol X, YAddText向 Annotation 集合添加文本。
第四个参数表示文本在指定坐标系中的初始位置。
Map1.Annotations.AddText _ “Developer Services”, _ 79.44, 46.8889, _ miPositionTLRemove从集合中删除指定的 Annotation。
Map1.Annotations.Remove 1RemoveAll从集合中删除所有的 Annotation。
Map1. Annotations.RemoveAll Annotation 集合属性 属性描述代码示例Editable指定注释是否能够编辑。
Map1.Annotations.Editable _= TrueType指定 Annotation 对象类型。
If Map1.Annotations(2).Type_Graphic包含了拥有 Annotation 属性的Graphic 对象。
请参阅联机帮助中的Graphic 对象描述。
请注意在注释对象中没有关于位置、符号样式或是注释的属性。
注释的图形属性包含了该信息的图形对象。
要修改注释,可修改注释的图形对象。
下列代码在指定位置添加符号:'Add a symbol at locationMap1.Annotations.AddSymbol X1, Y1第七节 创建对象 在 MapX 对象模型中,可以使用下列对象类来创建独立对象。
BindLayer ODBCQueryInfoBitmapSymbols 点集的集合Feature PointFields PointsNotesQueryInfo RectangleNotesViewInfo Style下列代码显示了如何创建独立样式对象,显示样式选择对话框并使用新样式设置图层的替代样式。
请注意在 Delphi 和 PowerBuilder 中需要在对象名后指定 MapX 版本号(如“MapX.Style.4”)。
这样的安排使您在计算机中可同时安装多个版本的 MapX。
如果已开发了MapX 版本 4 的应用程序,而后又在同一台计算机上安装了更新的版本,那么新版本的 MapX将不会影响版本 4 的应用程序。
Visual Basic 示例 Dim s as new MapXLib.Styles.PickRegionset yers(1).Style = sC++ 示例 CMapXStyle style;style.CreateDispatch(style.GetClsid());// can also use style.CreateDispatch("MapX.Style.4"),// but above is more portable between versions of MapXstyle.PickRegion();m_ctrlMapX.GetLayers().Item(1).SetStyle(style);Delphi 示例 Vars : variant;begins := CreateOleObject('MapX.Style.4');s.PickRegion;yers.Item(1).Style := s;EndPowerBuilder 示例 OLEObject slong oleStatuss = CREATE OLEObjectoleStatus = s.ConnectToNewObject("MapX.Style.4")ole_yers.Item(1).Style = s。