MapX地图图层管理

合集下载

地理信息系统p4MapX的图元与图层汇编

地理信息系统p4MapX的图元与图层汇编

14

全 关 系 数 据 库 管 理 方 案
第四章 MapX的图元 与图层
2018/12/19
1
4.1 MapX图元与图元集合
图元(Map Feature)是指地图中存在的地理对 象,例如点、线、区域等。在一副地图中,会包含 多种不同的地理对象。在MapX中,地图图元用 图元对象(Feature Object)来表示。例如在一副 中国电子地图中,一个类型为区域的图元对象用 来表示河北省,一个类型为线的图元对象用来表 示黄河,一个类型为点的图元对象用来表示北京 市。 1、图元的属性(书上62页) 2、图元的操作: (书上63页)
2018/12/19
3
4.2 创建地图图元
图元集合:在MapX中,组成地图的不同图层 中的每个图层通常具有相同类型的图元。例如, “中国省份”图层使用区域表示每个省,“中国 河流”图层使用线图元表示中国的主要河流。 “中国主要城市”图层使用点图元表示中国的大 在MapX中, 城市。在MapX中,地图图层中的所有图元及其 所有子集表示为图元集合(Features Collection)。 1、图元集合的属性(书上64页) 2、图元集合的操作 (书上64页)
2018/12/19
6
层次数据库模型
它的特点是将数据 组织成一对多关 系的结构。 层次结构采用关键 字来访问其中每 一层次的每一部 分。 层次数据库结构特 别适用于文献目 录、土壤分类、 部门机构等分级 数据的组织。
1
2 a 1 d
b Ⅰ c 4
3
e Ⅱ g
5 f 6
M
M


a 2 2
b 3 3
c 4 4
学号 姓名 年级 籍贯 系名 教师数 学生数 002312 系名 张三 教师数 3学生数广东 研究生

MapX地图图层管理

MapX地图图层管理

实验四MapX地图图层管理一、实验目的在熟悉利用GeoSetManager按图层进行空间数据的组织后,通过在VC++环境下利用MapX编程,能够利用MapX编程进行地图图层的管理(图层增加、删除、新建、激活等)。

二、实验内容与要求1、利用上海徐汇区实验数据,在GeosetManager中制作MapX需要的地图文件;2、实现在VC++环境中利用MapX编程进行地图图层的管理功能。

三、实验报告提交根据个人上机实验情况,写出上机实验报告,要求写出上机实验步骤,包括实验目的、实验内容等,对于实验内容,要求写出对实验内容的理解、心得、发现的问题、以及给出利用MapX组件进行图层管理设置以及进行实例开发的步骤说明。

四、实验操作示例1、在Visual C++开发环境中新建一个工程名为BasGis的单文档应用程序框架;2、在BasGis目录下新建一目录MapData,并将需要显示的徐汇区数据拷贝到该目录,并利用GeosetManager软件在MapData目录中创建xuhuiMap.gst并把徐汇区Tap格式数据加载到xuhuiMap.gst文件中(其中xuhuiMap.gst不包含“图廓”层,“图廓”层的4个文件只放到MapData目录下,在后面的编程中动态加载该层)。

3、给应用程序BasGis添加MapX控件:在MapX的安装目录中找到Samples50\C++\cpp子目录中找到MAPX.H和MAPX.CPP两个文件,将这两个文件拷贝你所创建的BasGis工程目录下,然后在VC开发环境中的Project菜单点击“Add to Project->Files…”,将BasGis目录下的MAPX.H和MAPX.CPP添加到工程中,点击ClassView选项卡,看看你的工程里是否多了很多以CMapX开头的类;4、编写代码实现MapX地图显示:在ClassView类视图里找到CBasGisView类,双击该类,打开“BasGisView.h”文件,在class CBasGisView 类定义代码的前面加入#include “MapX.h”,在CBasGisView类中定义两个公有成员变量CMapX m_ctrlMapX //CMapX对象和BOOL m_bMapData //地图装入的标记。

第三章 MapX地图化及其工具

第三章 MapX地图化及其工具

lyrInsertion.Editable
lyrInsertion
内蒙古师范大学地科院 张巧凤
注意:MapX中只能设置一个插入图层 。 注意:MapX中只能设置一个插入图层 默认情况下无插入图层, 默认情况下无插入图层,因此使用编辑 工具miAddLineTool miAddLineTool、 工具miAddLineTool、 miAddPolyLineTool、 miAddPolyLineTool、miAddRegionTool miAddPointTool前 和miAddPointTool前,必须指定插入图 层,否则,将导致程序错误。 否则,将导致程序错误。
内蒙古师范大学地科院 张巧凤
创建用户自定义工具通常有以下三 个步骤: 个步骤: ①.创建用户自定义工具 ②.编写自定义工具的处理过程 ③.在应用程序界面上使用自定义工具
内蒙古师范大学地科院 张巧凤
3.4.1 创建用户自定义工具
内蒙古师范大学地科院 张巧凤
4.文本对象 4.文本对象
描述地图或者其它对象的文本, 描述地图或者其它对象的文本,例如 标注和标题等。 标注和标题等。 在MapX中,可以利用Feature对象来 MapX中 可以利用Feature对象来 Feature 访问以上四类地图对象,可以进行创建、 访问以上四类地图对象,可以进行创建、 编辑、显示这些地图对象的操作。 编辑、显示这些地图对象的操作。
内蒙古师范大学地科院 张巧凤
3.三种区域选择工具 ①.在使用miRadiusTool工具时,单击 在使用miRadiusTool工具时, miRadiusTool工具时 确定圆心,按住左键拖动鼠标, 确定圆心,按住左键拖动鼠标,画出 一个圆,选择在圆中的图元对象。 一个圆,选择在圆中的图元对象。

Mapx 入门教程

Mapx 入门教程

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能够显示哪一分店最接近您最大的客户,可以计算客户和商店之间的距离;还可以显示去年花销最大的客户;并按销售额给表示商店的符号进行颜色编码。

所有这些结合在一起就是您的数据在地图上的直观显示。

MapX学习基本教程

MapX学习基本教程
导出地图数据
可将编辑好的地图数据导出为多种格式,以供其他软件或平台使用。导出步骤与导入类似 ,通过“文件”菜单选择“导出”,选择要导出的文件类型及保存位置,设置相关参数, 即可完成导出。
数据转换
在导入导出过程中,MapX提供数据转换功能,可实现不同格式数据之间的转换,以满足 不同需求。
图层管理与编辑技巧
灵活的二次开发能力
MapX提供了丰富的API接口和 开发文档,支持用户进行二次开 发,实现个性化的地图应用。
01 02 03 04
多样化的数据格式支持
MapX支持多种常见的地图数据 格式,如Shapefile、 GeoDatabase、KML等,方便 用户导入和处理各种地图数据。
高性能的地图渲染引擎
系统测试与优化
明确系统功能和性能要求,如地 图浏览、空间分析、数据管理等 。
使用MapX编程接口,实现地图 加载、图层管理、空间查询等功 能。
THANKS
感谢观看
保存和导出地图
将当前地图视图保存为图片或 导出为其他数据格式,以便后 续使用。
02
地图数据管理与编辑
Chapter
地图数据导入与导
导入地图数据
支持多种格式的数据导入,如Shapefile、GeoDatabase、KML等。通过“文件”菜单选 择“导入”,选择要导入的文件类型及相应的文件,设置坐标系等参数,即可完成导入。
06
编程接口与二次开发
Chapter
MapX编程接口简介
MapX控件
提供地图显示、编辑、 分析等功能,支持多种 地图格式。
MapX对象模型
包括地图、图层、要素 等核心对象,提供丰富 的属性和方法。
事件处理机制
支持地图事件和用户交 互事件的处理,实现地 图的动态响应。

MapX培训教程-(含多场景)

MapX培训教程-(含多场景)

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 文件。

MAPGIS地图库管理-55

MAPGIS地图库管理-55

地图库管理系统简介地图数据是地图诸要素的数字化表示。

按几何特征,地图要素区分为点、线、面三类。

这三类数据,以不同的数据结构,构成了地图数据库。

