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();
    }
}
posted @ 2011-09-28 21:49  xmwang  阅读(1034)  评论(0编辑  收藏  举报