版本: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();
}
}