MapInfo-buffer使用教程

合集下载

mapinfo使用方法

mapinfo使用方法

第4页
利用dbf表格创建点
将exel文件中经纬度设为小数点后六位数值格式,然后另 存为dbf4格式文件;(注意存为dbf前将excel表格中文字 全部改为宋体,并插入“定义名称”,以防dbf数据丢失) 在mapinfo中打开dbf文件,打开时选中“No Character Set Version。”然后进行“表->创建点”,为点选择自 己喜欢的符号标识; “图层控制” ->“增加图层”,添加生成的图层即可, 也可再次根据自己喜好修改新生成点图层的显示属性和标 注属性。
第21页
第22页
CNAME 中牟外国语学校 中牟堤头 新郑机场气象楼 LON LAT 113.964522 34.714200 114.038600 34.842370 113.836417 34.529361 所属县市 中牟 中牟 新郑 机房来源 共站 共站 共站 区域
第5页
根据小区名称查找并定位某基站
典型应用场景
操作方法(接上页)

选择“查询->查找”,选择相应的表和待查询的列,确定即可定 位到该基站。也可选择重新指定,指定其它的表或待查询的其它 列。
查询过一次后,使用快捷键“CTRL+F”,可直接 查找上次查询过的列。

第7页
划分区域、统计面积和线长
新建polygon图层
选择菜单“地图->图层控制”,polygon图层已经显示添 加进去,此时绘图对话框已经可以编辑。

有时需要在mapinfo地图中查找某个基站并进行定位
操作方法

在进行查找操作之前,首先应确保待查找的字段已经允许进行索 引,若未允许索引,则修改为允许索引:选择“表->维护表结 构”,选中相应的表,点击确定;将待查找的字段复选框的索引 打钩,确定即可。

使用Mapinfo简单查看覆盖范围

使用Mapinfo简单查看覆盖范围

使⽤Mapinfo简单查看覆盖范围使⽤Mapinfo简单查看覆盖范围⼀、现象描述在将站点信息导⼊到Mapinfo之后,有时候希望能够在Mapinfo中将每个站点的覆盖范围简单表⽰出来,这样就能够在电⼦地图中对站点覆盖情况有⼀个直观的了解。

⼆、原因分析在Mapinfo中,有⼀个功能是“Buffer”,该功能是对每个点进⾏按设定范围放⼤,我们可以利⽤这个性质来对站点的覆盖范围进⾏简单的分析。

三、处理过程1、准备站点列表,主要包含站点名称及相应的经纬度即可。

在本案例中,使⽤的站点列表Site List.xls2、准备好站点列表后,就可以在Mapinfo中直接导⼊,之后就可以通过【Table/Create Points】弹出对话框,创建站点图层(图1)。

图13、创建好图层之后,我们就可以打开我们创建好的图层了【File/Open】。

4、打开图层之后,我们可以通过【Table/Buffer】,出现如下对话框。

5、点击Next,出现如下对话框。

图46、点击Create,出现下图。

图57、再点击Create,选择新图层的名字和存储位置。

图68、点击“保存”之后,出现如下设置框,可以设置相关的信息,“Value”⼀栏可以设置“Buffer”的距离,即基站的覆盖范围,这⾥设置成1.5km;中间的选项是选择对于每个点设置同⼀个Buffer或者是对每个点设置单独的Buffer,建议选成同⼀个Buffer,即“One buffer of all objects”。

图79、点击Next,出现下图(图8)。

图810、点击OK,就出现了新建的Buffer图层(图9),结合数字地图,可以对该区域的站点覆盖情况有个直观的了解。

图9四、建议与总结由于这种⽅法做出的覆盖图并没有考虑地物损耗,覆盖效果并不准确,只能作为⼀个简单⼤概的参考,详细的覆盖仿真还是需要通过U-net等专业仿真⼯具输出。

MapInfo表的管理与使用

MapInfo表的管理与使用

MapInfo表的管理与使用第一篇:MapInfo表的管理与使用一、MapInfo表的管理与使用1、表的创建1.1创建表结构操作步骤:打开MapInfo,选取【文件】>【新建表】,出现“新建表”对话框,如图,有三个选项,我们选择第2个选项【打开新的地图窗口】,单击【创建】,则先打开“新表结构”对话框。

按下列内容创建“土地利用图”的表结构,如下图所示:新表结构对话框右边的选项意义很明显。

可以增加和移去字段,可以调整字段位置,这有利于数据浏览。

新建表结构时要设定坐标投影,系统默认的投影是经纬度。

而城市规划大于万分之一的图纸是非地球投影,X、Y坐标值以m作单位。

还要根据地图的最小最大X、Y坐标设定地图窗口的有效作图范围,在边界之外的地图对象不能显示。

注意:地图窗口的投影一经设定就不能改变。

如果确需改变投影,可对表文件“另存来改变投影,包括改变作图范围” 1.2创建地图单击绘图工具栏中的多边形工具,在地图窗口中绘出4个多边形,如下图。

(注:如果“土地利用图”未打开,应单击【文件】>【打开】找到该图层打开。

)1.3给地图对象输入属性数据单击信息工具按钮,再在地图上点击一个地块,将弹出一个信息框。

信息框中的字段是按表结构设定的字段排列的,按规划的地块编号、用地性质、面积等依次键入数据并逐块执行输数据的操作。

1.4查看数据浏览表浏览表是一种电子表格,表中的每一行包含一条记录,该记录的每一列又包含某个字段的信息。

通过选取【窗口】>【浏览窗口】,再选取“土地利用图”,就打开该图层的浏览表,如下图所示。

表中可看到相对于4个地块的4条记录,每条记录包含的字段值。

如果将地图窗口与浏览窗口同时显示在屏幕上,我们就可以进行图与表的双向查询操作。

应用选择工具单击图上的一个地块,则表示相应的记录会突显。

相反,在表上单击一条记录,则图上的相应地块会突显。

以上就是创建MapInfo表文件的全过程,实际工作中只是数据更多、更具体而已。

mapinfo详细教程

mapinfo详细教程

20
创建专题地图
• 等级符号专题
整理课件
21
格网专题和专题组合
整理课件
22
格网专题和专题连接
• 使用文本连接
整理课件
23
创建专题图
Step 1: 选择需要的专题类型 Step 2: 设置地图的表和字段 Step 3: 自定义式样、范围和图例
整理课件
24
范围
有六种方法可以使用,这六种方法在联机帮 助和培训手册中都有描述
整理课件
55
自动跟踪
当你按住SHIFT键并抓取节点的时候,你可以一个 节点一个节点地自动跟踪已有的对象。 MapInfo将沿起始点与终止点之间的最短距离方向 抓取节点。
整理课件
56
创建新的边界
整理课件
57
更新列对话框
整理课件
In other words...
58
更新列
Update Column TOTAL_YIELD_98
整理课件
42
用普通对象连接表
用DISTRIBUTORS表中落在PCODES表的多边形对象内 的点对象进行表连接
整理课件
43
计算被铺染的字段
Where DISTRIBUTORS.OBJ WITHIN PCODES.OBJ
Sum Derived Field
整理课件
44
等计数
创建一个区域使的落在每个区域内的对象/记录 大致相同
定义 – 地理编码
给表中记录指定地理坐标的过程 换句话说,我们将使用表中的地址和市郊列的数据 在地图上绘点
整理课件
10
地理编码过程
整理课件
11
MAPINFOW.ABB 文件

