public void CreateContourListFromShapefile()
{
//用反距离IDW插值生成的栅格图像
IInterpolationOp pInterpolationOp;
pInterpolationOp = new RasterInterpolationOpClass();
// Create the input point object
IFeatureClass pFeatureClass;
IFeatureLayer pFeaturelayer;
pFeaturelayer = this.m_mapControl.Map.get_Layer(8) as IFeatureLayer;//这里我的数据在第八层
pFeatureClass = pFeaturelayer.FeatureClass;
// Define the search radius
IRasterRadius pRadius;
pRadius = new RasterRadiusClass();
object maxDistance = Type.Missing;
pRadius.SetVariable(12, ref maxDistance);
//Create FeatureClassDescriptor using a value field
IFeatureClassDescriptor pFCDescriptor;
pFCDescriptor = new FeatureClassDescriptorClass();
pFCDescriptor.Create(pFeatureClass, null, "降雨量500");
//set { cellsize for output raster in the environment
object dCellSize = 0.013;
IRasterAnalysisEnvironment pEnv;
pEnv = new RasterAnalysis();
pEnv = pInterpolationOp as IRasterAnalysisEnvironment;
pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref dCellSize);
object objectbarrier = Type.Missing;
//Perform the interpolation
IGeoDataset rasDataset;
rasDataset = pInterpolationOp.IDW((IGeoDataset)pFCDescriptor, 2, pRadius, ref objectbarrier);
IRaster pOutRaster;
pOutRaster = rasDataset as IRaster;
//Add output into ArcMap as a raster layer
IRasterLayer pOutRasLayer;
pOutRasLayer = new RasterLayerClass();
pOutRasLayer.CreateFromRaster(pOutRaster);
this.m_mapControl.AddLayer(pOutRasLayer,0);
UsingRasterClassifyColorRampRenderer();
}
public static IColor ConvertColorToIColor(Color color)
{
IColor pColor = new RgbColorClass();
pColor.RGB = (int)color.R | (int)(color.G) << 8 | (int)(color.B) << 16;
return pColor;
}
private void UsingRasterClassifyColorRampRenderer() //分级渲染
{
//get { Map
IMap pMap;
pMap = m_mapControl.Map;
//get { raster input from layer
IRasterLayer pRLayer;
pRLayer = (IRasterLayer)pMap.get_Layer(0);
IRaster pRaster;
pRaster = pRLayer.Raster;
//Create classfy renderer and QI RasterRenderer interface
IRasterClassifyColorRampRenderer pClassRen;
pClassRen = new RasterClassifyColorRampRenderer();
IRasterRenderer pRasRen;
pRasRen = pClassRen as IRasterRenderer;
//set { raster for the render and update
pRasRen.Raster = pRaster;
pClassRen.ClassCount = 10;
pRasRen.Update();
//Create a color ramp to use
IAlgorithmicColorRamp pRamp;
pRamp = new AlgorithmicColorRamp();
Color clr=new Color();
clr = Color.FromArgb(255,255,128);
pRamp.FromColor = ConvertColorToIColor(clr);
clr = Color.FromArgb(135, 42, 8);
pRamp.ToColor = ConvertColorToIColor(clr);
pRamp.Size = 10;
bool flag = true;
pRamp.CreateRamp(out flag);
//Create symbol for the classes
IFillSymbol pFSymbol;
pFSymbol = new SimpleFillSymbol();
//loop through the classes and apply the color and label
int I;
for (I = 0; I <= pClassRen.ClassCount - 1;I++ )
{
pFSymbol.Color = pRamp.get_Color(I);// .Color(I);
pClassRen.set_Symbol(I, pFSymbol as ISymbol);
pClassRen.set_Label(I,"等级" + Convert.ToString(I + 1));
} // I
//Update the renderer and plug into layer
pRasRen.Update();
pRLayer.Renderer =(IRasterRenderer) pClassRen;
m_mapControl.ActiveView.Refresh();
// m_mapControl;
this.axTOCControl1.Update();
//Release memeory
pMap = null;
pRLayer = null;
pRaster = null;
pRasRen = null;
pClassRen = null;
pRamp = null;
pFSymbol = null;
}