首页 > 编程知识 正文

arcmap核密度分析步骤,arcgis核密度分析步骤

时间:2023-05-03 19:14:38 阅读:243165 作者:2527

参照原理: 

 ArcGIS核密度分析原理

使用模块:

using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.GeoAnalyst;using ESRI.ArcGIS.SpatialAnalyst;

主要函数:

IDensityOp.KernelDensity()

参数:

IGeodataset(必选):表示输入要素的数据集,可以是指定计数字段的数据集描述,也可以是数据集。ref object radiusDiastance(可选):表示搜索范围ref object scalefactor(可选):表示缩放因子

注意:如果要不选择可选要素时,必须使用Type.Missing补空位。

实现步骤:

通过IRasterAnalysisEnviroment接口设置输出大小和处理范围等调用IFeatureClassDescriptor接口的Create方法设置输入要素及计数字段(即Population)设置搜索半径调用IDensityOp接口的KernelDensity方法,返回核密度分析结果(IGeoDataset类型)显示核密度分析结果 将IGeoDataset转为IRaster将IRaster转为IRasterLayer将IRasterLayer转为ILayer添加到显示

代码实现:

调用IFeatureClassDescriptor接口的Create方法设置输入要素及计数字段(即Population)

IFeatureClassDescriptor pIFCD = new FeatureClassDescriptorClass(); //GeoAnalyst模块pIFCD.Create(pFeatureClass, null, pFiledName); //获得字段

通过IRasterAnalysisEnviroment接口设置输出大小和处理范围等

IDensityOp pDensityOp = new RasterDensityOpClass(); //SpatialAnalyst模块//设置环境IRasterAnalysisEnvironment pEnv = pDensityOp as IRasterAnalysisEnvironment; //将栅格分析转为环境//设置参数object object_cellSize = (object)pCellSize; //按照参数要求,将双精度数据转为objectpEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue,ref object_cellSize); //设置环境参数,栅格大小

设置核密度分析参数

object object_radio_dis = (object)pRadius; //将双精度转为objectobject Missing = Type.Missing; //反射默认字段,补空位时使用

调用IDensityOp接口的KernelDensity方法,返回核密度分析结果

//核密度分析方法生成栅格数据IRaster pRaster = pDensityOp.KernelDensity(pIFCD as IGeoDataset, ref object_radio_dis, ref Missing) as IRaster; //补参数空位时使用

显示核密度分析结果

IRasterLayer pRasterLaye = new RasterLayerClass();pRasterLaye.CreateFromRaster(pRaster);ILayer pLayer = pRasterLaye as ILayer;

全部代码(方法):

private ILayer KernelDensityOp(IFeatureClass pFeatureClass, string pFiledName, double pCellSize,double pRadius) { //获得要素的属性值字段 //转为可遍历字段的栅格统计类型 IFeatureClassDescriptor pIFCD = new FeatureClassDescriptorClass(); //GeoAnalyst模块 pIFCD.Create(pFeatureClass, null, pFiledName); //获得字段 IDensityOp pDensityOp = new RasterDensityOpClass(); //SpatialAnalyst模块 //设置环境 IRasterAnalysisEnvironment pEnv = pDensityOp as IRasterAnalysisEnvironment; //将栅格分析转为环境 //设置参数 object object_cellSize = (object)pCellSize; //按照参数要求,将双精度数据转为object pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue,ref object_cellSize); //设置环境参数 object object_radio_dis = (object)pRadius; //将双精度转为object object Missing = Type.Missing; //反射默认字段,补空位时使用 //核密度分析方法生成栅格数据 IRaster pRaster = pDensityOp.KernelDensity(pIFCD as IGeoDataset, ref object_radio_dis, ref Missing) as IRaster; //补参数空位时使用 IRasterLayer pRasterLaye = new RasterLayerClass(); pRasterLaye.CreateFromRaster(pRaster); ILayer pLayer = pRasterLaye as ILayer; return pLayer; }

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。