ArcGIS Engine點密度分析
阿新 • • 發佈:2018-12-11
在核密度分析的基礎上,需指定鄰域型別。
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; }