机助地图早期使用的数据结构,主要用于图形显示,大都属于表面数据结构或单个的数据文件。

这种数据结构缺少空间数据联系,未能进一步提供数据分析和评价,而真正有效的数据结构,应能在不同程度上采用一定方法(显式或隐式)满足地理实体空间关系的反映。

地图数据本身可以认为是地理现实世界的多面模型,它是整个机助地图制图过程的核心,它接受各种地图数据的输入,并能根据用户需要,派生不同类型的信息产品。

地图数据库在整个机助制图的各个环节的主要作用如下:1、在数据获取的过程中,它用于存储和管理地图信息;2、在数据处理的过程中,它既是资料的提供者,也可以是处理结果的归宿处;3、在检索和输出的过程,它是形成绘图文件或各类地理数据文件的数据源。

MAPGIS海量地图库管理子系统属于通用的地图数据库管理系统。

MAPGIS海量地图库管理子系统采用了层类的概念,以图幅为单位来管理地图数据。

每个图幅由若干层组成(详情参见图库结构)。

这使得图库管理更有层次感,更具条理性。

它给用户提供了灵活直观的数据入库手段、多种强有力的数据查询途径。

针对地图数据库管理的特殊性,本系统给用户提供了图幅与图幅之间的线和区的接边功能,以消除相邻图幅间的接合误差,使这些图幅拼接成为一完整地图时,不会让人感到整幅图是分块的结果。

由于图纸变形或者数据录入过程出现误差等缘故,带有某种程度的扭曲或移动,若这样的图幅不经过校正便做拼接工作的话,得到的地图的质量可想而知,因此,如果数据存在误差,在地图数据进库之前,必须进行校正,MAPGIS的误差校正子系统提供分线性变换和非线性变换两种,用户可根据具体情况选用。

新增功能较之先前的版本,MapGis6.0地图库管理子系统新增或加强了以下主要功能:(1) 支持任意分幅数据的建库与接边。

(1) 提供了批量数据入库功能,提高了数据入库的自动化程度。

简道云 mapx用法

简道云 mapx用法

简道云 mapx用法(原创版)目录1.简道云和 MapX 简介2.MapX 的基本用法3.MapX 的高级用法4.MapX 的实际应用案例正文【1.简道云和 MapX 简介】简道云是一款功能强大的数据可视化工具,它提供了丰富的图表类型和数据处理功能,帮助用户轻松实现数据的可视化。

在简道云中,MapX 是一种地图类型的图表,它可以将地理信息数据以地图的形式展示出来,让用户更直观地理解和分析数据。

【2.MapX 的基本用法】MapX 的基本用法主要包括以下几个步骤:(1)准备数据:MapX 需要以经纬度为单位的地理信息数据,因此需要先将原始数据转换为相应的格式。

(2)创建图表:在简道云中选择 MapX 图表类型,并根据需要设置图表的标题、颜色等属性。

(3)上传数据:将处理好的数据上传到简道云,并选择 MapX 图表进行绑定。

(4)调整布局:根据需要调整地图的布局和样式,以达到最佳的展示效果。

【3.MapX 的高级用法】除了基本的数据展示,MapX 还提供了许多高级功能,例如:(1)热力图:通过颜色变化展示数据的密度和分布情况。

(2)路径规划:根据起点和终点计算最优路径,并展示在地图上。

(3)动态数据:实时更新地图上的数据,以展示动态变化的趋势。

【4.MapX 的实际应用案例】MapX 在地理信息数据可视化方面有着广泛的应用,例如:(1)城市交通热力图:通过展示不同区域的交通流量,帮助交通部门优化交通资源配置。

(2)疫情分布地图:实时展示疫情的发展情况,帮助政府和公众了解疫情动态。

(3)物流配送路线图:为物流公司规划最优配送路线,提高配送效率。

第四章 MapX的图层与图元

第四章 MapX的图层与图元

在类似的实时跟踪系统中, 在类似的实时跟踪系统中,地图上 的地理要素需要经常改变, 的地理要素需要经常改变,如果将这 些需要及时更新的地理要素存放在活 动图层(AnimationLayer) 动图层(AnimationLayer)中,而不 是存放在普通图层中, 是存放在普通图层中,便可以快速的 刷新地图。 刷新地图。
4.2.1 图层集合 图层集合(Layers)的属性和方法 的属性和方法
每个Map对象都由图层的集合( 每个Map对象都由图层的集合(即Layers Map对象都由图层的集合 集合)组成。 集合)组成。 Layers集合由Layer对象组成 集合由Layer对象组成, Layers集合由Layer对象组成,其中每个 Layer对象的属性和方法都独立于其它图层 对象的属性和方法都独立于其它图层, Layer对象的属性和方法都独立于其它图层, 它们的样式更改、图层缩放等都基于单个图层, 它们的样式更改、图层缩放等都基于单个图层, 而不会影像到其它的图层。 而不会影像到其它的图层。 4.1和 4.2分别列出了Layers集合的属 分别列出了Layers 表4.1和表4.2分别列出了Layers集合的属 性和方法。 性和方法。
MapX的图层与图元 第四章 MapX的图层与图元
现实世界与MapX数据组织 4.1 现实世界与MapX数据组织 方法对比
4.2 图层集合
MapX是按图层组织地图的、 MapX是按图层组织地图的、每个 是按图层组织地图的 图层包含了整个地图的一个方面。 图层包含了整个地图的一个方面。 为了便于对图层进行编辑和管理, 为了便于对图层进行编辑和管理, 可以通过图层集对象(Layers)来协调 图层集对象(Layers) 可以通过图层集对象(Layers)来协调 处理各个图层的关系, 处理各个图层的关系,因而不会因为 图层多而造成显示混乱。 图层多而造成属性即可设置活动 通过AnimationLayer属性即可设置活动 AnimationLayer 图层,该属性默认为空。 图层,该属性默认为空。 可以将新建图层设置为活动图层, 可以将新建图层设置为活动图层,也可 以将已有的任意图层设置为活动图层。 以将已有的任意图层设置为活动图层。 当一个图层被指定为活动图层后, 当一个图层被指定为活动图层后,该图 层处于所有图层的上面, 层处于所有图层的上面,但是该图层在图层 集合(Layers)中的索引并没有改变。 集合(Layers)中的索引并没有改变。 具体应用见活动图层示例。 具体应用见活动图层示例。

MapX第2-3课

MapX第2-3课

第三课 MapX的图层与图元 的图层与图元
2. 图层 Layer——方法 方法
Layer.AllFeatures方法 方法 从图层返回带所有图元的图元对象。 从图层返回带所有图元的图元对象。 [Features=]Layer.AllFeatures() Layer.AddFeature方法 方法 用源对象图元的属性创建并返回新的图元。 用源对象图元的属性创建并返回新的图元。 Layer.AddFeature(Source,[RowValues]) , Layer.DeleteFeature方法 方法(Layer对象 对象) 方法 对象 从图层中删除图元和其对应的数据库中的行。 从图层中删除图元和其对应的数据库中的行。 Layer.DeleteFeature(FeatureKey)
第三课 MapX的图层与图元 的图层与图元
1. 图层集合 Layers
Layers.Remove方法 方法 从集合中删除Layer对象 对象 从集合中删除 Layers.Remove(Index) .
Layers.RemoveAll方法 方法 从集合中删除所有Layer对象 对象 从集合中删除所有
第三课 MapX的图层与图元 的图层与图元
2. 图层 Layer
Layer.Refresh方法 方法 用于刷新图层的缓存。 用于刷新图层的缓存。
Layer.UpdateFeature方法 方法 更新图层中的目标图元使其获得源图元的属性。该方法用于 更新图层中的目标图元使其获得源图元的属性。 对象编辑。 对象编辑。 Layer.UpdateFeature(FeatureKey,[Source],[RowValues]) , ,
第三课 MapX的图层与图元 的图层与图元
2. 图层 Layer

MapX的图元与图层资料