《mapinfo入门教程》ppt课件

《mapinfo入门教程》ppt课件

MapInfo提供了丰富的空间分析工具,包 括缓冲区分析、叠加分析、网络分析等, 能够满足不同领域的需求。
可视化表达
自定义开发
MapInfo支持多种可视化表达方式,包括 地图、图表、三维场景等,能够直观地展 示空间数据和属性数据。
MapInfo提供了灵活的二次开发接口,支 持用户自定义功能和扩展应用。
专题地图特点
专题地图的制图区域范围和比例尺一般不受限制,可以包括整个地球或某个区域,比例尺可大可小; 专题地图的内容广泛,几乎可以包括所有自然和人文现象;专题地图不仅可以表示现象的现状及其分 布,而且能表示现象的动态变化和发展规律。
制作专题地图步骤
收集数据
收集与主题相关的数据,包括 空间数据和属性数据。
网络分析
基于网络数据集进行最短路径、最 佳路径等分析,适用于交通、物流 等领域的规划与优化。
可视化表达技巧
符号化表达
通过不同的符号形状、大小、颜色等 视觉变量来区分和表示不同的空间对 象或属性信息。
色彩设计
运用色彩心理学和色彩构成原理,设 计合理的色彩方案,增强地图的视觉 冲击力和表现力。
注记与标注
基础操作与界面介绍
启动与退出MapInfo
启动 MapInfo
通过开始菜 单启动
退出 MapInfo
使用文件菜 单中的退出 选项
通过桌面快 捷方式启动
使用Alt+F4 快捷键
界面组成及功能
标题栏
01 显示当前打开的地图文档名称
和MapInfo版本号。
菜单栏
02 包含文件、编辑、视图、地图
、表格、窗口和帮助等菜单项 ,用于执行各种操作。
添加必要的文字注记和标注,解释和 说明地图内容,提高地图的可读性和 易理解性。

MapInfo教程第11章

MapInfo教程第11章

退出MapInfo
通过文件菜单退出:点击菜单栏中的 “文件”→“退出”。
通过标题栏退出:点击标题栏右侧的 关闭按钮。
界面介绍
工具栏
提供常用命令的快捷方式,如 打开、保存、打印、剪切、复 制、粘贴等。
表窗口
用于显示和编辑与地图相关联 的表格数据,可以进行排序、 筛选、添加、删除等操作。
菜单栏
包含文件、编辑、视图、地图 、表、窗口和帮助等菜单项, 用于执行各种命令和操作。
MapInfo教程第11 章
目录
• 引言 • MapInfo基础操作 • 数据输入与编辑 • 数据查询与分析 • 地图制作与编辑 • 高级功能与应用 • 案例实践与操作演示 • 总结与展望
01
引言
目的和背景
目的
本章旨在向读者介绍MapInfo的高级功能和应用,帮助读者更深入地理解和掌 握MapInfo的使用技巧和方法。
06
高级功能与应用
空间分析
空间查询
允许用户根据空间关系(如相邻、相交、包含等 )查询和选择地理对象。
缓冲区分析
创建地理对象的缓冲区,用于分析影响范围、距 离等。
叠加分析
将多个图层进行叠加,根据属性或空间关系进行 合并、相交等操作,提取所需信息。
网络分析
路径分析
确定两点之间的最佳路径,可考虑距离、时间、成本等因 素。
结构
本章共分为以下几个部分
1. 空间分析
介绍空间分析的基本概念和方法,包括空间数据的输入、 处理和分析等方面的内容。
2. 数据可视化
讲解如何将空间数据以图形化的方式展现出来,包括地图 制作、图表生成等方面的内容。
3. 自定义地图制作
介绍如何使用MapInfo的自定义功能,制作符合个人需求 的地图,包括地图元素的添加、编辑和美化等方面的内容 。

mapinfo教程

mapinfo教程

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使用指导书陈晔2016-9-20目录一.创建点 (4)1、导入数据 (4)2、设置以第一行为标题 (5)3、字段设置 (5)4、Table另存为 (6)5、创建点 (7)6、设置站点标签 (8)二.BUFFER(区域外扩) (9)1、点击Table->Buffer (9)2、选择新建表打开的位置和表结构 (9)3、查看新建表的表结构 (10)4、对Buffer图层进行命名 (11)5、设置Buffer类型 (11)6、选择Buffer字段汇聚方式 (12)7、效果 (12)三.更改表结构 (13)1、打开图层 (13)2、查看/修改表结构 (13)3、增加字段 (14)4、查看更改后的表结构 (15)四.数据更新 (16)1、手动填写 (16)1.1、选择信息工具,点击闭合区域,手动填写 (16)2、自动计算 (17)2.1、更新列 (17)2.2、设置更新选项 (17)2.3、设置值运算方法 (17)2.4、效果 (18)2.5、增加经纬度 (18)2.6、效果 (19)五.图层合并 (19)1、点击Table -> Append Rows to Table (20)2、选择合并的Table (20)3、效果 (21)六.SQL Select (21)1、打开图层 (22)2、SQL Select (22)3、填写SQL Select公式 (23)4、效果 (23)5、增加条件 (24)6、效果 (25)7、导出成表格 (25)七.专题图层 (26)1、一般专题图层 (26)1.1、Map -> Create Thematic Map,或者F9创建专题 (26)1.2、根据需求选择专题类型 (27)1.3、选择Table和做专题图层的字段 (27)1.4、详细设置专题 (27)2、渲染图 (28)2.1、点击创建专题图层,根据需求选择渲染图类型 (29)2.2、选择渲染字段 (29)2.3、详细设置 (29)2.4、效果 (32)八.绘制LAC/TAC区域 (32)1、打开表格 (32)2、另存副本 (34)3、创建点 (34)4、打开已创建点 (35)5、使图层可编辑 (35)6、使用Voronoi绘制多边形 (36)7、用列合并对象 (39)8、修饰图层 (42)一. 创建点1、导入数据可以导入多种类型的数据,如果是xls/xlsx文件,在导入过程中可以重新设置字段名称、和数据类型。

《mapinfo全部教程》课件

《mapinfo全部教程》课件
《MapInfo全部教程 》PPT课件
目 录
• MapInfo软件简介 • MapInfo基础操作教程 • MapInfo进阶操作教程 • MapInfo高级应用教程 • MapInfo常见问题解答
CHAPTER 01
MapInfo软件简介
MapInfo软件的发展历程
1986年,MapInfo公司成 立,推出首款地图信息系 统软件。
2000年代,MapInfo不断 推出新版本,并拓展全球 市场。
1990年代,MapInfo软件 逐渐成为地理信息系统领 域的领导者。
2010年代,MapInfo软件 持续创新,并与其他技术 进行集成。
MapInfo软件的主要功能
地图浏览与缩放
支持多种地图数据格式,提供流畅的地图浏 览和缩放功能。
感谢您的观看
数据查询与分析
支持属性数据和空间数据的查询、统计和空 间分析功能。
地图标注与符号化
提供丰富的标注、符号和图层样式,满足各 种地图表达需求。
数据导入与导出
支持多种数据格式的导入和导出,便于与其 他软件进行数据交换。
MapInfo软件的应用领域
城市规划与管理
用于城市规划、土地利用、交通管理等方面的数据可视化与分析。
生动和立体。
MapInfo地图的图层管理
创建和管理图层
在MapInfo中,用户可以创建多 个图层,并对每个图层进行单独 管理,包括添加、删除、隐藏等 操作。
设置图层叠加顺序
用户可以设置图层的叠加顺序, 以控制不同图层之间的显示关系 ,实现更加复杂的地图表达。
调整图层透明度
通过调整图层的透明度,用户可 以在同一图层上叠加多个要素, 以实现更加丰富的地图信息展示 。

