private void IDWpointToRaster()
{
IFeatureLayer pLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
IFeatureLayer pExtentLyr = axMapControl1.get_Layer(1) as IFeatureLayer;
IFeatureClass pExtentClass = pExtentLyr.FeatureClass;
IFeatureClass pFtClass = pLayer.FeatureClass;
IRasterRadius pRsterRiadius = new RasterRadiusClass();
int count = 100;
//object MaxDistance = Type.Missing;
object MaxDistance = 10;
pRsterRiadius.SetVariable(count, ref MaxDistance);
IFeatureClassDescriptor pDes = new FeatureClassDescriptorClass();
pDes.Create(pFtClass, null, "AQI");
IInterpolationOp2 pInterOP = new RasterInterpolationOpClass();
IRasterAnalysisEnvironment pEnv = new RasterAnalysisClass();
pEnv = pInterOP as IRasterAnalysisEnvironment;
object cellsize = 0.014800000;
pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref cellsize);
IGeoDataset pGeo = pExtentClass as IGeoDataset;
object extent = pGeo.Extent;
object missing = Type.Missing;
//pEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvMaxOf, ref extent, ref missing);
//IGeoDataset pGeo2 = pExtentClass as IGeoDataset;//选择插值范围
//pEnv.Mask = pGeo2;
IRaster pRaster;
IRasterLayer pRasterLyr = new RasterLayerClass();
IGeoDataset pGeoDataSet;
object Barrier = Type.Missing;
pGeoDataSet = pInterOP.IDW((IGeoDataset)pDes, 9, pRsterRiadius, ref Barrier);
pRaster = pGeoDataSet as IRaster;
pRasterLyr.CreateFromRaster(pRaster);
//axMapControl1.ClearLayers();
axMapControl1.AddLayer(pRasterLyr,2);
//开始渲染
IMap pMap = axMapControl1.Map;
IRasterLayer pRasterlayer = pMap.get_Layer(2) as RasterLayer;
IRaster pRaster1;
pRaster1 = pRasterlayer.Raster;
IRasterClassifyColorRampRenderer pClassRender = new RasterClassifyColorRampRendererClass();
IRasterRenderer pRasterRender = pClassRender as IRasterRenderer;
//获取直方图
IRasterBandCollection IRBandCo = pRaster1 as IRasterBandCollection;
IRasterBand pRasterband = IRBandCo.Item(0);
if (pRasterband.Histogram == null)
{
pRasterband.ComputeStatsAndHist();//生成直方图
}
pRasterRender.Raster = pRaster1;
pClassRender.ClassCount = 6;//10
pRasterRender.Update();
IEnumColors pEnumColor;
pEnumColor = CreateColor();
ISimpleFillSymbol pFillSymbol = new SimpleFillSymbolClass();
string[] classfy ={"优","良","轻度污染","中度污染","严重污染","重度污染"};
for (int i = 0; i < pClassRender.ClassCount; i++)
{
pFillSymbol.Color = pEnumColor .Next ();
pClassRender.set_Symbol(i , pFillSymbol as ISymbol);
pClassRender.set_Label(i, "污染等级 = " + classfy [i]);
}
pRasterRender.Update();
pRasterLyr.Renderer = pClassRender as IRasterRenderer;
//CaiJian(pGeoDataSet ,pGeo ,true);//裁剪方法
axMapControl1.ActiveView.Refresh();
axTOCControl1.Update();
}