zoukankan      html  css  js  c++  java
  • ae 获得ILayer图层的别名

    mxd中,一般图层的名称与其真实的
    shp或影像文件名称不相同(注记图层一般放在mdb或gdb中,其在mxd中显示时的名称与其本身一样,直接使用lyr.name即可),使用ILayer的name属性,只能获取此图层在mxd中的别名,获取文件名称,需要将图层先转换成IDataLayer,将此对象的DatasourceName属性
    转换成IDatasetName类型,然后获取IDatasetName的Name属性,此即为图层的真实文件名称。

    一、所有图层适用

    //Author:AllenRobin http://gisrsman.cnblogs.com
    ArrayList listName = new ArrayList();
    ArrayList listAlias = new ArrayList();
    string layerName = "";
    string layerAliasName="";
    
    for (int i = 0; i < mapcontrol.LayerCount; i++)
       {
         ILayer layer = mapcontrol.get_Layer(i);
         layerName = layer.Name;
         layerAliasName = layer.Name;
    
         IDataLayer2 pFd = layer as IDataLayer2;
          if (pFd != null)
          {
            if (pFd.DataSourceName is IDatasetName)
              {
                 //获取原始名称  
                 IDatasetName pDN = pFd.DataSourceName as IDatasetName;
                   layerAliasName = pDN.Name;
                 }
            }
     listName.Add(layerName);
     listAlias.Add(layerAliasName);
    }

    二、如果仅仅是矢量图层的话

    ILayer pLayer = m_Map.get_Layer(i);      //从map中取到一个ILayer对象
    IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;    //强转为IFeatureLayer对象
    string layerName = pFeatureLayer.FeatureClass.AliasName;   //获取别名

    三、获得IFeatureClass的Name名称

    IFeatureClass只有AliasName属性,没有Name属性。需要先转到IDataset接口。

     IDataset pDataset = featureClass as IDataset;
     string pName = pDataset.Name;

    参照:

    http://www.cnblogs.com/feilong3540717/archive/2011/08/24/2151790.html

    http://blog.csdn.net/muzai/article/details/5807266

    版权声明:本博原创文章可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途。如需转载,请在转载时声明作者、保留出处。本人保留对本文的一切权利。 作者:AllenRobin Blog:http://gisrsman.cnblogs.com
  • 相关阅读:
    寻找金秋
    两个周末,两个湖
    桂花林上,再读“六项精进”
    锄奸杜幸,穷寇勿追
    招聘所见思考
    Xufun’s Node.js Primer
    我的软件过程,一年再读
    企业的生命期限,和组织的危机感
    头痛,偷闲,拾黄叶
    喝酒这件事,和等绿灯的习惯
  • 原文地址:https://www.cnblogs.com/GISRSMAN/p/4570542.html
Copyright © 2011-2022 走看看