MapX的图元与图层资料
第四章 MapX的图元 与图层
2019/4/7
1
4.1 MapX图元与图元集合
图元(Map Feature)是指地图中存在的地理对 象,例如点、线、区域等。在一副地图中,会包含 多种不同的地理对象。在MapX中,地图图元用 图元对象(Feature Object)来表示。例如在一副 中国电子地图中,一个类型为区域的图元对象用 来表示河北省,一个类型为线的图元对象用来表 示黄河,一个类型为点的图元对象用来表示北京 市。 1、图元的属性(书上62页) 2、图元的操作: (书上63页)
2019/4/7
4.2.2 使用FeatureFactory方法创建 图元
7
4.3 图元的选取
用户可以选择地图的一个或者多个图元,MapX自动 高亮显示被选中的图元。 使用Selection集合来获取用户所选的图元。 Selection集合也是Feature对象的集合,表示当前 已选中的Feature对象。每个图层对象都有自己的 Selection集合(Layer.selection) Selection集合提供了不同的方法以实现在程序代码 中图元的选取。(SelectByRadius可以选取以某 城市为中心的一定半径范围内的所有图元) Selection集合也支持集合的添加和删除图元的方法。 Selection集合的方法(书actory对象的方法可以创建新的地图图元,也可以 通过对现有图元执行操作(如缓冲区)来创建图元。 FeatureFactory对象的方法(书上66页) 由FeatureFactory方法创建返回的独立图元对象已经自动附 加到地图上,已经具有相关坐标系,不需要再使用 Attach方法。 要取得FeatureFactory对象,用map. FeatureFactory Dim ftr as mapxlib.feature Dim pt as new mapxlib.point Pt.set map1.centerx,map1.centery ‘创建文字图元并将其加入图层1 Set ftr = yer(1).addfeature(map1.featurefactory.createtext(pt,” 北京”))

2.地图及图层管理

2.地图及图层管理
MapXtreme2004培训
James.Liu
内容
MapXtreme 2004
MapXtreme2004概览
地图及图层管理 数据管理
数据查询
几何对象
专题图
地图及图层管理
MapXtreme 2004
目标
- 了解工作空间(WorkSpace) - 创建桌面地图应用 - 创建Web地图应用
修改应用以在设计时装入工作空间
MapXtreme 2004
1. 2.
右键点击地图控件 选择装载地图…
3.
4. 5. 6.
选择并装入前面做好的工作空间
运行应用 注意到工作空间在应用运行时装入 关闭应用
修改工作空间
MapXtreme 2004
1. 2. 3.
运行Workspace管理器修改地图的 默认视野 运行应用,注意到工作空间仍旧以 原来的视野值显示地图 关闭应用
MapXtreme 2004
问题?
修改工作空间
MapXtreme 2004
1. 2. 3.
运行Workspace管理器修改地图的 默认视野 运行应用,发现地图仍旧以修改前 的视野显示 关闭应用
适应改变的工作空间
MapXtreme 2004
1. 2.
右键点击地图控件,选择清楚地图 打开表单的构造函数并加入以下代 码:
if (!Page.IsPostBack) { MapInfo.Mapping.MapWorkSpaceLoader mwsl = new MapInfo.Mapping.MapWorkSpaceLo ader(@"c:\program files\mapinfo\mapxtreme\6.0\samples \data\enter your workspace here"); mapControl1.Map.Load(mwsl); } 3. 运行应用,观察地图视野

Mapinfo教学课件11第十一章 地图图层、地图对象和表管理

Mapinfo教学课件11第十一章 地图图层、地图对象和表管理

2.2 创建语句
例: 创建一个椭圆
2.2 创建语句
open table "c:\mapinfo\professional\data\world\worl d" Map from world set map layer world editable on dim windowid as integer windowid=frontwindow() create ellipse Into window windowid (1,1)(50,50)
Create Ellipse(创建椭圆) [Info {Window window_id\Variable var_name}] (x1,y1) (x2,y2) [Pen…] [Brush…] Window_id:窗口标志符 Var_name:已存在的对象变量的名字 x1,y1 指定椭圆填充的矩形的一角 x2,y2 指定该矩形相对的一角 Pen 子句指定线条样式 Brush 子句指定填充样式

创建一张表
3.3 打开表/关闭表
Open table filespec Close table table
1.1 打开地图窗口
Window_height表示地图窗口的高度 Map函数用于打开一个新的地图窗口 Max,新建地图窗口是最大化的 Min,新建地图窗口是最小化的
1.1 打开地图窗口
例: 在mapbasic中打开world图
1.2 增加或删除图层
Add\Remove Map [Window window_id] [Auto] layer table[,table…] [Animate] Window_id是地图窗口的窗口标志符 Table是一个将要加到地图窗口中去的可地图化 的、并且已打开的表的名字 Auto,mapinfo将试图自动地把该地图图层定位 在一系列图层间的合适位置 Animate活动图层

MapX基础教程

MapX基础教程

在转换过程中需确保数据完整性、坐 标系一致性等。
格式转换工具
使用如GDAL/OGR、QGIS等工具进 行不同格式间的转换。
地图数据导入与导
导入方法
通过MapX的数据导入功能,将外部地图数据导入到项目中。
导出方法
支持将项目中的地图数据导出为常见格式,以便在其他软件或平 台中使用。
批量处理
提供批量导入导出功能,提高数据处理效率。
包括最短路径分析、连通性分析、资源分配等,可根据实际需求选择不同的网络分析类型 。
网络分析方法
通过MapX的空间分析工具箱,可以实现网络数据集的创建和管理,以及基于网络数据集 的各种网络分析功能。同时,MapX还支持自定义网络分析算法和参数设置,以满足不同 应用场景的需求。
05 地图可视化与制图
CHAPTER
专题地图类型
根据内容可分为自然地图、社会经济地图和环境 保护地图;根据专题现象概括程度可分为分析图 、组合图、综合图。
专题地图设计
确定主题和内容,选择合适的底图,设计符号和 色彩,编制图例和说明。
三维地图可视化
三维地图概念
利用计算机图形技术和 方法,将地形、地貌、 地物等地理信息以三维 立体的形式展现出来。
缓冲区类型
包括点缓冲区、线缓冲区和面缓冲区,可根据实际需求选择不同的 缓冲区类型。
缓冲区创建方法
通过MapX的空间分析工具箱,可以方便地创建各种类型的缓冲区, 并支持自定义缓冲区形状、大小等参数。
叠加分析
叠加分析概念
将两个或多个地理图层进行叠加,通过空间关系和属性数据的组 合,产生新的空间信息和属性信息。
地图符号化与注记
符号化概念
地图符号是表达地理现象的空间位置和属性特征的特定图形记号 ,是地图的语言。

地图库管理

地图库管理

地图库管理篇1、进入MAPGIS主界面→“库管理”→“地图库管理”。

2、进入地图库模块后,新建地图库工程。

建立地图库时,系统设置的工作目录必须是入库数据文件夹。

3、设置地图库分幅方式。

2000分幅以下地籍图可使用矩形分幅建立,10000分幅以上图形可用梯形分幅建立。

4、输入分幅地图库参数。

5、设置完成后,可看见地图库接图表。

6、设置图库图层类型。

层类型可添加同一位置上不同属性的多个点、线、面文件。

7、设置图层信息,选择设定点、线、区结构属性。

新建—层类路径及属性结构提取—选择提取文件。

需要分别提取点、线、区及不同属性的分类文件。

8 、文件类型添加提取完成后,选择图幅批量入库功能。

(系统自动将在该图库范围内并且属性结构相同的文件添加入库,有数据入库后接图表变为天蓝色)9、选择接边处理功能下的启动接边条,进行数据接边。

10、接边条启动后点击需要接边的图幅边线,使用自动匹配功能接边。

接边时系统提供了人工手动接边(交互接边)功能。

接边过程中遇到较大差异的数据可使用数据编辑中的功能实现修改。

]12、接边过程完成保存地图库。

完成操作。

备注:接图表显示及图形显示可在右件工具中实现。

本手册只供参考,只是讲一些快速的入门法,如果想更深入的了解MAPGIS知识,请查看MAPGIS相关书籍。