Mapinfo使用指南

Mapinfo使用指南

MapInfo使用指南一、图像的配准1.双击桌面上的图标,即可打开Mapinfo。

2.点击工具条上的按扭或从“文件”菜单中选择“打开[O]…”出现以下对话框:3.选择你所要编辑图件的位置,双击打开图件(如果你的图件还没有进行配准-具有地理座标,请你在“文件类型”下拉菜单中选择“栅格图像”;如果是配准过的图件,“文件类型”要求是“Mapifo(*.tab)”)。

4.下面介绍一下图像的配准:打开栅格图像后,如下图所示:计算机问你是想显示还是想配准,点击“配准”(当然,如果你只是想看一下的话,点击“显示”就可以了)。

点击配准后如下图所示:要配准这张图,首先你应该知道这张图的四角座标,然后你是要用经纬度配呢还是用公里网,当然,你点一下上图中的“投影[P]…”就可以了,打开后,如下图所示:如果你要用经纬度配,如上图,在类别中选“Longitude/Latitude”,类别项中选“Longitude/Latitude”即可;如果你要用公里网配,在类别中选“Gauss-Kruger(China)6Degree Zone”类别项中选“GK Zone16(Zone46=3Degree Zone31)”即可。

(注意:有些版本的Mapinfo是没有公里网配准的!)点确定回到上个对话框。

(注意:如果你选择的是公里网配,一定要在“单位[U]…”对话框中把单位改为“米”,如果你选用的是经纬度,就不存在这个问题,因为它只有度单位。

)5.现在就可以进行配准了。

(记住:配准必须是从左到右,从上到下的顺序。

)首先把左上角放到足够大(点击按扭即可放大,当然,点击按扭即可缩小),在左上角点中心点击鼠标左键,如下图:填入你的经纬度坐标。

其它不用改。

注意,“地图[M]X”是经度,“地图[A]Y”是纬度。

另外,如果你是经纬度配准,它确认的是度的格式,如果你的四角坐标是度分秒,你要换算成度的后再填入;如果你是公里网配准,那么经度输入的时候,前面的16不要输,也就是去掉后再填入。

2024版培训教材Mapinfo使用指导pdf

2024版培训教材Mapinfo使用指导pdf
25
环境保护领域应用案例
01 02
环境质量监测与评估
利用Mapinfo的空间插值和环境质量评价模型,对环境监测数据进行空 间分析和可视化表达,揭示环境质量的空间分布和变化趋势,为环境保 护提供决策支持。
生态保护与修复
借助Mapinfo的生态敏感区分析和生态廊道设计功能,划定生态保护红 线,制定生态修复方案,促进生态环境的保护与修复。
借助Mapinfo的地理数据库管理功能,实现城市规划编制、审批、实施等环节的信息化管理, 提高规划管理的效率和规范性。
2024/1/29
城市历史文化保护
利用Mapinfo的历史地理信息叠加分析功能,挖掘城市历史文化资源,制定历史文化保护规 划,传承和弘扬城市历史文化。
24
交通运输领域应用案例
2024/1/29
2024/1/29
坐标系设置
提供灵活的坐标系设置 功能,可根据需要选择 不同的地理坐标系或投 影坐标系,确保数据的 空间准确性。
数据导入导出
支持多种数据导入导出 方式,如通过ODBC连 接导入数据库数据,导 出为通用的GIS数据格 式等。
21
提高数据处理效率的策略
A
批量处理
支持批量处理数据,如一次性对多个图层或数 据进行相同的操作,提高处理效率。
交通网络规划 运用Mapinfo的交通网络分析功能,对交通网络进行拓扑 分析、最短路径分析、交通流量预测等,为交通网络规划 提供科学依据。
交通安全管理
通过Mapinfo的交通事故热点分析功能,识别交通事故多 发路段和时段,制定针对性的交通安全措施,提高道路交 通安全水平。
智能交通系统 结合Mapinfo的实时交通信息获取和处理能力,开发智能 交通系统,实现交通信号控制、智能导航、车辆调度等功 能的智能化和自动化。

mapinfo使用教程学习资料.ppt

mapinfo使用教程学习资料.ppt
我们能在地图窗口或浏览窗口中显示标准的 MAPINFO表
空间数据显示在地图窗口中 表数据以表格的形式显示在浏览窗口中
最新.课件
10
图表窗口
MapInfo可以图表显示数值数据.
最新.课件
11
保存查询表
只有一种方式永久保存查询表
文件 > 保存为 命令 标准工具栏上的保存为 工具
一旦你指定了一个新的文件名,并将它保存在一个 目录下,它就变成了永久表。
最新.课件
35
图层控制对话框
这里, 图层可以
重排顺序
增加/删除
显示/不显示
可选/不可选
可编辑/不可编辑
标注
缩放层
变换显示设置内容
最新.课件
36
改变地图显示
我们将使用图层控制对话框改变地图窗口中一些图 层的显示
最新.课件
37
制图图例
图例提供识别地图中每一 层的各类对象的识别键
该工具可以在窗口中重新地位地图和布局
最新.课件
24
改变视图工具
该工具允许你在窗口中变换缩放、比例尺和地图 中心
最新.课件
25
信息工具
该工具显示选中 地图对象对应的 表格数据
AUSCITY SESUBURBS
AUSTRALIA
OCEAN
最新.课件
26
显示/隐藏统计工具
该工具显示选中对象的统计信息 该工具在包含数值数据的列上进行统计计算
自定义地图层
最新.课件
32
图层
当在地图窗口显示表时,实际指的是图层 一个地图窗口可以由一层或多层组成 地图窗口中的每一层对应一张打开的表
最新.课件
33
图层
MapInfo以空中俯视的方式显示地图

Mapinfo的使用和插件工具

Mapinfo的使用和插件工具
生成后的图层:
M a p b a s i c 插 件 - R N P To o l s
将压缩包解压到D盘,将任何一个道路图层改名为dl.tab(总共有4个文 件),并复制到Zz1_5000文件夹里可。 将基站信息填入all_mapinfo_data_v1 .xls中,其中这3列不要更新,它是 公式,复制到该列其他单元格:start_ang 、end_ang、 adj_direction , 更新表格后,另存到D:\mapinfo 为all_mapinfo_data .csv。 运行map_site_lte,即插件运行后,在mapinfo工具栏就会显示 RNP_Tools的菜单。 先运行Create map,然后就再运行其他子菜单即可。 要求优化人员都要安装mapinfo(7.0以上),并熟悉使用。
R N P To o l s 使 用 注 意 事 项 压缩包必须解压在D:\mapinfo目录下,并且.csv文件 放在该目录下。 all_mapinfo_data.xls(office2003版本)里面的数 据更新完,另存为all_mapinfo_data_lte.csv。 将电脑的显示日期格式改为2015-01-30格式。 如果直接点击map_site_lte报错,可以先打开 mapinfo软件,然后从Tools里打开,如下:
PCI模干扰演示
邻区显示
Hale Waihona Puke 谢谢!Mapinfo的使用和插件工 具
Mapinfo的使用 打开mapinfo软件,显示以下界面:
基站数据的手工导入
将基站数据输入标准基站信息表中,并导入到mapinfo中
基站数据的手工导入
导入之后,就呈现以下表格形式,并通过创建点来创建基站图层:
基站数据的手工导入

