ArcGIS Engine点密度分析

在核密度分析的基础上,需指定邻域类型。

IRasterNeighborhood rhn=new RasterNeighborhoodClass();
rnh.setCircle(20,esriGeoAnalysistUnitsEnum.esriUintCells);

全部代码(函数):

        private ILayer pointDensityOp (IFeatureClass pFeatureClass,string pFileName,double pCellSize)
        {
            //定义分析接口
            IDensityOp pDensotyOp = new RasterDensityOpClass();

            //设置分析环境
            IRasterAnalysisEnvironment pEnv = pDensotyOp as IRasterAnalysisEnvironment;
            object obj_cellSize = (object)pCellSize;
            pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref obj_cellSize);

            //设置参数
            object Missing = Type.Missing;

            //设置邻域大小(必需)
            IRasterNeighborhood rnh = new RasterNeighborhoodClass();   //邻域分析
            rnh.SetCircle(20, esriGeoAnalysisUnitsEnum.esriUnitsCells);  //20栅格单元大小

            //定义分析要素类
            IFeatureClassDescriptor pFCD = new FeatureClassDescriptorClass();  //注意别搞错了,是这个类
            pFCD.Create(pFeatureClass, null, pFileName);

            //设置参数
            IRaster pRaster=pDensotyOp.PointDensity(pFCD as IGeoDataset,rnh,ref Missing) as IRaster;



            IRasterLayer pRasterLayer = new RasterLayerClass();

            pRasterLayer.CreateFromRaster(pRaster);

            ILayer pLayer = pRasterLayer as ILayer;

            return pLayer;

        }

猜你喜欢

转载自blog.csdn.net/ScapeD/article/details/82821208