1、获得要素图层通过UID获取
/// <summary>
/// 获得要素图层UID获取(第一种方法)
/// </summary>
/// <param name="pMap">IMap对象</param>
/// <returns></returns>
public List<IFeatureLayer> GetFeatureLayersUID(IMap pMap)
{
UID uid = new UIDClass();
uid.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";
IEnumLayer Layer = pMap.Layers[uid, true];
ILayer ilayer = Layer.Next();
//遍历地图
while (ilayer != null)
{
pList.Add(ilayer as IFeatureLayer);
ilayer = Layer.Next();
}
return pList;
}
2、
/// <summary>
/// 获得要素图层(递归)(第二种方法)
/// </summary>
/// <param name="pMap">IMap对象</param>
/// <returns></returns>
public List<IFeatureLayer> GetFeatureLayers(IMap pMap)
{
//遍历地图(需要递归判断)
for (int i = 0; i < pMap.LayerCount; i++)
{
GetIFeatureLayer(pMap.get_Layer(i));
}
return pList;
}
/// <summary>
/// 执行得到所有图层/// </summary>
/// <param name="layer">图层对象</param>
/// <returns></returns>
public void GetIFeatureLayer(ILayer layer)
{
if (layer is IFeatureLayer)
{
//获得图层要素
pFeatLayer = layer as IFeatureLayer;
pList.Add(pFeatLayer);
}
else if (layer is CadAnnotationLayer)
{
}
else if (layer is IRasterLayer)
{
}
else if (layer is ILasDatasetLayer)
{
}
else if (layer is IGroupLayer)
{
//遍历图层组
pCompLayer = layer as ICompositeLayer;
getlist(pCompLayer);
}
}
/// <summary>
/// 递归所有图层
/// </summary>
/// <param name="pCompLayer">IGroupLayer中所有的图层</param>
/// <returns></returns>
public void getlist(ICompositeLayer pCompLayer)
{
for (int j = 0; j < pCompLayer.Count; j++)
{
if (pCompLayer.get_Layer(j) is IFeatureLayer)
{
pFeatLayer = pCompLayer.get_Layer(j) as IFeatureLayer;
pList.Add(pFeatLayer);
}
else if (pCompLayer.get_Layer(j) is IGroupLayer)
{
getlist(pCompLayer.get_Layer(j) as ICompositeLayer);
}
else if (pCompLayer.get_Layer(j) is CadAnnotationLayer)
{
continue;
}
else if (pCompLayer.get_Layer(j) is IRasterLayer)
{
continue;
}
else if (pCompLayer.get_Layer(j) is ILasDatasetLayer)
{
continue;
}
}
}