手册内容:图像分析篇(入门进阶篇)投影变换篇(入门进阶篇)输入编辑篇(入门进阶篇)数字测图篇(入门进阶篇)空间分析篇(入门进阶篇)DTM分析篇(入门进阶篇)地图库管理篇(入门进阶篇)属性库管理篇(入门进阶篇)影像库管理篇(入门进阶篇)集成网络分析篇(入门进阶篇)高程库管理篇(入门进阶篇)电子沙盘篇(入门进阶篇)文件转换篇(入门进阶篇)。

简道云 mapx用法

简道云 mapx用法

简道云mapx用法
简道云是一种云端地图数据管理平台,而mapx是简道云中用于地图数据操作的一种数据类型。

以下是mapx的用法:
1. 创建mapx字段:在简道云中创建一个字段,并选择数据类型为mapx。

这个字段将用于存储地图数据。

2. 导入地图数据:在创建的mapx字段中,可以导入地图数据。

地图数据可以是geojson、kml、shp等格式的文件,也可以通过手动绘制地图来输入数据。

3. 地图数据编辑:通过简道云的地图编辑功能,可以对导入的地图数据进行编辑。

包括增加、删除、移动地图元素等操作。

4. 地图数据查询:通过简道云的查询功能,可以对mapx字段中的地图数据进行查询。

例如,可以查询某个区域内的所有地图元素。

5. 地图数据展示:通过简道云的地图展示功能,可以将mapx字段中的地图数据展示在地图上。

可以自定义地图的样式、图层、标记等。

6. 地图数据导出:在简道云中,可以将mapx字段中的地图数据导出为地图文件,如geojson、kml等。

也可以通过API接口导出地图数据。

总体来说,mapx是简道云中用于管理和操作地图数据的一种数据类型,提供了导入、编辑、查询、展示和导出地图数据的功能。

Mapinfo教学课件03第三讲 图层控制

Mapinfo教学课件03第三讲 图层控制
若为紫色则缩放标注有效说明图层只在一定的缩放范围内标注有效说明图层只在一定的缩放范围内显示标注并且该图层现在指定的缩放范围显示标注并且该图层现在指定的缩放范围以外
第三讲
第一节 第二节 第三节 第四节 图层控制 标注 OLE 参考书目
第一节 图层控制


用途:
决定哪些图层显示、可编辑、可选择和图层 缩放。 改变地图图层的顺序。 从活动地图上增加或删除一个或多个图层。 控制标注。 改变显示样式。 改变专题地图。
1.2

图层增加删除
“增加” 增加一个或多个图层到 地图上,从显示已打开 表的列表框中选择。

“移除” 从地图中移除一个或多 个图层。
1.3

图层的重新排序
“图层顺序” 图层从下到上绘制;列表框中 最下面的图层首先被绘制,依 此类推。图层顺序决定哪个图 层遮住别的图层的内容;列表 框中最下面的图层被遮挡得最 厉害。 “上” 将选中图层在列表中上移一个 位置。 “下” 将选中图层在列表中下移一个 位置。


1.1 图层控制

访问途径: 选择“地图”> “图层控制”。 或 单击主工具条上的 “图层控制” 按钮。


1.1
图层控制对话框
1.1


图层控制对话框
图层可视

指示图层是否被显示。选中该图标下的复选 框可显示其对应的图层。除装饰图层外的所 有图层,都可以打开或关闭显示。装饰图层 的显示总是打开的。 注意:当改变某图层的显示状态,而该图层 又创建了专题图层时,用户将被提示改变专 题图的显示状态。




第三节

OLE 和MapInfo地图对象

地图和图层的管理设计

地图和图层的管理设计

