hippy9911

导航

ArcEngine开发与ArcGIS基础知识 - 1

<!--本文仅供初学者学习使用。如有错误,敬请指正。-->

一、IMapDocument

  mxd文件对应的接口,可通过此接口新建,打开,保存,另存mxd文件

  示例代码:

  IMapDocument pMapDocument = new MapDocumentClass();
  pMapDocument.Open(string mxdPath);
  pMapDocument.Save();

二、IMap

  对应的是地图(图框),这里的IMapDocument与IMap是一对多的关系,下面进行详细说明:

    (1)打开ArcMap 10.2,在没有加载任何mxd的情况下,默认会有一个Map,红框中的"Layers"就代表一个Map

       

    (2)在Insert中也可以插入另一张Map,值得注意的是ArcMap中显示的是Data Frame,但在代码中就是指一个Map(也有可能用其他接口也可以获取DataFrame而我没有用过

       

    (3)添加新的Data Frame后,当前的MapDocument中就有两个Map了,而后通过遍历可以任意的Map了,示例代码: 

  for (int i = 0; i < pMapDocument.MapCount; i++)
  {
      IMap pMap = pMapDocument.Map[i];      
  }

 三、ILayer

  此接口对应的就是图层了,图层是加在图框下的,所以,同样地,Map与Layer也是一对多的关系。

    (1)同样地,可以向图框(Map)中添加多个图层,只不过现在这些图层还没有数据

      

    (2)同样的也可以通过代码获取Layer,这里主要有两种方法,第一种与Map获取方法类似就不赘述了;另一种方法需要IEnumLayer接口,这个接口相当于一组Layer的指针,示例代码如下:

  ILayer pLayer = null;
  IEnumLayer pEnumLayer = pMap.Layers;
  pEnumLayer.Reset();
  while ((pLayer = pEnumLayer.Next()) != null)
  {
       //// 对pLayer进行操作
  }

    (3)值得注意的是这个ILayer是一个总的接口,有很多其他接口都继承于它,例如IFeatureLayer、IRasterLayer等等,本系列文章将主要围绕IFeatureLayer展开

    (4)如果要通过代码向地图中添加或删除图层,就可以这样写了:

  ILayer pLayer = null;//想要添加或删除的图层
  //// 添加
  pMap.AddLayer(pLayer);

  //// 删除
  pMap.DeleteLayer(pLayer);

  //// 删除全部
  pMap.ClearLayers();

 

   本文到这里就结束了,文章写得很肤浅,接口里的有很多接口与属性都没有介绍到,如有需要可以自行查看ArcGIS的帮助文档。如有错误,也欢迎各位大佬的指正,谢谢!

posted on 2023-03-03 19:26  hippy258  阅读(9)  评论(0编辑  收藏  举报