ArcGIS Engine核密度分析

参照原理: 

 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;  //按照参数要求,将双精度数据转为object

pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue,ref object_cellSize); //设置环境参数,栅格大小

设置核密度分析参数

object object_radio_dis = (object)pRadius;  //将双精度转为object
object 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;

        }

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
核密度分析ArcGIS Pro中的一种空间分析方法,用于计算点或线要素在其周围的密度,并赋予权重。在核密度分析中,可以选择点和线要素进行分析。核密度分析的原理是根据距离远近,计算点或线要素在其周围的密度,距离越远,密度越小。\[1\] 在ArcGIS Pro中,进行核密度分析的步骤如下: 1. 准备数据:确保要进行核密度分析的数据已经导入到ArcGIS Pro中。 2. 打开核密度分析对话框:在工具箱中找到核密度分析工具,并打开对话框。 3. 选择要素类型:在对话框中选择要进行核密度分析的点或线要素。 4. 设置参数:根据需要设置核密度分析的参数,如搜索半径、输出栅格大小等。 5. 运行分析:点击运行按钮,开始进行核密度分析。 6. 查看结果:分析完成后,可以查看生成的核密度图或栅格数据,以及相关的统计信息。 需要注意的是,核密度分析是一种空间分析方法,可以帮助我们了解点或线要素在空间上的分布情况和密度变化。它在城市规划、环境研究、人口分布等领域有广泛的应用。\[2\]在ArcGIS Pro中进行核密度分析时,可以结合其他空间分析方法和可视化技术,进一步分析和展示结果。\[3\] #### 引用[.reference_title] - *1* *2* [如何基于ArcGIS的进行密度分析](https://blog.csdn.net/mrib/article/details/107174980)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ArcGIS Pro实践二:基于核密度构建时空体素](https://blog.csdn.net/weixin_42632778/article/details/112535603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值