happycatherin  

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;
    }

posted on 2009-07-25 01:09  catherin  阅读(1963)  评论(0编辑  收藏  举报