MapInfo操作指导

MapInfo操作指导
比较常用的一些地理信息系统软件,具体包括三家美国 GIS 开发商 ESRI, Intergraph 和 MapInfo 的软件产品,以及三个国产软件:MapGIS,GeoStar 和 Citystar。其中 MapInfo 是在无线通信网络规划中比较常使用的一款软件,本章主 要对此软件的功能及使用方法进行一个介绍,着重于无线网络规划优化中的应用。
i
3.7.1 生成扇区图层.........................................................................................................................41 3.7.2 创建和渲染.............................................................................................................................41 附录 A 参考文献 .........................................................................................................................................45
ii
第1章 概述
地理信息系统 GIS 是以采集、存储、管理、描述和分析与地球表面及空间地理分 布有关的数据的信息系统。它是以地理空间数据库为基础,在计算机硬件、软件 环境支持下,对空间相关数据进行采集、管理、操作、分析、模拟和显示,并采 用地理模型分析方法,实时提供多种空间和动态的地理信息,为地理研究、综合 评价、管理、定量分析和决策服务而建立的一类计算机应用系统。

数字化地理信息系统mapinfo应用教程(高级应用篇)

数字化地理信息系统mapinfo应用教程(高级应用篇)

高级应用篇第十八章 跨平台集成地图建立一个完善的大型应用系统应对各种不同平台博采众长利用其他平台能够调用MapInfo 环境下的数据图形等在Windows 环境下可以通过MapBasic 之外的其他编程语言控制MapInfo 例如可以将MapInfo 的地图窗口集成到用Visual Basic 编程语言开发的应用程序中因为在其他的应用程序中集成了MapInfo 所以将这种应用程序的开发语句称为跨平台集成地图(Integrated Maping)如果已经非常熟悉其他软件开发工具如C Visual Basic 或De1phi 等可以集成MapInfo 窗口到非MapBasic 应用程序中特别是在原有成熟的应用系统中增加地理信息管理功能这种方法是简捷有效的18.1 集成地图的概念应用程序可以控制集成地图的外观生成完全不同于MapInfo界面的应用程序如用VB 编写一个多文档界面MDI 的应用程序其中包括MapInfo 的地图和例览窗口当在VB 程序中集成一张地图时用户看到的是一个真实的MapInfo 地图窗口而不是位图图元文件或者任何其他类型的图形文件在这个地图窗口中用户可以如同使用MapInfo 一样与地图交互如使用缩放工具放大/缩小地图一个集成地图窗口具有MapInfo 中地图窗口的所有功能当用户运行一个集成地图的应用程序时MapInfo 系统实际上是在后台运行生成一个集成地图的应用程序不仅可以采用一种非MapBasic 语言还可以采用多语言混合编程常用的是C 和Visual Basic 两种语言本章的程序例子都是用Visual Basic 编写的通常在应用程序中执行一条启动MapInfo的命令启动后的MapInfo 在后台运行如果是Visual Basic 调用VB 的Create Object()函数启动MapInfo在集成地图应用程序中通过向MapInfo 发送MapBasic 的命令串来操作MapInfo 使用自动OLE OLE Automation 或者DDE 给MapInfo 发送这种命令串MapInfo 就像在MapBasic 交互命令窗口中键入这些命令一样执行相应的操作在MapBasic 中使用Map From 语句打开一个地图窗口在集成地图应用程序中同样使用这条语句打开一个地图窗口但是还必须增加一些语句如Set Next Document Parent 使得地图窗口成为应用程序的一个子窗口这个过程称为重生成Reparent ”可以重生成地图测览布局和图例窗口重生成MapInfo窗口到其他应用程序中时并不能使MapInfo 存取其应用程序的数据在MapInfo 窗口显示数据前还必须在MapInfo数据表中保存这些数据如果已经编写了MapBasic 程序可以作为集成地图应用程序的一部分继续使用然而高级应用篇己编译的MapBasic 程序.MBX 部分是可选的对有些应用程序可能不需要MapBasic 程序18.2 集成地图的技术要求18.2.1 系统要求集成地图需要具备下列条件1. 需要MicrosoftWindows 环境可以使用16位或者32位的Windows2. 需要MapInfo 4.0或更高版本3. 计算机必须有足够的内存空间和系统资源保证同时运行客户程序和MapInfo4. 客户程序如Visual Basic 程序必须能够作为自动OLE 的控制器或DDE 客户程序推荐使用自动OLE 因为自动OLE 比DDE 更稳定同时它还能报告MapInfo 的运行错误如果使用DDE 将不能获取错误代码5. 客户程序必须能够创建用户接口的诸要素如窗口窗体以及控制客户程序同时还必须能够获取接口窗口的窗口号HWND例如在Visual Basic 中在窗体上放置一个PictureBox 控件当发送一个命令给MapInfo 告诉MapInfo 在PictureBox 中打开一幅地图时必须指定PictureBox 的HWND 18.2.2 其他技术说明1. 开发一个集成地图的应用程序必须使用非MapBasic 语言编写程序可以使用各种流行的开发工具编写客户程序如C C++VisuaI Basic 3.0以上版本PowerBuilder 或Delphi2. 储存地图使自动OLE 但不能使用嵌入式OLE 当希望在自己的应用程序中放置一个MapInfo 地图窗口时不能嵌入它而是要发送一系列命令串来重生成一个窗口让MapInfO窗口作为应用程序的子窗口3. 集成地图不含VBX 或OCX控件18.2.3 简单的例程下面的VisuaI Basic 例程说明了在其他的应用程序中集成MapInfo 的一般方法 建立一个新的Visual Basic 工程在工程的General declarations 过程中声明一个Object变量Dim mymap As Object接下来在Form_Load 过程中添加下列语旬Sub Form_Load()Set mymap =CreateObjectMapInfo.applicationmymap.do Set Application Window &From1.hWndmymap.doSet Next Document Parent&Form1.hWnd&Style 1”第十八章 跨平台集成地图mymap.do Open Table”Worle”Inteactive Maap From word” mymap.RunMenuCommand 1702mymap.do Cteate Menu”MapperShortcut”ID 17 As”(-“”End Sub当运行这个VB 程序时它就在后台启动MapInfo 然后建立一个地图窗口该地图窗口会作为VB程序的一个子窗口下面详细说明集成地图过程中的各个细节18.3 集成地图的方法本节介绍如何集成MapInfo 到VB 中阅读本节内容要求读者了解VB 的有关术语和概念并要求有一定的编程经验即使是其他语言的编程经验18.3.1 启动MapInfo要启动MapInfo 调用VB 的CreateObject函数并且赋给一个VB 的对象Object变量特别要注意这个对象变量必须是全局变量否则当退出这个子程序时MapInfo 对象将被释放假设对象变量是MapInfo 则下列语句可以启动MapInfoSet MapInfo=CreateOject(“MapInfo.Application”)要选用以前启动的MapInfo 而不另启动MapInfo 调用GetObject()函数Set MapInfo=GetObject(“MapInfo.Application”)如果运行的是MapInfo CreateOject 和GetObject()函数使用自动OLE 连到MapInfo 如果使用DDE 在VB 中使用Shell()函数启动MapInfo 然后使用LinkMode 建立与MapInfo 的DDE连接在32位Windows 环境下可以运行多个MapInfo 如果已经有一个MapInfo 正在运行运行集成地图的应用时调用CreateOject 又启动一个MapInfo 这时两个MapInfo 将独立运行18.3.2 向MapInfo 发送命令启动MapInfo 后构造表示MapBasic 语句的字符串如想让MapInfo 执行MapBasic 的Open Table语句在VB中构造下列字符串msg "Open Table" "states.tab" "Interactive"如果使用自动OLE 连到MapInfo 使用DO 方法发送这个表示语句的字符串Mapinfo.Do msg当使用DO 方法后MapInfo 执行这条语旬这与在MapBasic 交互窗口中执行该语句相同如果使用DDE 连接使用VB 的LinkExecute 方法向MapInfo发送语句只能向MapInfo 发送能够在MapBasic 窗口中执行的语句例如不能向MapInfo 发送Dialog 语句因为Dia1og 语句不能在MapBasic 窗口中执行一般来讲MapBasic 的流程控制语句不能在MapBasic窗口中执行高级应用篇18.3.3 从MapInfo 返回值要获得MapBasic 表达式的值应该构造一个相应的表达式假设需要检测MapBasic 的WindowID 0函数返回的值构造下列表达式msg="WindowsID(0)"如果是自动OLE连接使用Eval OLE 方法向MapInfo发送信息Dim Result As StringResult=mapinfo. Eval"windowID 0"当使用Eval 方法时MapInfo 解释这个字符串为一个表达式并以字符串的形式返回表达式的值如果表达式是一个逻辑表达式则返回单字符T 或F如果使用DDE连接使用LinkRequest 方法代替Eval18.3.4 重生成MapInfo 窗口启动MapInfo 执行Set application Window 语句后MapInfo 的对话框和错误信息就为客户程序所有Msg="Set application Window"&FormName.hWnd Mapinfo.Do msg如果想集成MapInfo 窗口到应用程序向MapInfo 发送Set Next Document语句紧接着建立一个窗口例如msg=”set Next Document parent& MapFrame.hWndStyle l”MapInfo.Do msgMsg=Map From States Mapinfo. Do msgSet Next Document 语句重新生成一个文档窗口在这条语句中还要指定VB 中控件的句柄HWND 在后面的程序中使用Map Graph Browse Layout 和CreateI Legend 语句建立一个窗口时所建立的窗口是应用程序的子窗口在Set Next Document 语句中有sty1e 从句它控制窗口的类型Siy1e l 表示没有边框的窗口: Sty1e 2表示具有半高标题栏的窗口Sty1e 3表示具有全高标题栏的窗口重生成每一个窗口需要两条语句一个是Set NextDocument Parent 语句另一个是产生窗口的语句产生一个窗口后使用WindowID0函数获取窗口的ID 识别号便于后面的语句使用这个识别号Mapid=Val(Mapinfo.eval(“windowID(0)”))尽管应用程序重生成了这个窗口但是MapInfo 仍然维护这个窗口如果部分窗口需要重画MapInfo 会自动重画因此客户程序可以忽略任何属于这个窗口的删除或重画信息如果是C 语言不能忽略删除信息这时设置父窗口类型时使用WS_CLIPCHILDREN18.3.5 重生成图例和其他特殊窗口MapInfo 有几个非模态的窗口包括信息窗口标尺窗口消息窗口以及统计窗口要重生成这类窗口使用Set Window Parent语句第十八章 跨平台集成地图Mapinfo.Do”set Window Info Parent”&myFrom.hWnd重生成信息窗口不同于重生成地图窗口当重生成信息窗口时不使用Set Next Document语句图例窗口有一个特殊情况一般情况下它和信息窗口一样MapInfo 界面只有一个图例窗口可是MapBasic 语言中有一条Create Legend 语句因此可以产生另外的图例窗口要重生成MapInfo 的标准图例窗口使用Set Window Legend Parent 语句要产生自定义的图例窗口并重生成它使用Set Next Document 语句和Create Legend语句注意在这种情况下自定义的图例窗口只依附于指定的地图或图表窗口与标准的图例窗口不同自定义的图例窗口不会因当前窗口的改变而改变 18.3.6 改变地图窗口的大小地图窗口是否允许重画取决于应用程序的设置在例子FindZip FindZip 是MapInfo 提供的例程在MapInfo 安装目录下的MapBasic Samples VB FindZip子目录中放置在VB 中的PictureBox 控件中的地图窗口是不能改变大小的但是可以重生成一个地图窗口为MDI 方式这样就可以改变窗口的大小了当用户改变地图窗口的大小后MapInfo 并不会自动调整窗口的内容来填满整个新窗口因此必须调用windowsAPI 的MoveWmdow 函数使得地图窗口内容适应窗口的调整如果在32位的VB 下使用Dec1are 语句访问MoveWindow API函数Declare Function MoveWindow Libuser32”_ ByVal hWnd As long _ByVal x As Long ByVal y As long _ ByVal nWidth As Long ByVal nHeighi As LongByVal bRepami As LongAs Long当调整窗口大小后调用MoveWindow 函数在VB 下resize 事件触发Form_Resize 过程可以在这个过程中调用MoveWindow 函数Dim mHwnd As Long MHwnd=Val(mapinfo.Eval(“windowInfo(Front Window()12)”))Move Window mHwndScale windthScaleHeight数字12表示MapBasic 的WIN_INFO_WND Scale Width 和ScaleHeight 表示窗体的当前宽度和高度18.3.7 集成MapInfo 工具按钮在客户应用程序中不能重生成MapInfo工具按钮如果想在客户应用程序中使用MapInfo 工具按钮必须开发该应用程序来完成在VB 中如果要设计仿MapInfo 的标准按钮使用MapInfo 的RunMenuCommand 方法这个方法等价于MapBasic 中的Run Menu Command 语句在FindZip 例子中有Info Tool_Click过程其中有下列语句mapinfo.RunMenuCommand 1707当用户单击这个按钮后FindZip 程序就会调用RunMenuCommand 方法激活MapInfo的信息按钮这里的1707表示MapInfo的信息按钮在定义文件中它还定义为高级应用篇M_TOOLS_PNT_QUERY 标识符因此下面的语句与前面的语句具有同样意义mapinfo.RunMenuCommand M_TOOLS_PNT_QUERY使用标识符可使程序易读但是如果在程序中使用了这些标识符就必须有相应的头文件如VB 的是MapBasic.BAS C 的是MapBasic.H下表列出了MapInfo 标准工具按钮名称ID 号及在MapBasic.BAS(VB)MapBasic.H(C)和MapBasic.def(MapBasic)中的标识符 18.3.8 定义MapInfo 的快捷菜单如果右击MapInfo 的窗口将显示一个快捷菜单这个快捷菜单在集成地图中也能够使用可以根据需要修改这些快捷菜单删除一个或多个快捷菜单使用MapBM 次的A1tlM Menu Remove 语句或者使用Create Menu 语句重新定义一个快捷菜单增加一个菜单项到快捷菜单使用MapBasic 的Alter Menu Add 语句并使用Calling OLE 或Calling DDE 从句消除快捷菜单使用MapBasic 的Create Meou 重定义菜单并使用控制码“(”下列语句消除地图窗口中的快捷菜单Mapinfo.do "Create Menu ""MapperShortcut"" ID 17 As""(-""按钮名称 ID 号标识码Select 1701 M_TOLLS_SELECTORMarquee Select 1722M_TOOLS_SEARCH_RECT Radius Select 1703 M_TOOLS_SEARCH_RADIUSBoundary Select 1704 M_TOOLS_SEARCH_BOUNDARY Zoom In 1705 M_TOOLS_EXPANDZoom Out 1706M_TOOLS_SHRINKGrabber 1702 M_TOOLS_RECENTER Info 1707 M_TOOLS_PNT_QUERY Label 1708 M_TOOLS_LABELER Ruler 1710 M_TOOLS_RULERDrag Window1734M_TOOLS_DRAGWINDOWSymbol 1711 M_TOOLS_POINT Line 1712 M_TOOLS_LINE Polyline 1713 M_TOOLS_POLYLINE Arc 1716 M_TOOLS_ARCPolygon 1714 M_TOOLS_POLYGON Ellipse 1715 M_TOOLS_ELLIPSERectangle 1727 M_TOOLS_RECTANGLE RoundeRect 1718 M_TOOLS_ROUNDEDRECT Text 1709 M_TOOLS_TEXT Frame 1719 M_TOOLS_FRAME第十八章 跨平台集成地图18.3.9 打印集成地图窗口使用MapBasic 的PrintWin 语句可以打印集成地图窗口在VB 中定义一个菜单子程序在于程序中执行"PrintWin"方法Private Sub Menu_PrintMap_Click() Mapinfo.do"printWin" End Sub使用MapBasic 的Save Window语句可以将地图窗口以位图格式输出到一个文件中然后调用VB 的PrintForm方法打印 18.3.10 终止MapInfo在VB 中使用CreateObject 函数启动MapInfo 后当这个对象变量被释放MapInfo 就自行结束所比如果对象变量是局部变量当退出子程序时MapInfo 就自行结束但是如果对象变量是全局变量要终止MapInfo 使用下列方法Set mapinfo Nothing如果是DDE 连接使用LinkExecute 方法向MapInfo 发送End MapInfo 命令注意采用DDE 连接时在结束应用程序时要先断开DDE连接18.3.11 多命令串在应用程序中即可以一条语句一条语句地发送给MapInfo 命令也可以一次发送多条语句Dim msg As String msg "Open Table""States""Interactive" msg msg&"set Mext Document Parent"&Frm.hWndd&"Stvle 1"msg msg "Map From States"Mapinfo.do msg在VB 中用连接多字符串在组成这些字符串时要注意留有空格便于MpaInfo正确解释这些语句18.4 从MapInfo 中获取信息在集成地图应用系统中一般采用回叫(Callback)机制从MapInfo 中获取信息所谓回叫是指当MapInfo 中发生一个事件如地图窗口的改变等它自动地通知客户应用程序使用回叫机制在下列情况下MapInfo 向客户程序发送信息1. 使用自定义工具与MapInfo交互例如在地图窗口中单击并拖动鼠标MapInfo 回叫客户程序传送X Y 坐标2. 选择一个菜单命令如从自定义菜单中选择了一个命令回叫客户程序通知这个菜单事件3. 地图窗口发生改变每当地图窗口发生变化时Mapbhfo 向客户程序发送产生变化高级应用篇的窗口标识号4. 状态栏中的内容改变MapInfo 的状态栏在集成地图应用程序中并不自动显示出来要在应用程序中有类似MapInfo 的状态栏还需要进行必要的设置使用回叫技术客户程序必须能够充当DDE 服务器或自动OLE 服务器VB4.0和C++可以开发自动OLE 服务器程序而VB3.0开发的程序不能作为自动OLE 服务器只能是DDE 方式18.4.1 回叫的一般过程1. 使用VB4.0C++或其他能够产生OLE 服务器的语言创建一个类定义一个或多个OLE 方法2. 如果想模仿MapInfo 的状态栏创建SetStatusText 方法它带一个字符串参数3. 如果想要MapInfo 通知客户程序它的地图窗口的变化创建WindowContentsChanged 方法它带一个整型参数4. 为按钮或菜单创建一个或多个方法这些方法应有一个字符串参数5. 使用定义的类创建一个对象6. 启动MapInfo 后调用MapInfo 的SetCallback 方法并使用前面定义的对象7. 自定义按钮(如向MapInfo 发送Alter ButtonPad Add 语句)然后定义它调用的方法如Calling OLE methodname 这里的methodname 指的是第四步中定义的方法名MapInfo 的自定义按钮和标准按钮一样是隐藏的只有通过客户应用程序界面中的按钮通过调用Run Menu Command ID 语句执行铵钮的操作对用户而言等价于MapInfo 的按钮操作8. 自定义菜单(如向MapInfo 发送Alter Menu Add 语句)然后定义它调用的方法如Calling OLE methodname 这里的methodname 指的是第四步中定义的方法名9. 在定义的方法内处理由MapInfo 传送来的参数 18.4.2 返回数据集成地图应用程序可以创建自定义的菜单命令和按钮使用这些菜单命令或按钮时MapInfo 传回一个由逗号分隔的字符串在MapBasic 程序中每当菜单或按钮事件被触发后调用CommandInfo()函数可以获得多方面的信息下表列举了在MapBasic.DBF 中有关CommandInfo 的参数值及其定义值 菜单事件按钮事件 1 2 3 4 5 6 7 8CMD_info_menutemCMD_INFO_X CMD_INFO_Y CMD_INFO_SHIFTCMD_INFO_CTRL CMD_INFO_X2 CMD_INFO_Y2CMD_INFO_TOOLBTN第十八章跨平台集成地图它们分别表示点击处的X Y坐标是否按下SHIFT和CTRL键释放鼠标处的X Y坐标以及按钮和菜单的ID号MapInfo按下列格式组织信息后发送回应用程序"MI:"+CommandInfo(1) +""+CommandInfo(2) +""CommandInfo(3) +""+CommandInfo(4) +""CommandInfo(5) +""+CommandInfo(6) +MCommandInfo(7) +""+CommandInfo(8)如果在集成应用程序中选择了一个菜单命令MapInfo发送回的只有菜单ID号其余全是空的字符串如"MI:101"如果在集成应用程序中选择了一个按钮MapInfo发送回类似下列格式的字符中MI 73.554842.122F F72.86770243.025202它表示了单击处的坐标是否按下了SHIFT和CTRL键释放鼠标处的坐标以及按钮的ID号18.5 集成地图的语句和函数在集成地图的过程中经常用到下列MapBasic语句和函数语句或函数简要说明Create Legend 产生一个新的图例窗口Map 产生一个地图由口MenuitemInfoByHandler()MenuitemInfoByID()检测菜单的状态Open Table 打开表RemoteQueryHandler 允许MapBasic程序处理DDE客户的请求Run Menu Command 运行菜单或按钮处理程序SearchInfo() 返回SearchPoint()事项SearchRect()结果SearchPoint()SearchRect() 搜索Set Appliction Window 重生成对话框窗口Set Map 设置地图窗口Set Next Document 重生成文档窗口Set Window 设置窗口Shade Set Shade 创建进修改专题地图SystemInfo() 系统信息WindowID()WindowInfo() 返回MapInfo窗口方面的信息高级应用篇18.6 自动OLE 对象下表总结了MapInfo 对象的方法及属性Application 对象是Mapinfo 的实例MBApplications 集合中的各对象表示正在运行的MapBasic 应用程序MBGlobals 集合中的各对象表示MapBasic 程序中的全局变量对象方法 属性ApplicationDo.EvalRunCommandRunMenuCommand. DataObject.SetCallBack Name FullName Application Part.Version ProductLevelVisibleMBApplication对象方法 属性 Collection(集合)Item CountApplication.Parent Object(对象) Do.Eval Name.FullName Application.Parent MBGlobals Collection(集合) Item.CountApplicationParentObject(对象) Type Application.Parent18.6.1 Application 对象象的属性和方法属性下表列出了Application 对象的全部属性除Visible 和LastErrorCode 外所有属性都是只读的属性名 功能 返回对象的名字(MapInfo Professional )FtdlName 返回包含路径的全名 Application 返回Application 对象 返回父对象对Application 是它自己Version 返回版本ProductLevel 表示MapInfo 产品系列VisMe 读/写窗口是否可见LastErrorCode 读/写错误码它比MapBasic 的错误代码大1000LastErrorMessgae错误信息方法下表列出了Application 对象的方法第十八章跨平台集成地图方法名功能Do(String) 解释String为语句并执行它Eval(String) 解释String为表达式返回它的值RunCommand(String) 与Do方法相同RunMenuCommand(menuid) 执行指定的菜单或按钮命令仅对标准命令有效对于自定义菜单或按钮命令用Do方法(Run Menu Command ID) DataObject(windowid) 返回IUnknown接口SetCallBack(Idispatch) 注册CallBACK下面举例说明了一些方法的典型的用法Mapinfo.do"Map From Word"Mapinfo.RunMenuCommand 170218.6.2 MBApplications集台及其对象的属性和方法MBApplications是MapInfo中所有正在运行的MapBasic应用程序的集合MBApplications集合的属性下表列出MBApplications集合的属性这些属性都是只读的属性名功能Item 返回指定程序对象的IdispatchCount 返回对象数Appliction 返回MapInfo的IDispatchParent 返回父对象的IDispatchMBApplications集合中的对象属性在MBApplications集合中的对象就是一个正在运行的MapBasic应用程序对象的属性都是只读的属性名功能Name 返回应用程序名(如mymb.mbx)FullName 返回全名Application 返回应用程序的IDispatchParent 返回父对象的IDispatch下例说明了MBApplications集合的属性的用法Dim appslist As ObjectDim firstname As StringSet applist mapinfo.MBApplicationsIf applist.coun>0 ThenFirstname=applist(1).nameEnd IF高级应用篇MBApplications集合中的对象方法方法名功能Do(String) 将String发送到比RemoteMsgHandler过程Eval(String) 将String发送到RemoteQueryHandler()并返回RemoteQueryHndler()函数的值18.6.3 MBGlobals集合及其对象的属性MBGlobals是指定的MapBasic应用程序的所有全局变量的集合MBGlobals集合的属性下表列出MBGlobals集合的属性这些属性都是只读的属姓名功能Item 返回全局变量的IDispatchCount 返回集合中对象的数量Application 返回MapInfo的IDispatchParent 返回父对象的IdispatchMBGlobals集合中的对象属性MBGlobals集合中的对象是应用程序中的全局变量下表列出了对象的全部属性除Value属性外都是只读N属性名功能Value 返回全局变量的值. 返回变量的名字'Type 返回变量的类型Application 返回应用程序的IDispatch返回父对象的IDispatch下例说明了这些属性用法Dim globinfo As ObjectDim old_value As IntegerSet globinfo=mapinfo.MBAapplication(1).MBGlobalsold_value globinfo("g_status").ValueGlobinfo("g_status")old_value+118.7 MapInfo的命令行参数在使用DDE与Mapinfo进行通信时必须首先启动Mapinfo如在VB中调用Shell()函数在启动MapInfo时可以使用下表所列的命令行参数第十八章 跨平台集成地图命令行参数 作用-nosplash 不显示MapInfo 的徽标但显示Mapinfo 主窗口不显示MapInfo 的徽标也不显示Mapinfo 主窗口将MapInfo作为DDE 后台服务器-automation 或 -embedding 不显示Mapinfo 的徽标也不显示MapInfo 主窗口将Mapinfo 作为OLE 后台服务器-regserverMapinfo 注册它的OLE 权能后退出 -unregserver 取消注册-helpdiag设置按下F1时显示诊断对话框使用命令行参数的格式如下MapInfow.exe -nosplash 也可以用斜杠代替减号即MapInfow.exe /nosplash第十九章 MapBasic 的系统集成和编程技巧19.1 连接多个模块成一个项目项目文件ProjectFile 是一个文本文件它允许MapBasic 把多个相互独立的程序文件连接成一个单一的应用程序如果你正在开发一个大而复杂的应用程序你的程序可能会包含上千条的代码当然你可以把这些代码都输入到一个文件中但大多数程序员不喜欢管理十分庞大的程序文件因为一旦程序超过千行就很难找到程序中你想找的特定部分因此许多程序员把一个大的应用程序分成两个或多个较小的文件这就需要建立一个项目文件项目文件告诉MapBasic连接器如何把那些独立的模块组合成一个可执行的应用程序项目文件是MapBasic 程序设计中的可选部分你完全可以不使用项目文件而完成应用程序的建立编译和运行工作但是如果你计划开发一个大型的应用程序那么项目文件会给你带来一些好处• 项目文件可以模块化你的程序一旦你建立了一个项目文件你就可以把程序分成多个小文件模块化程序使你对程序的维护变得更加简单还可以使你的程序文件变得较小以便可以在MapBasic 的编辑窗口对它们进行编辑• 相目文件使多个程序员同时为一个项目编写程序变得更加容易每个程序员可以各自在独立的模块中工作最后可以用项目文件把这些独立模块连接起来• 项目文件可以减少重新编译应用程序的时间如果多模块项目中的一个模块被修改你只要重新编译该模块然后重新连接这个项目就可以了这比每次都要重新编译所有的源代码要快得多创建项目文件既然有这么多优点那么如何来建立一个自己的项目文件在具体介绍创建项目文件之前让我们来看两个关于项目文件的例子下面是一个用项目文件tbproj.mbp 建立文本框的例子[Link]Application=textbox.mbx Module=textbox.mbo Module=Auto_lib.mbo类似地用项目文件sbproj.mbp 建立的一个刻度条ScaleBar 的例子如下[Link]Application=scalebar.mbx Module=scalebar.mbo Module=Auto_lib.mbo这两个项目文件的最后一行相同它告诉MapBasic 把auto_lib 模块连接到该项目中auto_lib 模块是MapBasic 自带的一个例程第十九章 MapBasic 的系统集成和编程技巧如果你已经写了一个程序并且想为你的程序建立一个项目文件那么可以按照下面的步骤进行1. 选择[File][New]打开一个编辑窗口2.在辑窗口中输入下面这一行[Link]3. 接着输入这样一行文本Application=appFilename(这里appFilename 是指你想建立的可执行文件的文件名)例如Application=C:mbC0DE CUSTOM.mbx4. 接着再输入行文本Module=modulename 这里modulename 是指MapBasic 的目标文件名例如 Module=c:mbCODE CUSTOM.mbo注意文件的扩展名MapBasic 的目标文件的扩展名为.mbo 当多模块项目中的一个单独的模块被编译时MapBasic 就会为它建立一个目标文件任何时候当你选择[project][Compile CurreniFile]时MapBasic 就会试图把当前文件编译成一个可执行文件扩展名为.mbx但是如果该程序文件调用了不在此文件中的函数或过程MapBasic 则不能建立一个.mbx 文件在这种情况下MapBasic 假设它只是一个大项目的一个部分而把它编译成一个目标文件.mbo另外当一个程序没有主过程时MapBasic在编译时也把它编译成一个目标文件5. 重复第(4)步直到包括了你的应用程序的所有模块6. 选择[File]SaveAs 保存项目文件注意在SaveAs 对话框中选择文件类型中的ProjectFile 从对话框左下角的文件类型列表中选择以便使保存的项目文件有扩展名.mbp 冲7. 关闭编辑窗口至此一个项目文件已经建好如果以后你想把更多的模块加入到你的项目中只需在项目文件中加入相应的Module=行项目建好后还需要对它进行编译和链接可以按照下面的步骤编译和链接你的项目 1. 编译在项目中用到的每一个模块为了编译这些模块可以先选择[File][Open]然后选择Project[CompileCurrentFile1或者你可以直接用 [File][CompiIeFromFile] 对选择的文件进行编译 2.选择Project [SelectProjectFile]告诉MapBasic 你想链接哪个项目文件此时显示[SelectprojectFile]对话框选择想要链接的项目文件.mbp 后单击[OK]按钮MapBasic就会链接这个项目文件被选择的项目文件将出现在编辑窗口直到你退出MapBasic 关闭编辑窗口或打开另外一个项目文件任何时候只有一个项目文件可以被选择3.选择高级应用篇[Project][LinkCurrentFile]链接你的应用程序MapBasic 依次读入在项目文件中列出的目标文件.mbo 如果没有链接错误MapBasic 生成一个可执行文件.mbx 否则将显示错误信息也可以用[File][LinkFromFile]对项目进行链接而不需要先把项目文件显示在编辑窗口但要链接的各模块必须先编译成目标文件19.2 系统过程应用技巧19.2.1 系统过程尽量简洁系统事件处理过程往往会被频繁调用因此应用程序中的系统事件处理过程应尽可能简洁假如应用程序中有SelChangedHandler 过程则每次查询表改变时MapInfo 都会调用该过程在MapInfo运行期间查询表通常会被频繁地改变所以应该尽可能地使SelChangedHandler 过程简洁19.2.2 查询时避免调用SelChangedHandler 过程的方法如果使用Select 语句进行查询但又不想同时触发SelChangedHandler 过程可以便用NoSelect 关键字如Select From World EarthQuery NoSelect 使用NoSelect 关键字后该查询语句虽然改变了查询表但并不自动调用SelChangedHandler过程19.2.3 避免死循环调用系统保留过程有时会产生死循环如果在应用程序中使用了SelChangedHandler 过程则无论何时查询表被改变MapInfo 都会调用该过程若在SelChangedHandler 过程中又放置了Select 语句那么Select 语句执行后又会使MapInfo 再次调用SelChangedHandler过程其结果是进入死循环直到应用程序执行到内存溢出时为止Set Handler 语句可以用来避免程序进行入死循环在过程的开始处用Set Handler 0ff 关闭系统过程的自动调用在过程的最后用Set Handler On 语句恢复系统过程的自动调用这样可以避免系统过程的递归调用19.3 巧用MapInfo 环境下的MapBasic 交互命令窗口编程从MapInfo 与MapBasic 的关系上看MapInfo 是MapBasic 的外在表现MapBasic 是MapInfo 自动操作的基础两者是相辅相成的如其他字处理软件如Word 中对宏的记录或录制当操作MapInfo 时在MapBasic 交互命令窗口会对操作语句进行记录再者MapBasic 的语法形式比较烦琐利用此特性可以方便编程具体操作如下在MapInfo 环境下操作 选项>显示MapBasic 窗口出现图19-1显示MapBasic 窗口然后进行相应的操作在操作的过程中会记录操作。

GIS上机指导(mapinfo使用方法)

GIS上机指导(mapinfo使用方法)

GIS上机指导(mapinfo使用方法)目录GIS 软件1. MapInfo 概况 (2)2. ArcView 概述 (8)GIS 实验实验序号实验名称学时所在页码1 GIS软件——MapInfo的演示与操作2 262 空间数据编码 2 263 GIS建库——地图数字化4 274 空间数据处理——空间数据的转换 2 325 GIS建库——地理属性数据的输入与操作 2 336 空间数据查询 2 357 数字高程模型(DEM)的建立与应用 4 378 空间叠加分析 2 449 空间缓冲区分析 2 4610 空间数据插值 2 4711 空间分析综合应用 2 4912 专题地图的制作与输出设计 2 5013 WebGIS简介及操作 2 52MapInfo概况MapInfo公司于1986年在美国纽约州的Troy市成立,MapInfo 是由美国MapInfo公司推出的一个GIS软件,它是Mapping+Information的简称。

1. 1 MapInfo的界面图1 Mapinfo系统界面图Mapinfo系统界面如图1所示。

上面第一排为主菜单,其次为常用工具条,一般常用工具条固定码放在主菜单下面,主工具条、工具工具条、绘图工具条可以浮动,也可以码放在常用工具条下面,白色区域为系统工作区。

1.2 MapInfo数据文件的组织MapInfo以实体型数据结构组织图形数据。

在MapInfo中,点、线、多边形、区域等要素的空间位置和相互关系都是通过坐标来定义。

如折线是由一组有序坐标对定义;多边形是由一组首尾坐标相同的有序坐标对表示。

在MapInfo中,点、线、多边形、区域等都作为地图对象来处理。

每个对象都可以有自己独立的表现形式。

对于线对象,它们都有自己的线型、线宽、颜色等特征,对于多边形对象,每个对象都有自己的填充方式、前景和背景颜色、边框线型等特征。

表:MapInfo以表的形式组织信息,每个表是一组MapInfo文件,这些文件由地图文件和数据库文件及相关文件组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MapInfo-Buffer使用教程
目的:使用Buffer是为了让原有封闭图层进行向四周扩散,类似于同心圆扩,可应用在某个区域辐射距离所包含的信息。

该图为圈出的居民区,需要找出居民区周边200米所涉及的站点信息。

第一步:
Store results in table选择New。

注意点:选中Add to Current Mapper,Table Structure 默认选择使用编辑图层,然后点击Create。

默认选项,继续点击Create。

选中保存路径,修改名字。

单位选择米(可根据需求变化),其余按照上图进行进行勾选。

默认选择,点击OK
结果展示:
第二步:
导入工参,利用SQL语句,选中居民小区200米所涉及的小区。

Tables先后选择居民小区图层和站点图层,执行contains(包含语句)。

得到所涉及小区,进行表导出。

相关文档
最新文档