在核密度分析的基础上,需指定邻域类型。
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;
}