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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM