1. 程式人生 > >ArcGIS Engine點密度分析

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;

        }