AE二次开发C#设置RGB、获取当前地图所有图层的要素类、由名称获取图层工具类

28 篇文章 16 订阅
24 篇文章 42 订阅

AE二次开发C#语言地图操作部分工具类

开发环境为ArcGIS Engine 10.2与Visual studio2010。创建一个类加入相关引用(注意动态链接库的导入)。

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;

相关代码

#region 设置RGB
public IRgbColor GetRgbColor(int intR, int intG, int intB)
{
    IRgbColor pRgbColor = null;
    if (intR < 0 || intR > 255 || intG < 0 || intG > 255 || intB < 0 || intB > 255)
    {
        return pRgbColor;
    }
    pRgbColor = new RgbColor();
    pRgbColor.Red = intR;
    pRgbColor.Green = intG;
    pRgbColor.Blue = intB;
    return pRgbColor;
}
#endregion

#region 获取地图要素类
public void GetLstFeatCls(ILayer pLayer, ref List<IFeatureClass> _lstFeatCls)
{
    try
    {
        ILayer pLyr = null;
        ICompositeLayer pComLyr = pLayer as ICompositeLayer;
        if (pComLyr == null)
        {
            IFeatureLayer pFeatLyr = pLayer as IFeatureLayer;
            if (!_lstFeatCls.Contains(pFeatLyr.FeatureClass))
            {
                _lstFeatCls.Add(pFeatLyr.FeatureClass);
            }
        }
        else
        {
            for (int i = 0; i < pComLyr.Count; i++)
            {
                pLyr = pComLyr.get_Layer(i);
                GetLstFeatCls(pLyr, ref _lstFeatCls);
            }
        }
    }
    catch (Exception ex)
    {
    }
}
#endregion

#region 获取当前地图所有图层的要素类
public List<IFeatureClass> GetLstFeatCls(IMap pMap)
{
    List<IFeatureClass> _lstFeatCls = null;
    try
    {
        ILayer pLayer = null;
        IFeatureLayer pFeatLyr = null;
        _lstFeatCls = new List<IFeatureClass>();
        for (int i = 0; i < pMap.LayerCount; i++)
        {
            pLayer = pMap.get_Layer(i);
            pFeatLyr = pLayer as IFeatureLayer;
            GetLstFeatCls(pLayer, ref _lstFeatCls);
        }
    }
    catch (Exception ex)
    {


    }
    return _lstFeatCls;
}
#endregion

#region 由名称获取图层
public IFeatureLayer GetFeatLyrByName(ILayer pLayer, string sFeatLyrName)
{
    ILayer pLyr = null;
    IFeatureLayer pFeatureLyr = null;
    IFeatureLayer pFeatLyr = null;
    ICompositeLayer pComLyr = pLayer as ICompositeLayer;
    if (pComLyr == null)
    {
        pFeatLyr = pLayer as IFeatureLayer;
        if (pFeatLyr.FeatureClass.AliasName == sFeatLyrName)
        {
            pFeatureLyr = pFeatLyr;
            return pFeatureLyr;
        }
    }
    else
    {
        for (int i = 0; i < pComLyr.Count; i++)
        {
            pLyr = pComLyr.get_Layer(i);
            GetFeatLyrByName(pLyr, sFeatLyrName);
        }
    }
    return pFeatureLyr;
} 
#endregion

#region 据图层名称获取图层
public IFeatureLayer GetFeatLyrByName(IMap pMap, string sFeatLyrName)
{
    IFeatureLayer pFeatLyr = null;
    try
    {
        ILayer pLayer = null;
        for (int i = 0; i < pMap.LayerCount; i++)
        {
            pLayer = pMap.get_Layer(i);
            pFeatLyr = GetFeatLyrByName(pLayer, sFeatLyrName);
            if (pFeatLyr != null) break;
        }
    }
    catch (Exception ex){}
    return pFeatLyr;
}
#endregion
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值