Exemple #1
0
        private void btnGO_Click(object sender, EventArgs e)
        {
            IFeatureClass pInPointFClass = null;//������������������
            IFeatureClass pLineBarrierFClass = null;//�����������ϰ���
            IWorkspace pWorkspace;

            string fileName;
            string rasterPath;
            string shpFile;
            int startX, endX;
            string sFieldName;//ѡ��Ҫ���з������ֶ�
            if (bDataPath == true)
            {
                fileName = comboBoxInPoint.Text;
                string shpDir = fileName.Substring(0, fileName.LastIndexOf("\\"));
                startX = fileName.LastIndexOf("\\");
                endX = fileName.Length;
                shpFile = fileName.Substring(startX + 1, endX - startX - 1);
                pInPointFClass = Utility.OpenFeatureClassFromShapefile(shpDir, shpFile);
            }
            else
            {
                pInPointFClass = GetFeatureFromMapLyr(comboBoxInPoint.Text);
            }
            if (bDataLinePath == true)
            {
                fileName = comboBoxBarrier.Text;
                string shpDir = fileName.Substring(0, fileName.LastIndexOf("\\"));
                startX = fileName.LastIndexOf("\\");
                endX = fileName.Length;
                shpFile = fileName.Substring(startX + 1, endX - startX - 1);
                pLineBarrierFClass = Utility.OpenFeatureClassFromShapefile(shpDir, shpFile);
            }
            else
            {
                pLineBarrierFClass = GetFeatureFromMapLyr(comboBoxBarrier.Text);
            }
            IFeatureLayer pFeatLayer = new FeatureLayerClass();
            pFeatLayer.FeatureClass = pInPointFClass;
            rasterPath = txtOutputRasterPath.Text;
            IFeatureClassDescriptor pFeatClsDes = new FeatureClassDescriptorClass();
            if (comboBoxZValueField.Text != "��")
                pFeatClsDes.Create(pInPointFClass, null, comboBoxZValueField.Text);
            else
                pFeatClsDes.Create(pInPointFClass, null, "");
            try
            {
                IInterpolationOp pInterpolationOp = new RasterInterpolationOpClass();
                string sCellSize = txtCellSize.Text;
                double dCellSize = Convert.ToDouble(sCellSize);
                IRasterRadius pRsRadius = new RasterRadiusClass();
                string sPower=txtWeightValue.Text;
                double dPower=Convert.ToDouble(sPower);
                if(comboBoxSearchRadius.Text == "�仯")
                {
                    string sPointNums=txtPointNumbers.Text;
                    int iPointNums=Convert.ToInt32(sPointNums);
                    double maxDis=Convert.ToDouble(txtDisMaxValue.Text);
                    object objMaxDis=maxDis;
                    pRsRadius.SetVariable(iPointNums,ref objMaxDis);
                }
                else
                {
                    string sDistance=txtDisValue.Text;
                    double dDistance=Convert.ToDouble(sDistance);
                    double maxPointNums=Convert.ToDouble(txtMaxPointNums.Text);
                    object objMinPointNums=maxPointNums;
                    pRsRadius.SetFixed(dDistance,ref objMinPointNums);
                }

                pInterpolationOp = Utility.SetRasterInterpolationAnalysisEnv(rasterPath, dCellSize, pFeatLayer);
                object objLineBarrier=null;
                if (chkBarrier.Checked == true)
                {
                    objLineBarrier=comboBoxBarrier;
                }
                else
                {
                    objLineBarrier = Type.Missing;
                }
                IRaster pOutRaster = null;
                pOutRaster = pInterpolationOp.IDW(pFeatClsDes as IGeoDataset, dPower, pRsRadius, ref objLineBarrier) as IRaster;

                //��ɫ
                IRasterLayer pRasterLayer = new RasterLayerClass();
                pRasterLayer.Name = "������դ��";
                Utility.ConvertRasterToRsDataset(rasterPath, pOutRaster, "������դ��");
                pRasterLayer = Utility.SetRsLayerClassifiedColor(pOutRaster);
                pMainFrm.getMapControl().AddLayer(pRasterLayer, 0);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

            }
        }
