ArcGIS Engine开发之地图基本操作(2)
地图数据的加载
1.加载地图文档
ArcGIS Engine支持加载多种类型的数据,有矢量数据的Coverage、Shapefile、dwg/dxf文件,栅格数据的BMP、GRID、控件数据库等。很多情况下加载通过ArcGIS桌面制作的地图文档是最合适的(*.mxd格式)。
加载地图的第三种方式:
- 使用IMAPControl接口的LoadMxfile方法加载。
- 通过IMAPDocument接口加载。
- 使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass加载。
1.使用IMAPControl接口的LoadMxFile方法加载地图文档
思路如下:
- 通过.NET框架类提供的打开文件对话框选择要打开的地图文档。
- 用IMapControl接口提供的CheckMxFile方法检查是否为有效的地图数据,若有效则调用IMapControl接口提供的LoadMxfile方法进行加载。
- CheckMxFile方法:该方法的作用就是确定选中的地图文档是否是一个可以记载到MapControl控件中的有效地图文档。它能验证文件是否存在、文件的内部结构是否符合预期的存储格式。
- LoadMxFile方法:该方法的作用是想MapControl控件中加载地图文档,地图文档可以用索引或文件名指示。函数原型为public void LoadMxFile(string mxPath,object mapNameOrIndex,object password).
- 参数的说明表:
参数 描述 mxPath 选择,表示文件路径的字符串表达式 mapNameOrIndex 可选,表示地图名或者索引号 password 可选,表示密码
代码:
OpenFileDialog pOpenFileDialog = new OpenFileDialog();
pOpenFileDialog.CheckFileExists = true;
pOpenFileDialog.Title = "打开地图文档";
pOpenFileDialog.Filter = "ArcMap文档(*.mxd)|*.mxd;|ArcMap模板(*.mxt)|.mxt|发布地图文件(*.pmf)|*pmf|所有地图格式(*.mxd;*.mxt;*.pmf)|*,mxd;*.mxt;*.pmf";
pOpenFileDialog.Multiselect = false;//不允许多个文件同时选择
pOpenFileDialog.RestoreDirectory = true;//存储打开的文件路径
if (pOpenFileDialog.ShowDialog() == DialogResult.OK)
{
string pFileName = pOpenFileDialog.FileName;
if (pFileName == "")
{
return;
}
if (axMapControl1. CheckMxFile(pFileName))//检查地图文档是否有效
{
// ClearAllData();
axMapControl1. LoadMxFile(pFileName);
}
else
{
MessageBox.Show(pFileName + "是无效的地图文档!", "信息提示");
return;
}
}
2、通过IMapDocument接口加载地图文档
IMapDocument接口定义了操作和管理地图文档对象的方法和属性。使用这个对象可以获取,更新一个文档的内容,设置文档文件的属性以及读写和保存一个文档文件等。IMapDocument接口同时扮演者数据显示和数据容器的双重身份,可以通过ActivieView获取Map数据视图。通过FocusMap属性获取当期那正在使用的Map对象的数据容器身份。一个文档可能有多个Map对象,但是在同一个时刻内,只能有一份Map处于使用状态。
实例的代码:
OpenFileDialog pOpenFileDialog = new OpenFileDialog();
pOpenFileDialog.CheckFileExists = true;
pOpenFileDialog.Title = "打开地图文档";
pOpenFileDialog.Filter = "ArcMap文档(*.mxd)|*.mxd;|ArcGIS模板(*.mxt)|*.mxd|发布地图文件(*.pmf)|*.pmf|所有的地图格式(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf";
pOpenFileDialog.Multiselect = false;
pOpenFileDialog.RestoreDirectory = true;
if (pOpenFileDialog.ShowDialog() == DialogResult.OK)
{
string pFileName = pOpenFileDialog.FileName;
if (pFilreName == "")
{
return;
}
if (MapControl1.checkMxFiile(pFileName))//检查地图文档有效性
{
//将数据在载入pMapDocument并与Map控件关联
//using Esri.ArcGIS .Carto
IMapDocument pMapDocument = new MapDocument();
pMapDocument.Open(pFileName);
//获取Map中激活的地图文档
mainMapControl.Map = pMapDocument.ActiveView.FocusMap;
mainMapControl.ActiveView.Refresh();
}
else
{
MessageBox(pFileName + "是无效的地图文档!", "信息提示");
return;
}
}
3、使用ControlOpenDocCommandClass加载地图
使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass实现地图文档的加载,核心的代码:
ICommand command = new ControlsOpenDocCommandClass();
command.OnCreate(mainMapControl.Object);
command.OnClick();
ArcGIS Engine开发之地图基本操作(2)的更多相关文章
- ArcGIS Engine开发之地图基本操作(4)
ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...
- ArcGIS Engine开发之地图基本操作(3)
地图数据的加载 一.加载Shapefile数据 Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式.加载Shapefile数据的方式有两种: ...
- ArcGIS Engine开发之地图基本操作(1)
ArcGIS提供的各类数据形式以及相应接口 1. 空间数据 在GIS软件中,空间数据有多种不同的形式存在.按照不同的划分标准可以分为矢量数据和栅格数据.GIS格式数据和非GIS格式数据(CAD格式). ...
- ArcGIS Engine开发之地图浏览
地图的浏览功能包括缩放.移动.量测旋转等. 1.放大与缩小 无论是放大还是缩小,都是通过改变MapControl中当前视图的范围Extent属性来实现的,主要用到包络线(Envelope)类. 包络线 ...
- ArcGIS Engine开发之地图导出
关于地图导出的方法有很多,但是核心技术就那么一点.下面是从项目实战中总结的一部分地图导出的方法:(以全域导出和区域导出为例) 1.由于地图导出用到的函数和方法容易重复,增加了工作量故首先将其进行封装成 ...
- ArcGIS Engine开发前基础知识(2)
ArcGIS基本控件简介 ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件.这些组件包括MapControl,PageLayoutContro ...
- C#,ArcGIS Engine开发入门教程
C#,ArcGIS Engine开发入门教程 转自:http://blog.csdn.net/yanleigis/article/details/2233674 目录(?)[+] 五实现 一 加载A ...
- ArcGIS Engine开发基础总结(一)
标准Engine功能 地图浏览 地图制作 数据查询 数据分析 及 所有的开发控件 —MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅 ...
- ArcGIS Engine开发鹰眼图的功能(基础篇)
鹰眼是用于调节全视域范围内主地图显示范围情况的副地图.它体现了地图整体与详细局部的关系. 用户可以通过鼠标单击或者画框等动作实现鹰眼与主地图的交互情况. 鹰眼功能的原理是通过主地图窗口的地图控件和鹰眼 ...
随机推荐
- centos 6.5 升级php
1>追加CentOS 6.5的epel及remi源. # rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-re ...
- 如何开发FineReport的自定义控件?
FineReport作为插件化开发的报表软件,有些特殊需求的功能需要自己开发,开发的插件包帆软官方有提提供,可以去帆软论坛上找,本文将主要介绍如何开发一个自定义控件,这里讲讲方法论. 第一步:实例化一 ...
- 【初码干货】在Window Server 2016中使用Web Deploy方式发布.NET Web应用的重新梳理
在学习和工作的过程中,发现很多同事.朋友,在做.NET Web应用发布的时候,依然在走 生成-复制到服务器 这样的方式,稍微高级一点的,就是先发布到本地,再上传到服务器 这种方式不仅效率低下,而且不易 ...
- Spark笔记:复杂RDD的API的理解(上)
本篇接着讲解RDD的API,讲解那些不是很容易理解的API,同时本篇文章还将展示如何将外部的函数引入到RDD的API里使用,最后通过对RDD的API深入学习,我们还讲讲一些和RDD开发相关的scala ...
- OAuth认证原理及HTTP下的密码安全传输
很多人都会问这样一个问题,我们在登录的时候,密码会不会泄露?随便进一个网站,登录时抓包分析,可以看到自己的密码都是明文传输的,在如此复杂的web环境下,我们没有百分的把握保证信息在传输过程中不被截获, ...
- OpenCASCADE Ring Type Spring Modeling
OpenCASCADE Ring Type Spring Modeling eryar@163.com Abstract. The general method to directly create ...
- ElasticSearch 5学习(6)——分布式集群学习分享1
在使用中我们把文档存入ElasticSearch,但是如果能够了解ElasticSearch内部是如何存储的,将会对我们学习ElasticSearch有很清晰的认识.本文中的所使用的ElasticSe ...
- sorl6.0+jetty+mysql搭建solr服务
1.下载solr 官网:http://lucene.apache.org/solr/ 2.目录结构如下 3.启动solr(默认使用jetty部署) 在path路径下将 bin文件夹对应的目录加入,然后 ...
- CSS 基础篇、绝对有你想要
本章内容: 简介 CSS 定义 四种引入方式 样式应用的顺序 选择器(Selector) * 通用元素选择器 标签选择器 class 类选择器 # ID选择器 , 多元素选择器 后代元素选择器 > ...
- 自己动手,实现一种类似List<T>的数据结构(一)
前言 上一篇文章<Unity3D中常用的数据结构总结与分析>简单总结了一下小匹夫工作中经常遇到的一些数据结构.不过小匹夫一直有种观点,就是光说的热闹实际啥也不做真的没啥意思.光说不练假把式 ...