地图和图层的管理设计地图文档管理PageLayout地图管理图层管理Render一、地图文档管理——LXMXDDocument Class接口IMapDocment IMapControl3 IPageLayoutControl2功能:新建、打开、保存、另存、设置保存路径(相对还是绝对路径)、新建public bool CreateMapDocument(string mxdPath)方法功能:新建地图文档输入参数:string mxdPath 地图文档的保存路径返回参数:bool 值为True时,表示新建成功;值为False表示建立失败打开public bool OpenMap(string strPath,bool bPageLayout)方法功能:在MapControl或PageLayout中打开给定的图文件输入参数:string strMXDPath 打开的地图文档路径及文件名bool bPageLayout 是否用PageLayout打开地图返回参数:bool 值为True时,表示打开成功;值为False表示打开失败保存public bool SaveMapDocument(string pSMxdFile,string pTMxdFile)方法功能保存MXD文件输入参数string pSMxdFile 源MXD文件名string pTMxdFile 目标MXD文件名注意pSMxdFile与pTMxdFile相等返回参数:bool 值为True时,表示保存成功;值为False表示保存失败另存public bool SaveAsMapDocument(string pSMxdFile,string pTMxdFile)方法功能保存MXD文件输入参数string pSMxdFile 源MXD文件名string pTMxdFile 目标MXD文件名注意pSMxdFile与pTMxdFile不相等返回参数:bool 值为True时,表示保存成功;值为False表示保存失败设置保存路径public bool SetDSavePath(string dSavePath)方法功能:设置文档保存路径注意是相对还是绝对(还是有点疑问,是否要放在系统配置中)输入参数:string dSavePath 文档保存路径返回参数:bool 值为True表示设置成功;值为False表示设置失败'地图文档打印Private Function MapPrint()On Error GoTo ErrorHandlerIf PageLayoutCtrl.Printer Is Nothing ThenMsgBox "没有打印机", , "提示"Exit FunctionEnd IfDim pPrinter As IPrinterSet pPrinter = PageLayoutCtrl.PrinterIf pPrinter.Paper.Orientation <>PageLayoutCtrl.Page.Orientation Then pPrinter.Paper.Orientation = PageLayoutCtrl.Page.Orientation End IfDim dWidth As Double, dHeight As DoublepPrinter.QueryPaperSize dWidth, dHeightPageLayoutCtrl.PrintPageLayout '打印PageLayoutCtrl.MousePointer = esriPointerDefaultExit FunctionErrorHandler:ErrorOperate Err.Description, Erl, c_sModuleFileName, "MapPrintSetting"End Function'地图文档打印设置Private Function MapPrintSetting()On Error GoTo ErrorHandlerIf Not ShowPrinterSet Then Exit Function '如果取消就退出If PageLayoutCtrl.Printer Is Nothing ThenMsgBox "没有打印机", , "提示"Exit FunctionEnd IfDim dWidth As Double, dHeight As Double, iUnits As Integer Dim pPrinter As IPrinterSet pPrinter = PageLayoutCtrl.PrinterpPrinter.Paper.FormID = Printer.PaperSizepPrinter.Paper.Orientation = Printer.OrientationdWidth = pPrinter.Paper.PrintableBounds.Envelope.WidthdHeight = pPrinter.Paper.PrintableBounds.Envelope.Height With PageLayoutCtrl.Page.FormID = esriPageFormCUSTOM '自定义纸张大小(看到的)iUnits = .Units.Units = pPrinter.Units.Orientation = pPrinter.Paper.Orientation.PutCustomSize dWidth, dHeight.StretchGraphicsWithPage = False.QuerySize dWidth, dHeightEnd WithDim pFrameElement As IFrameElementDim pElement As IElementDim pMapFrame As IMapFrameSet pFrameElement = PageLayoutCtrl.ActiveView.GraphicsContainer.FindFrame(PageLa youtCtrl.ActiveView.Focu sMap)If Not (pFrameElement Is Nothing) ThenSet pMapFrame = pFrameElementSet pElement = pMapFrameDim pEnvelope As IEnvelopeSet pEnvelope = pElement.Geometry.EnvelopeWith pEnvelope.Height = dHeight - .YMin * 2 '根据纸张变化重新设定地图框大小.Width = dWidth - .XMin * 2End WithpElement.Geometry = pEnvelopeDim pGraphicsContainer As IGraphicsContainerSet pGraphicsContainer = PageLayoutCtrl.PageLayoutpGraphicsContainer.UpdateElement pElementEnd IfPageLayoutCtrl.Page.Units = iUnitsPageLayoutCtrl.ActiveView.RefreshExit FunctionErrorHandler:If Err.Number = 32755 Then Exit Function 'user pressed cancelErrorOperate Err.Description, Erl, c_sModuleFileName, "MapPrintSetting"End Function二、PageLayout模版切合(Maps类)、视图切换Public Function f_PageLayout_CreateEnvelope(PageLayoutControl1 As IPageLayoutControl2, lXmin As Long, lYmin As Long, lXmax As Long, lYmax As Long) As IEnvelope'函数功能:创建一个范围'编写人helen'编写日期2004/5/25Set f_PageLayout_CreateEnvelope = Nothing'Get the IPoint interface by creating points is the current page unitsDim pPointMin As IPointDim pPointMax As IPointSet pPointMin = PageLayoutControl1.ToPagePoint(lXmin, lYmin)Set pPointMax = PageLayoutControl1.ToPagePoint(lXmax, lYmax)'Get the IEnvelope interfaceDim pEnvelope As IEnvelopeSet pEnvelope = New Envelope'Set the envelope coordinatespEnvelope.PutCoords pPointMin.X, pPointMin.y, pPointMax.X, pPointMax.ySet f_PageLayout_CreateEnvelope = pEnvelopeEnd FunctionPublic Function ChangeLayout(Optional firstPath As String) As Integer'函数功能: 切换地图模版'编写人wufayun'编写日期2006/04/02'参数: Optional firstPath As String 初始化打开对话框的路径'返回值:= -1 '地图模版路径为空;= -3 '您加载的地图模版文件有错误;'= -2 '用户单击的是取消;= -4 '未知错误;= 1 '成功On Error GoTo ErrorHandler'firstPath初始路径CommonDialog1.DialogTitle = "打开地图模版"CommonDialog1.Filter = "地图模版(*.mxt)|*.mxt"CommonDialog1.InitDir = firstPathCommonDialog1.CancelError = TrueCommonDialog1.ShowOpen'Exit if no map document is selectedDim MXTFilePath As StringMXTFilePath = CommonDialog1.FileNameIf MXTFilePath = "" ThenChangeLayout = -1 '地图模版路径为空Exit FunctionEnd IfIf Not PageLayoutCtrl.CheckMxFile(MXTFilePath) Then ChangeLayout = -3 '您加载的地图模版文件有错误Exit FunctionEnd IfPageLayoutCtrl.LoadMxFile MXTFilePathDim pMaps As IMapsSet pMaps = New MapsDim pMap As IMapSet pMap = m_pMapDocument.Map(0)pMaps.Add pMapPageLayoutCtrl.PageLayout.ReplaceMaps pMapsPageLayoutCtrl.ActiveView.Activate PageLayoutCtrl.hwndm_pMapDocument.ReplaceContents PageLayoutCtrl.PageLayout TOCControl1.SetBuddyControl PageLayoutCtrlChangeLayout = 1 '成功Exit FunctionErrorHandler:If Err.Number = cdlCancel Then '判断用户单击的是取消ChangeLayout = -2 '用户单击的是取消ElseChangeLayout = -4 '未知错误End IfEnd Function三、地图管理——LXMap Class接口IMap IActiveView功能:地图输出为图片、比例尺设置、显示单位设置、地图空间参考设置新建并添加图层组、添加图层、移去图层、图层顺序调整(功能性的)地图输出为图片public bool ExportMapToFile(string pfileName)方法功能:把地图导出到指定格式的图象文件中(*.jpg;*.pdf;*.bmp;*.tif)注:使用IExporter的接口,比如用JpegExporter实例化,把地图转换成jpg 输入参数:pFileName type String,图象文件全名返回参数:bool'参数示例:pFileName="d:\\aa.bmp"(此处应该是反斜线的单线吧)比例尺设置public bool SetMapScale(double pScale)方法功能:地图比例尺设置输入参数:double pScale 比例尺大小返回参数:bool要加获取比例尺么public ISpatialReference GetMapPRJ(integer pZone, integer pZoneType,integer iPrj )方法功能:设置地图空间参考输入参数:integer pZone 表示带号integer pZoneType 值为1 表示3度带值为2 表示6度带integer iPrj iPrj=1表示北京54 iPrj=2 表示西安80 返回参数:ISpatialReferencepublic ISpatialReference GetMapPRJ(IMap pMap)方法功能:获取地图空间参考输入参数:IMap pMap返回参数:ISpatialReferencePublic Function f_Coordinate_GetUnitDescription(pUnits As esriUnits) As String'函数功能:显示单位设置On Error GoTo eHf_Coordinate_GetUnitDescription = "未知"Select Case pUnitsCase esriInches: f_Coordinate_GetUnitDescription = "英寸"Case esriPoints: f_Coordinate_GetUnitDescription = "点"Case esriFeet: f_Coordinate_GetUnitDescription = "英尺"Case esriYards: f_Coordinate_GetUnitDescription = "码"Case esriMiles: f_Coordinate_GetUnitDescription = "英里"Case esriNauticalMiles: f_Coordinate_GetUnitDescription = "海里"Case esriMillimeters: f_Coordinate_GetUnitDescription = "毫米"Case esriCentimeters: f_Coordinate_GetUnitDescription = "厘米"Case esriMeters: f_Coordinate_GetUnitDescription = "米"Case esriKilometers: f_Coordinate_GetUnitDescription = "公里"Case esriDecimalDegrees: f_Coordinate_GetUnitDescription = "度"Case esriDecimeters: f_Coordinate_GetUnitDescription = "度"Case esriUnknownUnits: f_Coordinate_GetUnitDescription = "未知"Case Else: f_Coordinate_GetUnitDescription = "未知"End SelecteH:End Function'地图刷新Public Function MapRefresh() As BooleanDim pActiveView As IActiveViewMapRefresh = FalseIf m_Map Is Nothing Then Exit FunctionSet pActiveView = m_MappActiveView.RefreshMapRefresh = TrueEnd Function'放大地图Public Function MapZoomIn()Dim point1 As IPoint' Dim lZoomInKey As LongDim pEnvelope As IEnvelope' lZoomInKey = GetKeyState(vbKeyAdd)' If lZoomInKey And &H8000 ThenSet point1 = New pointpoint1.x = MapCtrl.Extent.XMin + MapCtrl.Extent.Width / 2 point1.y = MapCtrl.Extent.YMin + MapCtrl.Extent.Height / 2 Set pEnvelope = MapCtrl.ActiveView.ExtentpEnvelope.Height = pEnvelope.Height / 1.5pEnvelope.Width = pEnvelope.Width / 1.5pEnvelope.CenterAt point1MapCtrl.ActiveView.Extent = pEnvelopeMapCtrl.ActiveView.PartialRefresh esriViewGeography, Nothing, NothingMapCtrl.ActiveView.Refresh' End If'Set point1 = NothingSet pEnvelope = NothingEnd Function'放大地图Public Function MapZoomOut()Dim point1 As IPoint' Dim lZoomOutKey As LongDim pEnvelope As IEnvelope' lZoomOutKey = GetKeyState(vbKeySubtract)' If lZoomOutKey And &H8000 Thenpoint1.x = MapCtrl.Extent.XMin + MapCtrl.Extent.Width / 2 point1.y = MapCtrl.Extent.YMin + MapCtrl.Extent.Height / 2 Set pEnvelope = MapCtrl.ActiveView.ExtentpEnvelope.Height = pEnvelope.Height * 1.5pEnvelope.Width = pEnvelope.Width * 1.5pEnvelope.CenterAt point1MapCtrl.ActiveView.Extent = pEnvelopeMapCtrl.ActiveView.PartialRefresh esriViewGraphics, Nothing, NothingMapCtrl.ActiveView.Refresh' End If'Set point1 = NothingSet pEnvelope = NothingEnd Function'下移地图Public Function MapMoveDown()Dim point1 As IPoint' Dim lDownKey As LongDim pEnvelope As IEnvelope' lDownKey = GetKeyState(vbKeyDown)' If lDownKey And &H8000 ThenSet point1 = New pointpoint1.y = MapCtrl.Extent.YMin + MapCtrl.Extent.Height / 2 - MapCtrl.Extent.Height / 5MapCtrl.CenterAt point1MapCtrl.ActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing' End IfSet pEnvelope = NothingEnd Function'左移地图Public Function MapMoveLeft()Dim point1 As IPoint' Dim lLeftKey As LongDim pEnvelope As IEnvelope' lLeftKey = GetKeyState(vbKeyLeft)' If lLeftKey And &H8000 ThenSet point1 = New pointpoint1.x = MapCtrl.Extent.XMin + MapCtrl.Extent.Width / 2 - MapCtrl.Extent.Width / 5point1.y = MapCtrl.Extent.YMin + MapCtrl.Extent.Height / 2 MapCtrl.CenterAt point1MapCtrl.ActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing ' End IfSet point1 = NothingSet pEnvelope = NothingEnd Function'右移地图Public Function MapMoveRight()Dim point1 As IPoint' Dim lRightKey As LongDim pEnvelope As IEnvelope' lRightKey = GetKeyState(vbKeyRight)' If lRightKey And &H8000 ThenSet point1 = New pointpoint1.x = MapCtrl.Extent.XMin + MapCtrl.Extent.Width / 2 + MapCtrl.Extent.Width / 5MapCtrl.CenterAt point1MapCtrl.ActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing ' End IfSet point1 = NothingSet pEnvelope = NothingEnd Function'上移地图Public Function MapMoveUp()Dim point1 As IPoint' Dim lUpKey As LongDim pEnvelope As IEnvelope' lUpKey = GetKeyState(vbKeyUp)' If lUpKey And &H8000 ThenSet point1 = New pointpoint1.x = MapCtrl.Extent.XMin + MapCtrl.Extent.Width / 2 point1.y = MapCtrl.Extent.YMin + MapCtrl.Extent.Height / 2 + MapCtrl.Extent.Height / 5MapCtrl.CenterAt point1MapCtrl.ActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing ' End IfSet point1 = NothingSet pEnvelope = NothingEnd FunctionGetAllFeatureLGetAllRasterLGetFeatureL四、图层管理——LXLayer Class接口Ilayer IFeatureLayer IRasterLayer功能:获得图层、可见比例尺范围设置、数据源设置、可见性设置、可选性设置、透明度设置、图层可见要素设置、Public Function f_Layer_GetLayerName(pLayer As ILayer, pLayerNameType As Integer) As Stringf_Layer_GetLayerName = ""If pLayer Is Nothing Then Exit FunctionDim i_LabelName As String '图层的Layer别名Dim i_DataSetName As String '图层的Dataset名Dim i_DataSetFullName As String '图层的Dataset全名Dim i_LayerFullName As String '图层的(Layer别名+Dataset 全名)Dim i_WSName As String '图层所在数据库带路径的全名i_LabelName = /doc/ac1548772.html,If TypeOf pLayer Is IFeatureLayer ThenDim i_FeatureLayer As IFeatureLayerSet i_FeatureLayer = pLayerIf i_FeatureLayer Is Nothing Then Exit FunctionDim i_FeatureClass As IFeatureClassSet i_FeatureClass = i_FeatureLayer.FeatureClassIf i_FeatureClass Is Nothing Then Exit FunctionDim i_Dataset As IDatasetSet i_Dataset = i_FeatureClassIf i_Dataset Is Nothing Then Exit FunctionDim i_workspace As IWorkspaceSet i_workspace = i_Dataset.WorkspaceIf i_workspace Is Nothing Then Exit Functioni_DataSetName = i_/doc/ac1548772.html, i_DataSetFullName = i_workspace.PathName & "->" & i_/doc/ac1548772.html,i_WSName = i_workspace.PathNameElseIf TypeOf pLayer Is IRasterLayer ThenDim i_RasterLayer As IRasterLayerSet i_RasterLayer = pLayerIf i_RasterLayer Is Nothing Then Exit FunctionDim i_Raster As IRasterSet i_Raster = i_RasterLayer.RasterIf i_Raster Is Nothing Then Exit Functioni_DataSetName = i_RasterLayer.filePathEnd Ifi_LayerFullName = i_LabelName & "," & i_DataSetFullName If pLayerNameType = 1 Then f_Layer_GetLayerName = i_LabelNameIf pLayerNameType = 2 Then f_Layer_GetLayerName = i_DataSetFullNameIf pLayerNameType = 3 Then f_Layer_GetLayerName = i_LabelName & "," & i_DataSetFullNameIf pLayerNameType = 4 Then f_Layer_GetLayerName = i_DataSetNameIf pLayerNameType = 5 Then f_Layer_GetLayerName = i_WSName'显示该图层所在的组名' Dim i_GroupLayer As IGroupLayer' Set i_GroupLayer = f_Layer_GetLayerGroup(pApp, pLayer) ' If Not (i_GroupLayer Is Nothing) Then' f_Layer_GetLayerName = i_/doc/ac1548772.html, & ":" & f_Layer_GetLayerName' End IfEnd Function'函数功能: 对MAP中所有图层进行可选或不可选中的操作Public Sub f_Map_SelectableSetAllLayers(pMap As IMap, pSelect As Boolean)If pMap Is Nothing Then Exit SubIf /doc/ac1548772.html,yerCount = 0 Then Exit SubDim i_LayerIndex As IntegerFor i_LayerIndex = 0 To /doc/ac1548772.html,yerCount - 1Dim i_Layer As ILayerSet i_Layer = /doc/ac1548772.html,yer(i_LayerIndex) f_Layer_SelectableSetLayer i_Layer, pSelectNextEnd SubGetAllFeatureLGetAllRasterLGetFeatureLPublic Function f_Layer_GetAllOtherLayersFromMap(ByVal pMap As IMap, ByVal leibie As Integer, Optional pLayerName As String) As ICompositeLayer'函数名称f_Layer_GetAllFeatureLayersFromMap(ByVal pmap As IMap, ByVal forestLayer As String) As IGroupLayer '函数功能从当前图层中获得所有图层,或所有矢量图层,或所有林业专业图层'编写人wufayun'编写日期2006/3/18'输入参数ByVal leibie =1表示:从当前图层中获得所有图层,=2表示:所有矢量图层,=3表示:所有林业专业图层=4表示获得指定图层名的图层'返回值On Error GoTo eHDim pGroupLayer As IGroupLayerDim i As IntegerDim j As IntegerDim pCompositeLayer As ICompositeLayerDim pLayer As ILayerDim m_LayerGeneralProperties As ILayerGeneralProperties Dim forest As StringDim pLayerDescription As StringDim a As Integer5Set pCompositeLayer = NothingSet pGroupLayer = New GroupLayerFor i = 0 To /doc/ac1548772.html,yerCount - 1If TypeOf /doc/ac1548772.html,yer(i) Is ICompositeLayer ThenSet pCompositeLayer = /doc/ac1548772.html,yer(i)For j = 0 To pCompositeLayer.Count - 1Set pLayer = /doc/ac1548772.html,yer(j)If leibie = 1 ThenpGroupLayer.Add pLayerElseIf leibie = 2 ThenIf TypeOf pLayer Is IFeatureLayer ThenpGroupLayer.Add pLayerEnd IfElseIf leibie = 3 ThenIf TypeOf pLayer Is IFeatureLayer ThenSet m_LayerGeneralProperties = pLayerpLayerDescription = m_/doc/ac1548772.html,yerDescriptionforest = "林业专业"a = InStr(1, pLayerDescription, forest, vbTextCompare)If a > 0 ThenpGroupLayer.Add pLayerEnd IfEnd IfElseIf leibie = 4 ThenIf /doc/ac1548772.html, = pLayerName ThenpGroupLayer.Add pLayerEnd IfEnd IfNext jElseIf TypeOf /doc/ac1548772.html,yer(i) Is ILayer ThenSet pLayer = /doc/ac1548772.html,yer(i)If leibie = 1 ThenpGroupLayer.Add pLayerElseIf leibie = 2 ThenIf TypeOf pLayer Is IFeatureLayer ThenpGroupLayer.Add pLayerEnd IfElseIf leibie = 3 ThenIf TypeOf pLayer Is IFeatureLayer ThenSet m_LayerGeneralProperties = pLayerpLayerDescription = m_/doc/ac1548772.html,yerDescription forest = "林业专业"a = InStr(1, pLayerDescription, forest, vbTextCompare)If a > 0 ThenpGroupLayer.Add pLayerEnd IfEnd IfElseIf leibie = 4 ThenIf /doc/ac1548772.html, = pLayerName ThenpGroupLayer.Add pLayerEnd IfEnd IfEnd IfNext iSet pCompositeLayer = pGroupLayerSet f_Layer_GetAllOtherLayersFromMap = pCompositeLayer Exit FunctioneH:Set f_Layer_GetAllOtherLayersFromMap = NothingEnd FunctionPublic Function f_Layer_GetFirstFLayerFromMap(pMap As IMap, pLayerType As Integer) As ILayerOn Error GoTo eHSet f_Layer_GetFirstFLayerFromMap = NothingIf pMap Is Nothing Then Exit FunctionDim i As IntegerFor i = 0 T o (/doc/ac1548772.html,yerCount - 1)Dim i_Layer As ILayerSet i_Layer = f_Layer_GetFirstLayer(/doc/ac1548772.html,yer( i), pLayerType)If Not i_Layer Is Nothing ThenSet f_Layer_GetFirstFLayerFromMap = i_LayerExit ForEnd IfNexteH:End FunctionPublic Function f_Layer_GetFirstLayer(pLayer As ILayer, pLayerType As Integer) As ILayer If pLayer Is Nothing Then Exit FunctionIf TypeOf pLayer Is IGroupLayer ThenDim i_CompositeLayer As ICompositeLayerSet i_CompositeLayer = pLayerIf i_CompositeLayer Is Nothing Then Exit FunctionDim i As IntegerFor i = 0 To i_CompositeLayer.Count - 1Dim i_Layer As ILayerSet i_Layer = f_Layer_GetFirstLayer(i_/doc/ac1548772.html,ye r(i), pLayerType)If Not i_Layer Is Nothing ThenSet f_Layer_GetFirstLayer = i_LayerExit FunctionEnd IfNextElseIf TypeOf pLayer Is IFeatureLayer ThenDim i_FeatureLayer As IFeatureLayerSet i_FeatureLayer = pLayerIf Not i_FeatureLayer.FeatureClass Is Nothing ThenIf pLayerType = 1 ThenSet f_Layer_GetFirstLayer = pLayerExit FunctionEnd IfEnd IfElseIf TypeOf pLayer Is IRasterLayer ThenDim i_RasterLayer As IRasterLayerSet i_RasterLayer = pLayerIf Not i_RasterLayer.Raster Is Nothing ThenIf pLayerType = 2 ThenSet f_Layer_GetFirstLayer = pLayerExit FunctionEnd IfEnd IfEnd IfEnd FunctionPublic Function f_Layer_GetLayer(pLayer As ILayer, pLayerName As String, pLayerNameType As Integer) As ILayer '函数名称f_Layer_GetLayer(pLayer As ILayer, pLayerName As String, pLayerNameType As Integer) As Boolean'函数功能判断某Layer是否为给定名称的Layer'编写人helen'编写日期2003/10/8'输入参数pLayer type ILayer 图层对象' pLayerName type string 图层名' pLayerNameType type Integer图层名类型'返回参数找到为TRUE 没有找到为FALSEOn Error GoTo eHSet f_Layer_GetLayer = NothingIf pLayer Is Nothing Then Exit FunctionIf pLayerName = "" Then Exit FunctionDim i_LayerName As StringIf TypeOf pLayer Is IGroupLayer ThenDim i_CompositeLayer As ICompositeLayerSet i_CompositeLayer = pLayerDim i_GetLayer As ILayerSet i_GetLayer = NothingDim i As IntegerFor i = 0 To i_CompositeLayer.Count - 1Set i_GetLayer = f_Layer_GetLayer(i_/doc/ac1548772.html,yer(i), pLayerName, pLayerNameType)If Not i_GetLayer Is Nothing ThenSet f_Layer_GetLayer = i_GetLayerExit FunctionEnd IfNextElseIf TypeOf pLayer Is IFeatureLayer Theni_LayerName = f_Layer_GetLayerName(pLayer, pLayerNameType)If i_LayerName = "" Then Exit Function' MsgBox pLayerName & Chr(13) & Chr(10) & i_LayerName ' MsgBox Len(pLayerName) & Chr(13) & Chr(10) & Len(i_LayerName)If StrComp(pLayerName, i_LayerName, vbTextCompare) = 0 Then' MsgBox "strcomp is ok"Set f_Layer_GetLayer = pLayerExit FunctionEnd IfElseIf TypeOf pLayer Is IRasterLayer Theni_LayerName = f_Layer_GetLayerName(pLayer,pLayerNameType)If i_LayerName = "" Then Exit FunctionIf StrComp(pLayerName, i_LayerName, vbTextCompare) = 0 ThenSet f_Layer_GetLayer = pLayerExit FunctionEnd IfElseMsgBox "无法识别的图层类型", , "提示"End IfeH:End FunctionPublic Function f_Layer_GetLayerCount(pLayer As ILayer, pLayerType As Integer, pLayerCount As Long) As Long '函数名称f_Layer_GetLayer(pLayer As ILayer, pLayerName As String, pLayerNameType As Integer) As Boolean'函数功能图层数'编写人helen'编写日期2003/10/8'输入参数pLayer type ILayer 图层对象' pLayerNameType type Integer图层名类型'返回参数找到为TRUE 没有找到为FALSEOn Error GoTo eHIf pLayer Is Nothing Then Exit FunctionIf TypeOf pLayer Is IGroupLayer ThenIf pLayerType = 2 Then 'GroupLayerpLayerCount = pLayerCount + 1ElseDim i_CompositeLayer As ICompositeLayerSet i_CompositeLayer = pLayerDim i As LongFor i = 0 To i_CompositeLayer.Count - 1f_Layer_GetLayerCounti_/doc/ac1548772.html,yer(i), pLayerType, pLayerCountNextEnd IfElseIf TypeOf pLayer Is IFeatureLayer ThenIf pLayerType = 1 Then 'FeatureLayerpLayerCount = pLayerCount + 1End IfElseIf TypeOf pLayer Is IRasterLayer ThenIf pLayerType = 3 Then 'FeatureLayerpLayerCount = pLayerCount + 1End IfEnd IfeH:End Function'得到IGroupLayer中名称为pLayerDataSetName(名称的字符串由名称类型决定)的IlayerPublic Function f_Layer_GetLayerFromGroupLayer(pMap As IMap, pGLayer As IGroupLayer, _pLayerDataSetName As String, pLayerNameType As Integer) As ILayerIf pMap Is Nothing Then Exit FunctionIf pGLayer Is Nothing Then Exit FunctionIf Not (TypeOf pGLayer Is IGroupLayer) Then Exit FunctionIf pLayerDataSetName = "" Then Exit FunctionSet f_Layer_GetLayerFromGroupLayer = NothingDim i_CompositeLayer As ICompositeLayerSet i_CompositeLayer = pGLayerDim i_FeatureLayer As IFeatureLayer Dim i_RasterLayer As IRasterLayerDim i_FeatureClass As IFeatureClass Dim i_Dataset As IDatasetDim i As IntegerFor i = 0 To i_CompositeLayer.Count - 1。

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