Exemple #2
0
        private void iDW空间差值ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //用反距离IDW插值生成的栅格图像
            IInterpolationOp pInterpolationOp = new RasterInterpolationOpClass();

            // 输入点图层
            IFeatureClass pFeatureClass;
            IFeatureLayer pFeaturelayer;
            int           indexLayer = Convert.ToInt32(Interaction.InputBox("请输入IDW空间插值点图层下标", "字符串", "", 500, 250));

            pFeaturelayer = this.axMapControl1.Map.get_Layer(indexLayer) as IFeatureLayer;
            pFeatureClass = pFeaturelayer.FeatureClass;

            // Define the search radius
            IRasterRadius pRadius     = new RasterRadiusClass();
            object        maxDistance = Type.Missing;

            pRadius.SetVariable(12, ref maxDistance);

            //Create FeatureClassDescriptor using a value field
            IFeatureClassDescriptor pFCDescriptor = new FeatureClassDescriptorClass();
            string zValue = Interaction.InputBox("请输入特征字段(yelvsuA/FYyelvsuA)", "字符串", "", 500, 250);

            pFCDescriptor.Create(pFeatureClass, null, zValue);

            //set { cellsize for output raster in the environment
            object dCellSize = 113.039027413432;
            IRasterAnalysisEnvironment pEnv = new RasterAnalysis();

            pEnv = pInterpolationOp as IRasterAnalysisEnvironment;
            pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref dCellSize);
            object objectbarrier = Type.Missing;

            //Perform the interpolation
            IGeoDataset rasDataset = pInterpolationOp.IDW((IGeoDataset)pFCDescriptor, 2, pRadius, ref objectbarrier);
            IRaster     pOutRaster = rasDataset as IRaster;

            //Add output into ArcMap as a raster layer
            IRasterLayer pOutRasLayer = new RasterLayerClass();

            pOutRasLayer.CreateFromRaster(pOutRaster);
            this.axMapControl1.AddLayer(pOutRasLayer, 0);
            axMapControl1.ActiveView.Refresh();

            DialogResult dr = MessageBox.Show("插值成功,请选择是否进行分级渲染", "分级渲染选择",
                                              MessageBoxButtons.OKCancel, MessageBoxIcon.Information);

            if (dr == DialogResult.OK)
            {
                //用户选择确认的操作(分级渲染)
                IRasterLayer pRasterLayer = null;
                for (int i = 0; i < axMapControl1.LayerCount; i++)
                {
                    if (axMapControl1.get_Layer(i) is IRasterLayer)
                    {
                        pRasterLayer = axMapControl1.get_Layer(i) as IRasterLayer;
                    }
                }
                if (pRasterLayer == null)
                {
                    MessageBox.Show("当前图层不存在栅格图层");
                    return;
                }
                int number = Convert.ToInt32(Interaction.InputBox("请输入栅格影像分类数量(默认为10)", "字符串", "", 500, 250));
                if (number == 0)
                {
                    number = 10;
                }
                funColorForRaster_Classify(pRasterLayer, number);
                axMapControl1.ActiveView.Refresh();
            }
            else if (dr == DialogResult.Cancel)
            {
                //用户选择取消的操作
                return;
            }
        }
        public static void Mlayer_IDW_Click()
        {
            // 用反距离IDW插值生成的栅格图像。如下:
               IInterpolationOp pInterpolationOp = new RasterInterpolationOpClass();

               IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
               string pPath = Application.StartupPath + @"\MakeContours\Cont.shp";
               string pFolder = System.IO.Path.GetDirectoryName(pPath);
               string pFileName = System.IO.Path.GetFileName(pPath);

               IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pFolder, 0);

               IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
               IFeatureClass oFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFileName);
               IFeatureClassDescriptor pFCDescriptor = new FeatureClassDescriptorClass();
               pFCDescriptor.Create(oFeatureClass, null, "shape.z");
               IRasterRadius pRadius = new RasterRadiusClass();

               object objectMaxDistance = null;
               object objectbarrier = null;
               object missing = Type.Missing;
               pRadius.SetVariable(12, ref objectMaxDistance);

               object dCellSize =1;
               object snapRasterData = Type.Missing;
               IEnvelope pExtent;
               pExtent = new EnvelopeClass();
               Double xmin = 27202;
               Double xmax = 31550;

               Double ymin = 19104;
               Double ymax = 22947;
               pExtent.PutCoords(xmin, ymin, xmax, ymax);
               object extentProvider = pExtent;
               IRasterAnalysisEnvironment pEnv = pInterpolationOp as IRasterAnalysisEnvironment;
               pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref dCellSize);
               pEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extentProvider, ref snapRasterData);
               IGeoDataset poutGeoDataset = pInterpolationOp.IDW((IGeoDataset)pFCDescriptor, 2, pRadius, ref objectbarrier);
               ISurfaceOp surOp = new RasterSurfaceOpClass();

               IRaster pOutRaster = poutGeoDataset as IRaster;

               IRasterLayer pOutRasLayer = new RasterLayer();
               pOutRasLayer.CreateFromRaster(pOutRaster);

               IMap pMap = Common.DataEditCommon.g_pMap;
               pMap.AddLayer(pOutRasLayer);
               Common.DataEditCommon.g_axTocControl.Refresh();
               Common.DataEditCommon.g_pAxMapControl.ActiveView.Refresh();
        }
