在ArcMap中打开一个mxd文件时,有可能其关联的shp文件路径被改动了,导致找不到该图层,这时,就可以右键选择Properties,在弹出对话框中选择source选项卡,
点set data source按钮,如下图
然后选择该图层的位置,即可。
图层的配置息都是存放在mxd中的,若是将图层数据导入到sde中保存的话,再进行加载的时候,这些配置信息都是找不到的,要想按照mxd的样式从数据库加载图层,
就得把每个图层的配置信息提取出来,放到数据库中,这样就要考虑标注、图层渲染、图层顺序、图层组、图层的可视范围、图层是否可选、图层是否可见、
地图的投影系等等。这就引入了更多的复杂性,
其实可以这样,把mxd也单独的保存一份,在每次连接到数据库时,先将此mxd文件中的各个图层的指向到sde中的对应图层,然后再打开此mxd,即可省去很多麻烦。
讲讲实现思路:
首先遍历mxd的各个图层,使用IMapDocument接口打开mxd文件,使用IMap接口的get_Layers方法,按各类图层的UID来搜索,一般分为三类,矢量图层(IGeoFeatureLayer),
注记图层(IFDOGraphicsLayer),遥感影像图层(IRasterLayer),前两类都可转换成IFeatureLayer接口类型,然后可将其FeatureClass指向SDE中对应的FeatureClass,
使用IFeatureWorkspace的OpenFeatureClass方法,
获取FeatureClass后,将此对象赋给IFeatureLayer即可,
影像图层可使用IRasterWorkspaceEx的OpenRasterDataset方法获取其对应的Dataset,然后使用IRasterLayer的CreateFromDataset方法。
在使用OpenFeatureClass或OpenRasterDataset时,使用的参数中的图层名称,都是在导入SDE时的名称,也就是图层的真实文件名,而在mxd中,一般图层的名称与其真实的
shp或影像文件名称不相同(注记图层一般放在mdb或gdb中,其在mxd中显示时的名称与其本身一样,直接使用lyr.name即可),使用ILayer的name属性,只能获取此图层在mxd中的别名,获取文件名称,需要将图层先转换成IDataLayer,将此对象的DatasourceName属性
转换成IDatasetName类型,然后获取IDatasetName的Name属性,此即为图层的真实文件名称,示例代码如下:
附:各图层类型对应的UID
分享到:
相关推荐
地图文档mxd,如果更改数据源需要一个一个修改图层的数据源。实在麻烦。做了个工具可以批量修改图层数据源。支持各种数据源,包括sde,shapfile,mdb,gdb。 运行环境:C#+ArcEngine9.3 +.Net框架2.0。
在ArcMap中有Select by location这一功能,即根据feature之间 位置的拓扑关系 来选择 要素,如相交,相切,包含等,本程序在ArcEngine中实现了这一功能,本人调试过,能够运行。跟大家分享一下!
通过引用ArcGIS Desktop安装目录下的`ESRI.ArcGIS.*`相关dll文件,我们就可以在C#项目中使用ArcEngine的功能。 要打开一个MXD文件,我们需要以下步骤: 1. 引用ArcObjects库:在C#项目中,添加对ArcGIS Desktop...
在本文中,我们将深入探讨如何使用VS2010 C#和ArcEngine来实现属性查询以及基于位置(空间)的查询。ArcEngine是Esri公司提供的一个强大的GIS开发平台,它允许开发者创建桌面、Web以及移动GIS应用程序。通过C#语言,...
在本文中,我们将深入探讨如何使用C#编程语言与Esri的ArcEngine 10.1结合,在Visual Studio 2010环境下开发一个窗体应用程序,以实现打开和显示MXD(Map Document)文件的功能。MXD文件是ArcGIS中的核心组件,它存储...
里面包含了地图浏览,地图查询,图层要素的添加、修改、删除,最短路径分析,各种专题图册制作,自由显示标注,完全中文的符号编辑器,完全中文的Identity功能,地图测量,实现了不同空间插值等一系列功能。...
- 在ArcMap中打开含有丢失数据源图层的地图文档(MXD文件)。 - 选择任意一个带有红色感叹号的图层,并点击图层旁边的小方框,会看到一个小勾消失,再次点击该空方框,将弹出“SetDataSource”对话框。 - 在...
### ArcEngine 开发环境搭建与基础应用:使用VC++.NET 2005 打开 ArcMap 地图文档 #### 一、ArcEngine开发环境与版本问题 **ArcEngine9.X 版本问题** - **ESRI 发布的 ArcEngine 版本**:根据 ESRI 官方文档,不同...
本合集主要涵盖了使用C#进行ArcEngine二次开发的各种基础功能和高级应用,包括地图操作、图层管理、空间分析以及专题图的创建等。以下是对这些知识点的详细阐述: 1. **地图操作**:在ArcEngine中,地图是核心元素...
ArcEngine10,达到类似于arcmap的鼠标反转,方便实用。
首先,我们要理解如何在C#中使用ArcEngine实现属性查询。ArcEngine提供了IGeoFeatureLayer接口,它包含了QueryFilter对象,通过这个对象可以基于属性条件筛选图层中的要素。例如,你可以设置一个SQL语句来定义查询...
本文将深入探讨如何在ArcEngine+C#环境中实现右键符号选择器的功能。 首先,理解“符号选择器”是关键。在ArcGIS中,符号选择器是一个工具,用于选择和定制地图上的图层、特征或几何对象的显示样式。它提供了丰富的...
在ArcEngine中,我们不通过创建图层来直接操作shp文件,而是利用其提供的API接口,对数据进行更底层的操作,这样可以提高效率并实现更为复杂的功能。 首先,我们需要导入ArcGIS Engine的相关库,例如`ESRI.ArcGIS....
文章的部分内容介绍了使用PostgreSQL在ArcEngine和ArcServer开发过程中的步骤,包括PostgreSQL的安装、在ArcMap中的使用、在AE中连接数据库等。 知识点总结 1. 使用PostgreSQL可以解决ArcEngine和ArcServer开发...
本实例以“ArcEngine10ZoomToLayer.rar”为例,详细探讨如何利用ArcEngine10和C#编程语言实现在地图中右击图层并迅速缩放至该图层的功能。 一、ArcEngine 10简介 ArcEngine是Esri公司开发的桌面GIS开发平台,它为...
现在,我们将探讨如何自己动手实现ArcMap中的Identify功能。 首先,我们需要理解Identify功能的工作原理。当用户在地图界面上点击时,Identify会执行以下步骤: 1. **坐标定位**:确定鼠标点击的位置在地图上的...
本文将详细介绍如何在ArcEngine中实现一个类似ArcMap中的iDentify工具。 #### 实现思路 为了在ArcEngine中实现一个自定义的iDentify工具,我们需要按照以下步骤来进行: 1. **获取鼠标点击位置**:当用户点击地图...
在IT行业中,`vc+ArcEngine`是一种使用Visual C++(简称VC)编程语言与Esri公司的ArcGIS平台中的ArcEngine组件进行集成开发的技术。ArcEngine是一个强大的地理信息系统(GIS)开发接口,允许开发者创建定制的GIS应用...
本篇文章将深入探讨使用C#与ArcEngine进行属性查询的功能,以及如何实现属性及表连接。 属性查询是GIS系统中的核心功能之一,它允许用户基于特定属性条件筛选地图数据,从而获取所需的信息。在ArcEngine中,我们...
总的来说,这个“将多个mxd图层合并到一个mxd”的小工具是GIS工作流程中的一个高效工具,它利用了ArcGIS Engine的强大功能,帮助用户简化地图管理任务,提高生产力。对于熟悉ArcGIS的用户,这是一个值得尝试的实用...