地图数据的加载

1.加载地图文档

ArcGIS Engine支持加载多种类型的数据,有矢量数据的Coverage、Shapefile、dwg/dxf文件,栅格数据的BMP、GRID、控件数据库等。很多情况下加载通过ArcGIS桌面制作的地图文档是最合适的(*.mxd格式)。

加载地图的第三种方式:

  1. 使用IMAPControl接口的LoadMxfile方法加载。
  2. 通过IMAPDocument接口加载。
  3. 使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass加载。

1.使用IMAPControl接口的LoadMxFile方法加载地图文档

思路如下:

  1. 通过.NET框架类提供的打开文件对话框选择要打开的地图文档。
  2. 用IMapControl接口提供的CheckMxFile方法检查是否为有效的地图数据,若有效则调用IMapControl接口提供的LoadMxfile方法进行加载。
    1. CheckMxFile方法:该方法的作用就是确定选中的地图文档是否是一个可以记载到MapControl控件中的有效地图文档。它能验证文件是否存在、文件的内部结构是否符合预期的存储格式。
    2. LoadMxFile方法:该方法的作用是想MapControl控件中加载地图文档,地图文档可以用索引或文件名指示。函数原型为public void LoadMxFile(string mxPath,object mapNameOrIndex,object password).
    3. 参数的说明表:
      参数 描述
      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)的更多相关文章

  1. ArcGIS Engine开发之地图基本操作(4)

    ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...

  2. ArcGIS Engine开发之地图基本操作(3)

    地图数据的加载 一.加载Shapefile数据 Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式.加载Shapefile数据的方式有两种: ...

  3. ArcGIS Engine开发之地图基本操作(1)

    ArcGIS提供的各类数据形式以及相应接口 1. 空间数据 在GIS软件中,空间数据有多种不同的形式存在.按照不同的划分标准可以分为矢量数据和栅格数据.GIS格式数据和非GIS格式数据(CAD格式). ...

  4. ArcGIS Engine开发之地图浏览

    地图的浏览功能包括缩放.移动.量测旋转等. 1.放大与缩小 无论是放大还是缩小,都是通过改变MapControl中当前视图的范围Extent属性来实现的,主要用到包络线(Envelope)类. 包络线 ...

  5. ArcGIS Engine开发之地图导出

    关于地图导出的方法有很多,但是核心技术就那么一点.下面是从项目实战中总结的一部分地图导出的方法:(以全域导出和区域导出为例) 1.由于地图导出用到的函数和方法容易重复,增加了工作量故首先将其进行封装成 ...

  6. ArcGIS Engine开发前基础知识(2)

    ArcGIS基本控件简介 ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件.这些组件包括MapControl,PageLayoutContro ...

  7. C#,ArcGIS Engine开发入门教程

    C#,ArcGIS Engine开发入门教程 转自:http://blog.csdn.net/yanleigis/article/details/2233674  目录(?)[+] 五实现 一 加载A ...

  8. ArcGIS Engine开发基础总结(一)

    标准Engine功能 地图浏览    地图制作 数据查询 数据分析 及 所有的开发控件 —MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅 ...

  9. ArcGIS Engine开发鹰眼图的功能(基础篇)

    鹰眼是用于调节全视域范围内主地图显示范围情况的副地图.它体现了地图整体与详细局部的关系. 用户可以通过鼠标单击或者画框等动作实现鹰眼与主地图的交互情况. 鹰眼功能的原理是通过主地图窗口的地图控件和鹰眼 ...

随机推荐

  1. Linux监控工具介绍系列——OSWatcher Black Box

      OSWatcher Balck Box简介 OSWatcher Black Box (oswbb)是Oracle开发.提供的一个小巧,但是实用.强大的系统工具,它可以用来抓取操作系统的性能指标,用 ...

  2. 免费开源的 .NET 分布式组件库 Exceptionless Foundatio

    前言 在互联网时代,分布式应用.系统变得越来越多,我们在使用 .Net 技术构建分布式系统的时候,需要使用到一些组件或者是助手库来帮助我们提高生产力以及应用程序解耦,但是纵观.Net圈,能够符合要求的 ...

  3. ASP.NET Aries 3.0发布(附带通用API设计及基本教程介绍)

    主要更新: 1:升级处理机制(js请求由同步变更为异步) 2:优化前端JS:包括API和配置方式. 3:增加InputDialog功能. 4:增远远程验证功能. 5:优化权限安全机制. 6:增加一次请 ...

  4. ASP.NET Web API Model-ModelBinder

    ASP.NET Web API Model-ModelBinder 前言 本篇中会为大家介绍在ASP.NET Web API中ModelBinder的绑定原理以及涉及到的一些对象模型,还有简单的Mod ...

  5. CSharpGL(26)在opengl中实现控件布局/渲染文字

    CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入( ...

  6. Java-jdbc操作数据库

    如果需要访问数据库,首先要加载数据库驱动,数据库驱动只需在第一次访问数据库时加载一次.然后在每次访问数据库时创建一个Connection实例,获取数据连接,这样就可以执行操作数据库的SQL语句.最后在 ...

  7. iOS--碎片知识锦集

    知识锦集day01 1.UIView的两个方法: sizeThatFits和 sizeToFit 官方文档上说: - (CGSize)sizeThatFits:(CGSize)size;     // ...

  8. 菜鸟理解的工厂模式(Factory Pattern)是什么样子的?

    直接开始说了,不浪费园友宝贵的时间! 什么是工厂模式? 在学习前,先问一下:"它是什么?". 工厂模式,它是项目里面常用的设计模式之一. 它是属于创建型模式,简单的理解创建型模式就 ...

  9. SQL Server 动态生成数据库所有表Insert语句

    一. 背景 SQL Server,如果我们需要把数据库A的所有表数据到数据库B中,通常我们会怎么做呢?我会使用SSMS的导入导出功能,进行表数据的导入导出,无可厚非,这样的导入非常简单和方便: 但是, ...

  10. Python标准模块--itertools

    1 模块简介 Python提供了itertools模块,可以创建属于自己的迭代器.itertools提供的工具快速并且节约内存.开发者可以使用这些工具创建属于自己特定的迭代器,这些特定的迭代器可以用于 ...