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