/// <summary>
/// 获取栅格范围(按属性)
/// </summary>
/// <param name="inRaster">输入栅格</param>
/// <param name="dubRangLow">最低像素值</param>
/// <param name="dubRangHigh">最高像素值</param>
/// <param name="fieldName">字段名称</param>
/// <returns>数据集</returns>
private IGeoDataset GetRasterByRang(IRaster inRaster, double dubRangLow, double dubRangHigh, string fieldName, bool inRang)
{
try
{
//按属性提取栅格
string strFilter = "";
if (inRang)
{
strFilter = fieldName + ">" + dubRangLow.ToString() + " and " + fieldName + "< " + dubRangHigh.ToString();//筛选条件
}
else
{
strFilter = fieldName + "<" + dubRangLow.ToString() + " or " + fieldName + ">" + dubRangHigh.ToString();//筛选条件
}
IExtractionOp2 pExtractionOp = new RasterExtractionOpClass();
IGeoDataset pGeodataset = inRaster as IGeoDataset;
只处理视图范围内
//IRasterAnalysisEnvironment pEnv = pExtractionOp as IRasterAnalysisEnvironment;
//object objSnap = null;
//object objExtent = ArcMap.Document.ActiveView.Extent;
//pEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref objExtent, ref objSnap);
IRasterDescriptor pRasterDescriptor = new RasterDescriptorClass();
IQueryFilter pQueryFilter = new QueryFilterClass();
pQueryFilter.WhereClause = strFilter;
pRasterDescriptor.Create(inRaster, pQueryFilter, fieldName);
IGeoDataset pGeoDataset = pExtractionOp.Attribute(pRasterDescriptor);
return pGeoDataset;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message );
return null;
}
}