二次开发入门MapBasic--MapInfo教程
- 格式:doc
- 大小:27.00 KB
- 文档页数:5
Mapinfo教程
引言
Mapinfo是一款地理信息系统(GIS)软件,它主要用于地图创建、地理数据分析和空间数据可视化。
它提供了一系列功能强大的工具,使用户能够轻松处理和分析地理数据。
本教程将介绍Mapinfo的基本概念、常用功能和操作步骤,帮助初学者快速上手使用Mapinfo。
目录
1.安装与配置
2.Mapinfo界面介绍
1.工作区
2.菜单栏
3.工具栏
3.创建和编辑地图
1.创建新地图
2.导入地理数据
3.创建图层
4.编辑图层
4.地理数据分析
1.空间查询
2.属性查询
3.空间分析
5.数据可视化
1.创建主题图
2.图表制作
1. 安装与配置
在开始使用Mapinfo之前,您需要先下载和安装Mapinfo 软件。
您可以到Mapinfo官方网站下载安装程序,并按照安装向导进行操作。
一旦安装完成,您可能还需要配置一些软件设置,如选择语言、设置默认地图坐标系等。
2. Mapinfo界面介绍
2.1 工作区
Mapinfo的工作区包括地图窗口、图层列表和信息窗格。
地图窗口是您进行地图浏览和编辑的主要区域,它显示了地理数据的可视化效果。
图层列表用于管理和显示地图中的不同图层,您可以通过勾选或取消勾选图层来控制其可见性。
信息窗格则显示了与地图相关的属性信息和统计数据。
2.2 菜单栏
Mapinfo的菜单栏包含了各种功能命令和工具选项,您可以使用这些选项进行地图创建、数据分析、编辑等操作。
常用的菜单栏选项包括。
MAPINFO和经常使用插件Mapinfo介绍主界面:要紧包括要紧工具栏、画图工具栏和菜单栏。
在主界面左下角显示当前状态:能够依照情形调整为光标位置,地图比例和缩放(窗口宽度)另外能够选定图层进行信息编辑,在图一中该处显示为“无”,那么画图工具栏内图标均显示为灰色,无法进行编辑;选定福州基站参数层后图标显示为黑色,能够进行编辑:图层操纵:咱们通过图层操纵咱们能够方便改变小区的标注,右键点击后会弹出一菜单,选择图层操纵后显现对话窗口:将福州基站参数层后面的第四个框打上钩,图上就会显现对应的标注内容:有时候咱们会发觉图中的一些小区无标注,可能是由于重名或名字重叠致使无法显示,这时咱们能够点击图层操纵框的标注按钮,将“许诺文本重复”和“许诺文本重叠”选中,就能够够看到标注项的所有内容了。
想要在图上显示不同标注项的内容只要在标注框里选择相对应的标注项就能够够了。
创建点:有时候会需要对大量的地理坐标导入电子地图,那个地址就能够够利用MAPINFO 的创建点来实现。
第一在EXCEL表格里面录入需要显示地址的名字、经纬度,切记经纬度的单位是度,不能费用分秒。
再将文件保留成TXT文本文件。
然后在MAPINFO打开文件,打开文件类型选择*.txt在跳出的窗口中文件字符集项选“No character set conversion”,和将以第一行作为题目前打上勾。
导入到MAPINFO后如图:以后就能够够创建点了:点击创建点弹出窗口:能够看到创建点的信息来自与咱们导入的“BOOK1”点击利用符号右边按钮,能够调整创建点的显示属性取得X、Y坐标的列应和经度、纬度所在列对应,确信后就在电子地图上生成了咱们所要的点。
导入地图信息,就能够够看到所选的点在地图上的位置了。
“celltool”插件的利用:“celltool”是一种经常使用的频率计划插件,直接双击“”插件,就会在mapinfo的菜单中增加一个cellmaker的菜单。
' ImportExcel.mbInclude "MapBasic.def"Declare Function XLS_ImportTab (ByVal sXLS As String, ByVal sTab As String) As Logical Declare Function XLS_A1Cell (ByVal nCol As Integer, ByVal nRow As Integer) As String Declare Sub MainSub MainDim sXLS, sTab As StringClose AllsXLS = FileOpenDlg ("", "*.xls", "XLS", "Please select the spreadsheet file to import:") If sXLS = "" ThenExit SubEnd IfsTab = PathToFilename$(sXLS)sTab = Left$(sTab, Len(sTab)-3) & "TAB"sTab = FileSaveAsDlg (PathToDirectory$(sXLS), sTab, "TAB", "Save table as:")If sTab = "" ThenExit SubEnd IfIf NOT XLS_ImportTab (sXLS, sTab) ThenExit SubEnd IfOpen Table sTabBrowse * From TableInfo(0, TAB_INFO_NAME)End SubFunction XLS_ImportTab (ByVal sXLS As String, ' Full path/name of spreadsheet fileByVal sTab As String) ' Full path/name of table fileAs Logical' Imports an Excel spreadsheet as a table assuming that the first' row contains the field names.Dim nRows, nCols As IntegerDim sRange, sCell As StringOnError Goto XitRegister Table sXLS TYPE XLS Into sTabOpen Table sTab As ~XLS' Determine the size of the tablenCols = TableInfo (~XLS, TAB_INFO_NCOLS)nRows = TableInfo (~XLS, TAB_INFO_NROWS)Close Table ~XLS' Convert row and column of end of range to A1-type referencesCell = XLS_A1Cell (nCols, nRows)If sCell = "" ThenNote "Spreadsheet " & PathToTablename$(sTab) & " not imported."Exit FunctionEnd If' Import the spreadsheet as a tablesRange = "A2:" & sCellRegister Table sXLS TYPE XLS Titles Range sRange Into sTabXLS_ImportTab = TRUEExit FunctionXit:Note "XLS_ImportTab error: " & Chr$(10) & Error$()End FunctionFunction XLS_A1Cell (ByVal nCol As Integer, ' Column reference: 0 < n <= 256ByVal nRow As Integer) ' Row reference: 0 < n <= 65536As String ' Returned A1-type cell reference, or NULL if error ' Creates an Excel A1-type reference for a cell from a row and columnDim sCellRange As StringDim i, j As Integer' Error checkIf nCol < 0 OR nCol > 256 ThenNote "XLS_A1Cell Error: Invalid column reference = " & nColExit FunctionEnd IfIf nRow < 0 OR nRow > 65536 ThenNote "XLS_A1Cell Error: Invalid row reference = " & nRowExit FunctionEnd If' Columns are 1=A, 2=B, ... 26=Z, 27=AA, 28=AB, ... 256=IV' Note: they are not regular (i.e 27 is "AA", not "A " or "A0")i = nCol - 1If i > 25 thenj = i \ 26sCellRange = Chr$(64+j)end ifj = i mod 26sCellRange = sCellRange + Chr$(65+j) & nRowXLS_A1Cell = sCellRangeEnd Function。
MapInfo教程MapInfo是一种流行的地理信息系统(GIS)软件,它可用于分析和可视化地理数据。
本教程旨在为初学者提供涵盖MapInfo基本功能的指南,帮助你快速入门。
1. MapInfo简介MapInfo是由Pitney Bowes Software开发的一套商业GIS 软件。
它提供了强大的地理信息分析和地图制作工具,可用于各种领域,包括市政府、农业、环境规划和商业分析等。
2. 安装和配置MapInfo在开始使用MapInfo之前,你需要先安装和配置软件。
2.1 下载MapInfo你可以从MapInfo官方网站下载MapInfo软件的安装包。
根据你的操作系统选择相应的版本。
2.2 安装MapInfo下载完成后,双击运行安装包并按照提示完成安装过程。
注意,你可能需要管理员权限来安装软件。
2.3 配置MapInfo安装完成后,你需要进行一些配置来确保MapInfo能够正常运行。
例如,你可以设置默认地图投影和坐标系统,以及数据连接。
3. MapInfo界面介绍当你打开MapInfo软件时,你会看到以下几个核心组件:3.1 主菜单主菜单位于软件窗口的顶部,包含各种功能选项,例如文件操作、地图编辑和数据分析等。
3.2 工具栏工具栏位于主菜单下方,提供了快捷访问常用功能的按钮,例如添加图层、选择对象和创建标签等。
3.3 地图窗口地图窗口是你用来显示地理数据的主要工作区域。
你可以在这里创建、编辑和分析地图。
3.4 图层控制窗口图层控制窗口显示了当前地图中所有图层的列表。
你可以在这里管理图层的可见性、绘制顺序和样式等。
3.5 属性窗口属性窗口显示了所选对象的属性信息。
当你选择地图中的对象时,你可以在此处查看和编辑其属性。
4. 基本地图操作在学习MapInfo之前,你需要先了解一些基本的地图操作技巧。
4.1 创建地图要创建一个新地图,请选择。
1.SiteSee插件打开MapInfo在quick start(快速开始)选项窗口选择Cancel(取消)打开xls格式的基站信息表文件打开后会弹出Excel Information(表格信息)选项窗口,选择Use Row Above Selected Range for Column Titles(使用列选取范围做列标题),OKOK后自动弹出Set Fields Properties(设置字段属性),默认既可OK选择Table(表格)菜单下的Create Points(创建选项)选项窗口Create Points(创建选项)选项窗口,点击using Symbol(使用符号),弹出Symbol Style(符号风格)选项窗,设置合适的符号与大小OK确定*Get X Coordinates from Column(从栏中获取经度坐标):Longitude(经度)Get Y Coordinates from Column(从栏中获取纬度从标):Latitude(纬度)一定要选择正确这时会在所选文件夹下生成TAB格式的同名文件,双击打开,弹出与文件名相同的Map窗口选择工具栏中的Tools(工具)菜单子项Run MapBasic Program(运行MapBasic程序)弹出下图打开窗口,找到SiteSee插件,打开选择工具栏中的Table(菜单)中的子项WFI SiteSee下的Create Site Boundaries(建立SiteSee 边界)Create Site Boundaries(建立SiteSee边界)选项窗口*Site table(SiteSee表)选择同名文件Site latitude from column(SiteSee纬度选列)选latitude(纬度)Site longitude from column(SiteSee经度选列)选longitude(经度)Site radius from column(SiteSee半径)选Azimuth(方位角)Or use value(使用标准)设定0.15Use Site Sectorization()Beamwidth from column(SiteSee射程宽度选列)选Azimuth(方位角)Or use value(使用标准)设定65度Orientation from column(方向从列选)选Azimuth(方位角)OK后弹出保存选框保存文件到文件夹把两个文件图层打开右键单击Layer Control(图层控制)把刚刚新生成的文件图层点击UP(向上),然后对两个图层各自进行Label(标记选项)*图层后的标选最后一项打勾显示Add(添加图层)Remove(移除图层)Up(上移)Down(下移)Display(显示选项)Label(标记选项)HotLink(链接选项)Label选项Label with:选AzimuthAllow duplicate Text:允许重覆文字打勾Allow Overlapping Text:允许重叠文字打勾Label Partial Objects:标示部分对象勾Anchor Point:描点可选择位置Rotate Label with Line:旋转标签线Label Offset:标线距离Aa:设置字体另一个图层设置对应Label with:选AzimuthAllow duplicate Text:允许重覆文字打勾Allow Overlapping Text:允许重叠文字打勾Label Partial Objects:标示部分对象勾Anchor Point:描点可选择位置Rotate Label with Line:旋转标签线Label Offset:标线距离Aa:设置字体接下来调整扇区的颜色选择菜单栏下Map(地图)Create Thematic Map Set(创建地图设置)Create Thematic Map Set(创建地图设置)按上图选项设置Next(下一步)完成后效果2.Mapinfo2Google插件选择工具栏中的Tools(工具)菜单子项Run MapBasic Program(运行MapBasic程序)弹出下图打开窗口,找到Mapinfo2Google插件,打开此时把刚刚完成的效果图窗口化,让基站全部都在窗口化几显示选择工具栏中的Mapinfo2Google(Mapinfo插件)中的子项Convert map window to KML file(生成Mapinfo格式文件)弹出保存选项框,选择保存路径保存后用Mapinfo打开*导入DT路线与导入基站信息表方法相同,但需用后台软件导出xls文件,文件内要有如下指标。
mapinfo教程
MapInfo 教程:
1. 地图浏览和导航:
- 打开 MapInfo 软件。
- 定位工具栏上的放大、缩小和漫游按钮。
- 使用鼠标滚轮进行缩放。
- 使用工具栏上的漫游按钮浏览地图。
2. 图层的添加和删除:
- 点击菜单中的 "文件" -> "打开",选择地理数据文件。
- 在 "图层控制" 窗口中选择要添加的图层。
- 右键点击图层,选择 "删除图层" 可以删除图层。
3. 地图符号化:
- 双击图层,在 "符号化" 选项卡中选择合适的符号化方法。
- 根据需要设置符号化的属性和颜色。
4. 地图查询:
- 点击 "地图查询" 工具栏按钮。
- 在查询对话框中选择要查询的图层和属性。
- 输入查询条件并执行查询。
5. 空间分析:
- 点击 "空间查询" 工具栏按钮。
- 在空间查询对话框中选择要查询的图层和空间条件。
- 执行查询并选择输出结果。
6. 地图输出:
- 点击菜单中的 "文件" -> "导出地图"。
- 选择输出格式和目标路径。
- 设置输出地图的样式和布局。
- 点击 "导出" 完成地图输出。
这些是 MapInfo 的基本操作和功能,希望对您有帮助。
如有其他问题,请随时提问。
mapinfo教程(1)在计算机桌面式地图迅猛发展的今天,MapInfo作为GIS主要的桌面式地图系统继续引领新产品发展的潮流,致力于全方位满足计算机绘制地图的各种需求,该软件包含综合性的计算机地图绘制工具,可实现复杂的地理分析,使用户能够快速、准确、有效地完成创建和编辑地图的操作。
本章主要介绍GIS专业知识和GIS专业软件MapInfo 9.5的基本内容,以及简要介绍MapInfo 9.5软件工作界面,及管理地图文件和查看MapInfo窗口的方法和技巧。
本章学习要点, 了解地理信息系统基本知识, 了解MapInfo基本知识, 熟悉MapInfo 9.5基本功能和新增功能, 熟悉MapInfo 9.5工作界面, 掌握文件管理的方法, 掌握各窗口的创建方法由于地图在表达空间地理信息时具有精确、简洁、丰富、动态、灵活等特点,因此地图已经成为地理工作者普遍使用的地理语言,也是地理信息系统的最重要的数据源。
GIS事实上,地图也是地理信息系统向用户输出信息的重要形式之一。
因此,在学习1-1之前首先需要明确地理、信息、系统之间的相互关系(如图所示),以及通过这些相GISGIS 互关系形成的的含义和创建所具备的条件。
1.1.1 信息与信息系统信息是近代科学的一个专门术语,而信息系统则能为企业、部门或组织的决策过程提供有用的信息。
要了解地理信息系统,首先明确信息和信息系统所代表的含义。
1.信息与数据图1-1 GIS关系图在信息科学领域中,信息与数据不可分离,信息用记录在各种物理介质中的数据来表达,数据中所包含的意义就是信息。
数据只是信息的载体,并不等于信息。
只有理解了数据的含义,对数据做出解释,才能得到数据中所包含的信息。
通常在不会引起混乱的情况下,人们往往对信息和数据这两个术语的使用不加以严格区分。
信息信息是用文字、数字、符号、语言、图像等介质,表示事件(或事物、现象)的内容、数量或特征,从而向人们(或系统)提供关于现实世界新的事实和知识。
用VC++对MapX进行二次开发总结用VC++对MapX进行二次开发总结GIS 2010-08-29 09:33:40 阅读291 评论0 字号:大中小订阅1.MapInfo GIS二次开发概述MapInfo是美国MapInfo公司的产品,是一种桌面地图信息系统。
它为用户提供了完整的地理信息解决方案,以帮助用户实现数据的可视化。
它自带一个功能强大、面向对象的编程工具——MapBasic,这就给用户提供了一个很好的二次开发环境。
目前MapInfo已逐渐成为地理信息系统领域应用较为广泛的工具之一,在我国的测绘、铁路、邮电、水利、林业等部门得到了广泛应用,并收到了良好的经济和社会效益。
目前MapInfo GIS的二次开发方法主要有以下几种方法:(1)方法一:直接使用MapBasic编制应用或分析模型MapBasic是与MapInfo密切集成的开发工具.通过它,用户可以定制MapInfo的界面,取代MapInfo的标准菜单,并能完成复杂、多样的数据查询及对地理对象进行各种空间操作。
但MapBasic开发的界面较单调,且对话框等常用Windows控件的编写较为困难。
(2)方法二:动态数据交换(DDE)通过DDE 建立MapInfo与应用模型之间的通信。
DDE 会话是两个Windows 应用程序交换信息的过程,,只有当两个支持DDE 的应用程序运行时,它们之间才可以进行DDE 会话。
在一个会话中,只有一个应用程序是主动的,称为客户,被动的应用程序称为服务器。
但这种G IS 与应用模型是分离的,不能保证服务器程序对客户程序的指令作出正确处理,故这种方式现在较为少用。
(3)方法三:通过OLE自动化技术(OLEAUTOMATION)MapInfo向容器程序暴露其可编程对象,这与通常在office系列软件中嵌入OLE对象是同一原理。
容器程序可以采用VC,VB,Delphi ,Pb等高级语言,编程手段灵活,但对地图的对象操作、控制仍然离不开MapBasic 语言,且高级语言对嵌入MapBasic 的编写和解释较为困难。
MapInfo教程--二次开发入门摘要:MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的解释性语言,利用MapBasic编程生成的*.mbx文件能在Mapinfo软件平台上运行,早期的Mapinfo二次开发都是基于MapBasic进行的。
MapBasic学起来容易,用起来却束缚多多,无法实现较复杂的自定义功能,用它来建立用户界面也很麻烦,从现在角度看,MapBasic比较适合用于扩展Mapinfo功能。
一、利用MapBasic开发MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的解释性语言,利用MapBasic编程生成的*.mbx文件能在Mapinfo软件平台上运行,早期的Mapinfo二次开发都是基于MapBasic进行的。
MapBasic学起来容易,用起来却束缚多多,无法实现较复杂的自定义功能,用它来建立用户界面也很麻烦,从现在角度看,MapBasic比较适合用于扩展Mapinfo功能。
二、利用OLE自动化开发1. 建立Mapinfo自动化对象基于OLE自动化的开发就是编程人员通过标准化编程工具如VC、VB、Delphi、PB等建立自动化控制器,然后通过传送类似MapBasic语言的宏命令对Mapinfo进行操作。
实际上是将Mapinfo用作进程外服务器,它在后台输出OLE自动化对象,供控制器调用它的属性和方法。
OLE自动化开发的首要一步就是建立Mapinfo自动化对象,以Delphi为例(后面都是如此),你可设定一个Variant类型的全程变量代表OLE自动化对象,假设该变量名为olemapinfo,那么有:oleMapinfo := CreateOleObject('Mapinfo.Application')一旦OLE自动化对象建立,也就是后台Mapinfo成功启动,你就可以使用该对象的Do方法向Mapinfo发送命令,如:oleMapinfo.Do('Set Next Document Parent' + WinHand + 'Style 1')这一命令使Mapinfo窗口成为应用程序的子窗口,WinHand是地图窗口句柄,style 1 是没有边框的窗口类型。
MapInfo教程--二次开发入门摘要:MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的解释性语言,利用MapBasic编程生成的*.mbx文件能在Mapinfo软件平台上运行,早期的Mapinfo二次开发都是基于MapBasic进行的。
MapBasic学起来容易,用起来却束缚多多,无法实现较复杂的自定义功能,用它来建立用户界面也很麻烦,从现在角度看,MapBasic比较适合用于扩展Mapinfo功能。
一、利用MapBasic开发MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的解释性语言,利用MapBasic编程生成的*.mbx文件能在Mapinfo软件平台上运行,早期的Mapinfo二次开发都是基于MapBasic进行的。
MapBasic学起来容易,用起来却束缚多多,无法实现较复杂的自定义功能,用它来建立用户界面也很麻烦,从现在角度看,MapBasic比较适合用于扩展Mapinfo功能。
二、利用OLE自动化开发1. 建立Mapinfo自动化对象基于OLE自动化的开发就是编程人员通过标准化编程工具如VC、VB、Delphi、PB等建立自动化控制器,然后通过传送类似MapBasic语言的宏命令对Mapinfo进行操作。
实际上是将Mapinfo用作进程外服务器,它在后台输出OLE自动化对象,供控制器调用它的属性和方法。
OLE自动化开发的首要一步就是建立Mapinfo自动化对象,以Delphi为例(后面都是如此),你可设定一个Variant类型的全程变量代表OLE自动化对象,假设该变量名为olemapinfo,那么有:oleMapinfo := CreateOleObject('Mapinfo.Application')一旦OLE自动化对象建立,也就是后台Mapinfo成功启动,你就可以使用该对象的Do方法向Mapinfo发送命令,如:oleMapinfo.Do('Set Next Document Parent' + WinHand + 'Style 1')这一命令使Mapinfo窗口成为应用程序的子窗口,WinHand是地图窗口句柄,style 1 是没有边框的窗口类型。
你还可以使用自动化对象的Eval方法返回MapBasic表达式的值,如下面语句返回当前所打开的表数:TablesNum:=olemapinfo.eval('NumTables()')你也可以直接调用Mapinfo菜单或按钮命令对地图窗口进行操作,如地图放大显示:oleMapinfo.RunMenuCommand(1705)2. 建立客户自动化对象触发CallBack基于OLE自动化开发的难点在于所谓的CallBack,Mapinfo服务器对客户程序地图窗口的反应叫CallBack,假如你在地图窗口中移动地图目标,Mapinfo能返回信息告诉你地图目标当前的坐标位置,这就是CallBack功能。
如果你想定制自己的地图操作工具或菜单命令,你必须依靠CallBack。
但是想捕获CallBack信息,你的客户程序必须具备接收CallBack信息的能力,为此需要在客户程序中定义自己的OLE自动化对象,如://定义界面IMyCallback = interface(IDispatch)['{2F4E1FA1-6BC7-11D4-9632-913682D1E638}']function WindowContentsChanged(var WindowID: Integer):SCODE;safecall;function SetStatusText(var StatusText: WideString): SCODE; safecall;//定义界面实现TMyCallback = class(TAutoObject, IMyCallback)function SetStatusText(var StatusText: WideString): SCODE; safecall;function WindowContentsChanged(var WindowID: Integer): SCODE;safecall;其中WindowContentsChanged函数用于返回变化窗口的ID号,即当地图窗口变化时(如放大、缩小),让Mapinfo将地图窗口的ID号返回给客户程序; 另一个SetStatusText函数返回Mapinfo状态条变化信息。
编程人员不能随意定义这些函数,因为只有在三种情况下Mapinfo 服务器的CallBack才会被触发:(1)地图窗口发生变化,触发函数为WindowContentsChanged;(2)Mapinfo状态条信息改变,触发函数为SetStatusText;(3)用户选择自定义工具或菜单命令在地图窗口上操作,如用户定制的画线工具,当用户在地图窗口画线时触发Mapinfo的CallBack返回线的坐标位置。
建立客户自动化对象后,调用MapInfo自动化对象的SetCallback方法将客户自己定义的自动化对象告诉Mapinfo,只要程序一运行,客户自动化对象就会自动在注册表中注册,然后就能收到CallBack信息了,如:My:=MyCallBack.CreateoleMapInfo.SetCallBack(My)这里打一个比方我想会有助于理解上述机制,客户程序与Mapinfo之间的交互就像舞台指挥与木偶演员的交流,客户程序中的地图窗口或说Mapinfo子窗口只不过是一个牵线木偶,后台的Mapinfo才是真正操纵木偶的演员,所以客户程序必须与后台Mapinfo建立正向、反向的联系机制,才能操纵地图窗口中的图形目标。
三、利用MapX开发1. 掌握使用MapXMapX是Mapinfo公司最新推出的ActiveX控件产品,目前已经发展到MapX4.5。
由于MapX 是基于Windows操作系统的标准控件,因而能支持VC、VB、Delphi、PB等标准化编程工具,使用时只需将控件装入开发环境,装入控件后,开发环境ActiveX工具条上会增加一个控件按钮Map,把它拖放到窗体上就可建立一个TMap类型的ActiveX地图对象Map,通过设置或访问该Map对象的属性、调用该Map对象的方法及事件,便能快捷地将地图操作功能溶入到你的应用程序中。
MapX由一系列Object(对象)和Collection(对象集合)组成,Map是最基本的对象,每个Map 由Layer(层)、Dataset(数据集)和Annotation(标注)这三个对象及对象集合(Layers、Datasets、Annotations)来定义,其中Layer用于操作地图图层,Dataset用于访问空间对象的属性数据,Annotation用于在地图上添加文本、符号等标注,掌握上述三个主要对象的特征后,再顺藤摸瓜掌握下一级对象的特征,如每个Layer又由Feature(点、线、面、文本图形目标)对象及对象集合(Features)定义,每个Dataset由Field(属性数据域)对象及对象集合(Fields)定义......,这样很快就能把MapX学到手。
2. 定义地图坐标系在MapX开发中需要特别注意地图坐标系问题,MapX地图坐标系分为地图显示坐标系和内部计算坐标系,两者互为独立,在GIS应用开发中根据应用需要设置好这两种坐标系非常重要,因为坐标系一方面影响软件系统的内部坐标处理,另一方面影响地图的外观显示。
Map对象的坐标系及投影通过CoordSys对象的Set方法定义:Set(Type, [Datum], [Units], [OriginLongitude], [OriginLatitude],[StandardParallelOne], [StandardParallelTwo], [Azimuth], [ScaleFactor],[FalseEasting], [FalseNorthing], [Range], [Bounds], [AffineTransform])其中主要参数:Type表示投影类型,Type为1时地图坐标以经纬度表示,后面都为可选参数,其中Datum为地球基准面;Units为坐标单位,如Units为7表示以米为单位;OriginLongitude、OriginLatitude分别为起始经度和纬度;StandardParallelOne、StandardParallelTwo为第一、第二标准纬线,该参数与地图投影相关。
通过设置Map对象的DisplayCoordSys和NumericCoordSys属性返回的CoordSys对象,就可设定地图显示坐标系和内部计算坐标系。
举例如下:procedure TMain.DefineMapParam();varMapDatum: Variant;//地球基准面begintryMapDatum := CreateOleObject('MapX.Datum.4'); //建立基准面对象//定义北京54坐标系基准面// (Ellipsoid, ShiftX, ShiftY, ShiftZ, RotateX, RotateY, RotateZ, ScaleAdjust, PrimeMeridian) MapDatum.set(3, 24, -123, -94, -0.02, 0.25, 0.13, 1.1, 0);//定义北京54坐标系经纬度作为内部计算坐标系Map1.NumericCoordSys.Set_(1, MapDatum);//定义北京54坐标系30度标准纬线麦卡托投影作为显示坐标系,单位为米Map1.DisplayCoordSys.Set_(26,MapDatum,7,0,0,30);finallyVarClear(MapDatum);end;坐标系是GIS系统的基石,正确设置坐标系是系统成败的关键。
3. 操纵地图对象你可以简单地加载一个GeoSet文件,给Layers对象集合赋予具体的内容,随之在Map对象中就能看到地图显示,GeoSet文件类似MapInfo中的工作空间,MapX中带有Geoset文件的编辑器GeosetMangater.exe,用户可在编辑器中组合及设置图层,然后保存生成一个*.gst 文件直接调入Map对象,这样可以节省时间。
你也可以通过Layers对象的Add 或Remove 方法添加或移走地图图层,如:yers.Add(FileName); // 添加图层,FileName为文件全路径名yers.Remove(3); // 移走地图第三层Layers对象由一组Layer对象组成,通过Layer对象的Features和Selection对象集合你可以操纵和选择图层上的图形目标,如:yers.Item(1).AddFeature(Newobj); //将新建对象Newobj添加到图层一4. 地图数据捆绑数据捆绑是将不同来源的数据对应到地图层的过程,捆绑结果会产生一个Dataset对象,Dataset对象的集合组成Datasets Collection,它定义了Map对象的数据集属性。