实验四MapX地图图层管理一、实验目的在熟悉利用GeoSetManager按图层进行空间数据的组织后,通过在VC++环境下利用MapX编程,能够利用MapX编程进行地图图层的管理(图层增加、删除、新建、激活等)。

二、实验内容与要求1、利用上海徐汇区实验数据,在GeosetManager中制作MapX需要的地图文件;2、实现在VC++环境中利用MapX编程进行地图图层的管理功能。

三、实验报告提交根据个人上机实验情况,写出上机实验报告,要求写出上机实验步骤,包括实验目的、实验内容等,对于实验内容,要求写出对实验内容的理解、心得、发现的问题、以及给出利用MapX组件进行图层管理设置以及进行实例开发的步骤说明。

四、实验操作示例1、在Visual C++开发环境中新建一个工程名为BasGis的单文档应用程序框架;2、在BasGis目录下新建一目录MapData,并将需要显示的徐汇区数据拷贝到该目录,并利用GeosetManager软件在MapData目录中创建xuhuiMap.gst并把徐汇区Tap格式数据加载到xuhuiMap.gst文件中(其中xuhuiMap.gst不包含“图廓”层,“图廓”层的4个文件只放到MapData目录下,在后面的编程中动态加载该层)。

3、给应用程序BasGis添加MapX控件:在MapX的安装目录中找到Samples50\C++\cpp子目录中找到MAPX.H和MAPX.CPP两个文件,将这两个文件拷贝你所创建的BasGis工程目录下,然后在VC开发环境中的Project菜单点击“Add to Project->Files…”,将BasGis目录下的MAPX.H和MAPX.CPP添加到工程中,点击ClassView选项卡,看看你的工程里是否多了很多以CMapX开头的类;4、编写代码实现MapX地图显示:在ClassView类视图里找到CBasGisView类,双击该类,打开“BasGisView.h”文件,在class CBasGisView 类定义代码的前面加入#include “MapX.h”,在CBasGisView类中定义两个公有成员变量CMapX m_ctrlMapX //CMapX对象和BOOL m_bMapData //地图装入的标记。