Exemple #4
0
        private void btnGO_Click(object sender, EventArgs e)
        {
            IFeatureClass pInPointFClass;     //获得输入点特征数据类
            IFeatureClass pLineBarrierFClass; //获得输入的线障碍类

            String fileName;
            String rasterPath;
            String shpFile;
            int    startX, endX;

            //选择要进行分析的字段
            if (bDataPath == true)
            {
                fileName = comboBoxInPoint.Text;
                String shpDir = fileName.Substring(0, fileName.LastIndexOf("\\"));
                startX  = fileName.LastIndexOf("\\");
                endX    = fileName.Length;
                shpFile = fileName.Substring(startX + 1, endX - startX - 1);
                IWorkspaceFactory pWorkspaceFactory;
                pWorkspaceFactory = new ShapefileWorkspaceFactory();
                IFeatureWorkspace pFWS;
                pFWS = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(shpDir, 0);

                pInPointFClass = pFWS.OpenFeatureClass(shpFile);
            }
            else
            {
                pInPointFClass = GetFeatureFromMapLyr(comboBoxInPoint.Text);
            }

            if (bDataLinePath == true && chkBarrier.Checked)
            {
                fileName = comboBoxBarrier.Text;
                String shpDir = fileName.Substring(0, fileName.LastIndexOf("\\"));
                startX  = fileName.LastIndexOf("\\");
                endX    = fileName.Length;
                shpFile = fileName.Substring(startX + 1, endX - startX - 1);
                IWorkspaceFactory pWorkspaceFactory;
                pWorkspaceFactory = new ShapefileWorkspaceFactory();
                IFeatureWorkspace pFWS;
                pFWS = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(shpDir, 0);
                pLineBarrierFClass = pFWS.OpenFeatureClass(shpFile);
            }
            else if (chkBarrier.Checked)
            {
                pLineBarrierFClass = GetFeatureFromMapLyr(comboBoxBarrier.Text);
            }
            IFeatureLayer pFeatLayer = new FeatureLayerClass();

            pFeatLayer.FeatureClass = pInPointFClass;
            rasterPath = txtOutputRasterPath.Text;
            //查询过滤器

            //'FeatureClassDescriptor
            //这个对象主要用于提供访问控制FeatureClass descriptor的成员;例如,定义FeatureClass的那个属性作为分析操作。
            IFeatureClassDescriptor pFeatClsDes = new FeatureClassDescriptorClass();

            if (comboBoxZValueField.Text != "无")
            {
                pFeatClsDes.Create(pInPointFClass, null, comboBoxZValueField.Text);
            }
            else
            {
                pFeatClsDes.Create(pInPointFClass, null, "");
            }

            try
            {
                IInterpolationOp pInterpolationOp = new RasterInterpolationOpClass();
                String           sCellSize        = txtCellSize.Text;
                String           sPower           = txtWeightValue.Text;
                if (Convert.ToDouble(sCellSize) <= 0 || sPower == "")
                {
                    MessageBox.Show("还没输入权重值或栅格单元!请输入后在进行插值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                double dCellSize = Convert.ToDouble(sCellSize);
                double dPower    = Convert.ToDouble(sPower);

                IRasterRadius pRsRadius = new RasterRadiusClass();
                if (comboBoxSearchRadius.Text == "变化")
                {
                    String sPointNums = txtPointNumbers.Text;
                    if (sPointNums != "")
                    {
                        int iPointNums = Convert.ToInt32(sPointNums);
                        if (txtDisMaxValue.Text != "")
                        {
                            double maxDis    = Convert.ToDouble(txtDisMaxValue.Text);
                            object objMaxDis = maxDis as object;
                            pRsRadius.SetVariable(iPointNums, ref objMaxDis);
                        }
                        else
                        {
                            object objMaxDis = null;
                            pRsRadius.SetVariable(iPointNums, ref objMaxDis);
                        }
                    }
                    else
                    {
                        MessageBox.Show("还没输入点的数目!请输入后在进行插值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }
                else
                {
                    String sDistance = txtDisValue.Text;
                    if (sDistance != "")
                    {
                        double dDistance = Convert.ToDouble(sDistance);
                        if (txtMaxPointNums.Text != "")
                        {
                            double maxPointNums    = Convert.ToDouble(txtMaxPointNums.Text);
                            object objMinPointNums = maxPointNums as object;
                            pRsRadius.SetFixed(dDistance, ref objMinPointNums);
                        }
                        else
                        {
                            object objMinPointNums = null;
                            pRsRadius.SetFixed(dDistance, ref objMinPointNums);
                        }
                    }
                    else
                    {
                        MessageBox.Show("还没输入距离的值!请输入后在进行插值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }

                pInterpolationOp = SetRasterInterpolationAnalysisEnv(rasterPath, dCellSize, pFeatLayer);
                object objLineBarrier = null;
                if (chkBarrier.Checked == true)
                {
                    objLineBarrier = comboBoxBarrier;
                }
                else
                {
                    objLineBarrier = Type.Missing;
                }


                IRaster pOutRaster;
                pOutRaster = (IRaster)pInterpolationOp.IDW((IGeoDataset)pFeatClsDes, dPower, pRsRadius, ref objLineBarrier);
                //着色
                IRasterLayer pRasterLayer = new RasterLayerClass();
                pRasterLayer.Name = "反距离栅格";
                ConvertRasterToRsDataset(rasterPath, ref pOutRaster, "反距离栅格");
                pRasterLayer = SetRsLayerClassifiedColor(pOutRaster);
                frm.mainMapControl.AddLayer(pRasterLayer, 0);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #5
0
        public void CreateRasterFromPoints(IMap pMap, IFeatureLayer pp,String Path, String Name, String Field)
        {
            //1.��Shape�ļ���ȡ��FeatureClass
            //2.����FeatureClass����IFeatureClassDescriptor
            //3.����IRasterRaduis ����
            //����Cell
            //4.��ֵ�����ɱ���
            object obj = null;

            IWorkspaceFactory pShapSpace;

            pShapSpace = new ShapefileWorkspaceFactory();

            IWorkspace pW;

            pW = pShapSpace.OpenFromFile(Path, 0);

            IFeatureWorkspace pFeatureWork;

            pFeatureWork = pW as IFeatureWorkspace;

            IFeatureClass pFeatureClass = pFeatureWork.OpenFeatureClass("Name");

            IGeoDataset Geo = pFeatureClass as IGeoDataset;

            object extend = Geo.Extent;

            object o = null;

            IFeatureClassDescriptor pFeatureClassDes = new FeatureClassDescriptorClass();

            pFeatureClassDes.Create(pFeatureClass, null, Field);

            IRasterRadius pRasterrad = new RasterRadiusClass();

            pRasterrad.SetVariable(10, ref obj);

            object dCell = 0.5;//���Ը��ݲ�ͬ�ĵ�ͼ���������

            IInterpolationOp Pinterpla = new RasterInterpolationOpClass();

            IRasterAnalysisEnvironment pRasterAnaEn = Pinterpla as IRasterAnalysisEnvironment;

            pRasterAnaEn.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref dCell);

            pRasterAnaEn.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extend, ref o);

            IGeoDataset pGRaster;

            object hh = 3;

            pGRaster = Pinterpla.IDW((IGeoDataset)pFeatureClassDes , 2, pRasterrad, ref hh);

            ISurfaceOp pSurF;

            pSurF = new RasterSurfaceOpClass();

            IGeoDataset pCour;

            object  o1 = 0;

            pCour = pSurF.Contour(pGRaster, 5, ref o1);

            IFeatureLayer pLa;

            pLa = new FeatureLayerClass();

            IFeatureClass pClass = pCour as IFeatureClass;

            pLa.FeatureClass = pClass;

            pLa.Name = pClass.AliasName;

            pMap.AddLayer(pLa as ILayer);
        }
Exemple #6
0
        public IGeoDataset GetIDW(IFeatureClass _pFeatureClass, string _pFieldName, double _pDistance, double _pCell, int _pPower)
        {
            IGeoDataset Geo = _pFeatureClass as IGeoDataset;
               object pExtent = Geo.Extent;
               object o = Type.Missing;
               IFeatureClassDescriptor pFeatureClassDes = new FeatureClassDescriptorClass();
               pFeatureClassDes.Create(_pFeatureClass, null, _pFieldName);
               IInterpolationOp pInterOp = new RasterInterpolationOpClass();
               IRasterAnalysisEnvironment pRasterAEnv = pInterOp as IRasterAnalysisEnvironment;

              // pRasterAEnv.Mask = Geo;
               pRasterAEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref pExtent, ref o);

               object pCellSize = _pCell;//���Ը��ݲ�ͬ�ĵ�ͼ���������

               pRasterAEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref pCellSize);

               IRasterRadius pRasterrad = new RasterRadiusClass();
               object obj = Type.Missing;
              // pRasterrad.SetFixed(_pDistance, ref obj);
               pRasterrad.SetVariable(12);

               object pBar = Type.Missing;

               IGeoDataset pGeoIDW = pInterOp.IDW(pFeatureClassDes as IGeoDataset, _pPower, pRasterrad, ref pBar);

               return pGeoIDW;
        }
Exemple #7
0
        private void btnGO_Click(object sender, EventArgs e)
        {
            IFeatureClass pInPointFClass;//   '获得输入点特征数据类

            String fileName;
            String rasterPath;
            String shpFile;
            int    startX, endX;

            if (bDataPath == true)
            {
                fileName = comboBoxInPoint.Text;
                String shpDir = fileName.Substring(0, fileName.LastIndexOf("\\"));
                startX  = fileName.LastIndexOf("\\");
                endX    = fileName.Length;
                shpFile = fileName.Substring(startX + 1, endX - startX - 1);
                IWorkspaceFactory pWorkspaceFactory;
                pWorkspaceFactory = new ShapefileWorkspaceFactory();
                IFeatureWorkspace pFWS;
                pFWS = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(shpDir, 0);

                pInPointFClass = pFWS.OpenFeatureClass(shpFile);
            }
            else
            {
                pInPointFClass = GetFeatureFromMapLyr(comboBoxInPoint.Text);
            }

            IFeatureLayer pFeatLayer = new FeatureLayerClass();

            pFeatLayer.FeatureClass = pInPointFClass;
            rasterPath = txtOutputRasterPath.Text;

            //'FeatureClassDescriptor
            //这个对象主要用于提供访问控制FeatureClass descriptor的成员;例如,定义FeatureClass的那个属性作为分析操作。
            IFeatureClassDescriptor pFeatClsDes = new FeatureClassDescriptorClass();

            if (comboBoxZValueField.Text != "无")
            {
                pFeatClsDes.Create(pInPointFClass, null, comboBoxZValueField.Text);
            }
            else
            {
                pFeatClsDes.Create(pInPointFClass, null, "");
            }

            try
            {
                IInterpolationOp pInterpolationOp = new RasterInterpolationOpClass();
                String           sCellSize        = txtCellSize.Text;

                if (Convert.ToDouble(sCellSize) <= 0)
                {
                    MessageBox.Show("还没输入栅格单元!请输入后在进行插值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                double dCellSize = Convert.ToDouble(sCellSize);

                IRasterRadius pRsRadius = new RasterRadiusClass();
                if (comboBoxSearchRadius.Text == "变化")
                {
                    String sPointNums = txtPointNumbers.Text;
                    if (sPointNums != "")
                    {
                        int iPointNums = Convert.ToInt32(sPointNums);
                        if (txtDisMaxValue.Text != "")
                        {
                            double maxDis    = Convert.ToDouble(txtDisMaxValue.Text);
                            object objMaxDis = maxDis;
                            pRsRadius.SetVariable(iPointNums, ref objMaxDis);
                        }
                        else
                        {
                            object objMaxDis = null;
                            pRsRadius.SetVariable(iPointNums, ref objMaxDis);
                        }
                    }
                    else
                    {
                        MessageBox.Show("还没输入点的数目!请输入后在进行插值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }
                else
                {
                    String sDistance = txtDisValue.Text;
                    if (sDistance != "")
                    {
                        double dDistance = Convert.ToDouble(sDistance);
                        if (txtMaxPointNums.Text != "")
                        {
                            double maxPointNums    = Convert.ToDouble(txtMaxPointNums.Text);
                            object objMinPointNums = maxPointNums;
                            pRsRadius.SetFixed(dDistance, ref objMinPointNums);
                        }
                        else
                        {
                            object objMinPointNums = null;
                            pRsRadius.SetFixed(dDistance, ref objMinPointNums);
                        }
                    }
                    else
                    {
                        MessageBox.Show("还没输入距离的值!请输入后在进行插值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }

                pInterpolationOp = SetRasterInterpolationAnalysisEnv(rasterPath, dCellSize, pFeatLayer);

                esriGeoAnalysisSemiVariogramEnum semi = esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisNoneVariogram;
                if (RadioOrdinary.Checked)
                {
                    switch (ComboBoxMethod.SelectedIndex)
                    {
                    case 0:
                        semi = esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisSphericalSemiVariogram;
                        break;

                    case 1:
                        semi = esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisCircularSemiVariogram;
                        break;

                    case 2:
                        semi = esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisExponentialSemiVariogram;
                        break;

                    case 3:
                        semi = esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisGaussianSemiVariogram;
                        break;
                    }
                }
                else
                {
                    switch (ComboBoxMethod.SelectedIndex)
                    {
                    case 0:
                        semi = esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisUniversal1SemiVariogram;
                        break;

                    case 1:
                        semi = esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisUniversal2SemiVariogram;
                        break;
                    }
                }
                IRaster pOutRaster;
                object  barrier = null;

                pOutRaster = (IRaster)pInterpolationOp.Krige((IGeoDataset)pFeatClsDes, semi, pRsRadius, true, ref barrier);
                //着色
                IRasterLayer pRasterLayer = new RasterLayerClass();
                pRasterLayer.Name = "反距离栅格";
                ConvertRasterToRsDataset(rasterPath, ref pOutRaster, "反距离栅格");
                pRasterLayer = SetRsLayerClassifiedColor(pOutRaster);
                frm.mainMapControl.AddLayer(pRasterLayer, 0);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void kriging(IFeatureClass pFeatureClass)
        {
            //  FeatureClassDescriptor 对象用于控制和描述插值的参数

             IFeatureClassDescriptor pFDescr = new FeatureClassDescriptorClass();
             pFDescr.Create(pFeatureClass, null, "Ozone");

             // 栅格半径辅助对象用于控制插值的参数
             IRasterRadius pRasRadius = new RasterRadiusClass();
             object object_Missing = System.Type.Missing;

             pRasRadius.SetVariable(12, ref object_Missing);

             IInterpolationOp pInterpOp = new RasterInterpolationOpClass();

             IRaster pRasterOut = (IRaster)pInterpOp.Krige((IGeoDataset)pFDescr,
                 esriGeoAnalysisSemiVariogramEnum.esriGeoAnalysisExponentialSemiVariogram,
                 pRasRadius, false, ref object_Missing);
        }