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

转载于:https://www.cnblogs.com/GISRSMAN/p/4570542.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值