ArcObjects对地图、图层及图形的访问与处理(一):地图文档
版本:ArcGIS10.0
关于地图文档(Map Documents)
地图文档可以包括多个地图和一个布局,扩展名为.mxd。在ArcGIS中地图文档可以通过不同的组件访问。基于ArcGIS Desktop开发,最常见的方式是通过MxDocument类访问。在ArcGIS Engine开发中,可以通过多种方式访问和修改地图文档,包括:MapControl、PagaLayoutControl、MapDocument和MapReader等类。
在ArcMap应用程序中,可以通过程序hook得到MxDocument的引用。MxDocument会操作ArcMap程序的进程空间,因此当创建一个新的MxDocument类的实例时,也会创建一个新的ArcMap进程。
MxDocument是地图文档的首要组件,可以通过MxDocument访问到地图文档中的所有元素,例如可以通过Maps属性访问到地图文档中的所有地图,通过FocusMap属性访问当前聚焦的地图,通过PageLayout属性访问布局。
通过MapDocument类访问地图和图层
1、创建MapDocument类
[C#]
IMapDocument pMapDocument = new MapDocumentClass();
2、枚举MapDocument中的所有地图,并将名字打印到控制台
[C#]
//判断路径所指是否为地图文档if (pMapDocument.get_IsMapDocument(path)) { pMapDocument.Open(path, null); IMap pMap; //遍历并打印地图和图层的名字 for (int i = 0; i <= pMapDocument.MapCount - 1; i++) { //获取索引号为i的地图 pMap = pMapDocument.get_Map(i); Console.WriteLine(pMap.Name); //获取地图的所有图层 IEnumLayer pEnumLayer = pMap.get_Layers(null, true); pEnumLayer.Reset(); ILayer pLayer = pEnumLayer.Next(); while (pLayer != null) { Console.WriteLine(pLayer.Name); pLayer = pEnumLayer.Next(); } } }
通过Mxdocument类访问地图和图层
1、从Mxdocument获取地图集
[C#]
IMap pMap; IMaps pMaps = pMxDocument.Maps;
2、枚举地图及图层,并将名字打印到控制台
[C#]
for (int i = 0; i <= pMaps.Count - 1; i++) { //获取地图集中的地图 pMap = pMaps.get_Item(i); Console.WriteLine(pMap.Name); //获取地图的图层集合 IEnumLayer pEnumLayer = pMap.get_Layers(null, true); pEnumLayer.Reset(); ILayer pLayer = pEnumLayer.Next(); //遍历并打印图层名 while (pLayer != null) { Console.WriteLine(pLayer.Name); pLayer = pEnumLayer.Next(); } }