5、单击工作区的ResourceView,选中BasGis resources项,点击鼠标右键,在弹出的下拉菜单中选“ID=Resources symbols…”,新建一个ID资源,增加MapX地图的ID资源IDC_MAP。

6、点击VC菜单的“View->ClassWizard”,弹出“MFC ClassWizard”对话框。

在MessageMaps页面中,选择Class name选项为CBasGisView类,在Messages选项中选择Windows消息WM_CREATE并双击,新增加成员函数OnCreate,用同样的方法生成WM_SIZE消息的成员函数OnSize,然后点击“Edit Code”进入CBasGisView.cpp文件中。

编译运行程序,应该没有错误,但也没有任何功能。

7、增加代码,添加功能(红色为添加代码):int CBasGisView::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CView::OnCreate(lpCreateStruct) == -1)return -1;//tg addSetCapture();BeginWaitCursor();try{//取得当前路径char CurrentPath[80];GetCurrentDirectory(80,CurrentPath);char m_strPath[120];strcpy(m_strPath,CurrentPath);strcat(m_strPath,"\\MapData\\xuhuiMap.gst");//创建MapX地图对象CRect ViewRect;GetClientRect(ViewRect);m_ctrlMapX.Create(NULL,WS_VISIBLE,ViewRect,this,IDC_MAP);//设置MapInfo数字地图m_ctrlMapX.SetGeoSet(m_strPath);m_ctrlMapX.SetMousePointer(miHourglassCursor);//设置鼠标形状m_ctrlMapX.SetRedrawInterval(150);//绘图延迟时间,毫秒CString str=m_ctrlMapX.GetTitleText();//显示地图标题m_ctrlMapX.SetTitleText(str);m_ctrlMapX.SetMapUnit(0);//设置地图单位,0米,1公里,2英尺m_bMapData=TRUE;//地图装入}catch (COleDispatchException *e){e->ReportError();e->Delete();}catch (CException* e){e->ReportError();e->Delete();}ReleaseCapture();EndWaitCursor();m_ctrlMapX.SetMousePointer(0);//tg add// TODO: Add your specialized creation code herereturn 0;}编译运行你的程序,看看结果怎样?(注意在重新编译运行VC程序前,建议利用VC环境中的“Build->Clean”菜单对程序进行清理以下,避免VC程序死机。

)8、修改OnSize成员函数如下:void CBasGisView::OnSize(UINT nType, int cx, int cy){CView::OnSize(nType, cx, cy);// TODO: Add your message handler code here//tg addif (m_bMapData==TRUE&&cx!=0&&cy!=0){try{//使MapX地图充满视窗m_ctrlMapX.MoveWindow(0,0,cx,cy);}catch (COleDispatchException *e){e->ReportError();e->Delete();}catch (CException* e){e->ReportError();e->Delete();}}//tg add}重新编译运行程序,看看有什么变化?9、编写代码实现MapX地图缩放和漫游等操作:在工作区的ResourceView选项中,对Menu菜单中的IDR_MAINFRAME菜单进行修改,删除“编辑”项,增加“操作”下拉菜单,在“操作”菜单中中添加“放大(ID_ZOOMIN)、缩小(ID_ZOOMOUT),漫游(ID_ZOOMPAN),中心(ID_ZOOMCENTER)、选择(ID_SELECT)、标注(ID_TEXT)”等操作菜单,然后利用ClassWizard分别在CBasGisView视图类中,建立他们的COMMAND和UPDATE_COMMAND_UI消息处理函数。

10、在CBasGisView类定义中,增加一个公有成员:int m_iMouseStation; 并在CBasGisView::CBasGisView()构造函数中将其初始化为:m_iMouseStation=0;在放大菜单ID_ZOOMIN的消息处理函数中增加,调用MapX对象的放大方法实现地图的放大操作:void CBasGisView::OnZoomin(){// TODO: Add your command handler code herem_ctrlMapX.SetCurrentTool(miZoomInTool);//放大m_iMouseStation=11;//放大}void CBasGisView::OnUpdateZoomin(CCmdUI* pCmdUI){// TODO: Add your command update UI handler code hereif (m_iMouseStation==11){pCmdUI->SetCheck(TRUE);}else{pCmdUI->SetCheck(FALSE);}}重新编译运行程序,并选择“操作->放大”菜单,然后对地图进行放大,是不是地图放大了?按照以上方法分别为缩小(miZoomOutTool,m_iMouseStation==12),平移(miPanTool,m_iMouseStation==13),中心(miCenterTool,m_iMouseStation==14),选择(miSelectTool,m_iMouseStation==15),标注(miTextTool,m_iMouseStation==16)做好后,运行程序,看看效果怎么样?我们并没有编写多少代码,已经实现了复杂地图的显示和操作,控件的优点正在与此。

为了方便操作,可以对BasGis程序的工具条(IDR_MAINFRAM)进行修改,删除ID_EDIT_CUT,ID_EDIT_COPY,ID_EDIT_PASTE等按钮,并新建对应“操作”菜单的“放大(ID_ZOOMIN)、缩小(ID_ZOOMOUT),漫游(ID_ZOOMPAN),中心(ID_ZOOMCENTER)、选择(ID_SELECT)、标注(ID_TEXT)”按钮。

不需要添加代码,这些按钮与“操作”菜单具有相同的功能。

这些按钮的图标可以从例子程序中拷贝,也可以自己绘制图标。

11、图层的管理功能实现:在MapX的帮助文档的主目录里找到“MapX对象”,然后在其中找到“图层集合类和图层类”,查看图层集合类(CMapXLayers)和图层类(CMapXLayer)相关内容,了解这两个类的用法。

熟悉相关用法后,再在你的程序中添加如下代码:在CBasGisView类定义中新增如下两个共有成员:CMapXLayers m_MapXLayers; //图层集合对象CMapXLayer m_MapXLayer; //图层对象12、在BasView.cpp文件中,改写CBasGisView::OnCreate(LPCREATESTRUCTlpCreateStruct)成员函数,在语句“m_bMapData=TRUE;”之前加入如下代码:strcpy(m_strPath,CurrentPath);strcat(m_strPath,"\\MapData\\图廓.tab");m_MapXLayers=m_ctrlMapX.GetLayers();m_MapXLayer=m_MapXLayers.Add(m_strPath,0);//添加图层重新编译运行你的程序再看看,“图廓”层是不是增加到地图中了?13、在ResourceView页面中,为工具条增加一个显示图层管理的按钮(ID_MAP_LAYERS_DLG)并为其在CBasGisView类中增加消息处理函数,并添加如下代码:void CBasGisView::OnMapLayer(){// TODO: Add your command handler code hereCMapXLayers lays;lays=m_ctrlMapX.GetLayers();yersDlg();}重新编译运行你的程序再看看,一个标准的图层管理对话框便实现了。

相关文档
最新文档