『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS Engine 10 开发手册(6-5)使用ArcGIS Engine进行空间插值

ArcGIS Engine 10 开发手册(6-5)使用ArcGIS Engine进行空间插值
在 GIS 的地理空间信息采集过程中,我们对某种地理空间现象或特征进行地理空间测量,都是基于一 种离散的样本测量。

    在 GIS 的地理空间信息采集过程中,我们对某种地理空间现象或特征进行地理空间测量,都是基于一 种离散的样本测量,利用这些有限的采样点数据,而对研究区域内其他未知区域的特征数据进行地理空间 信息的推理和估计,从而构建一个连续的地理特征表面分布,我们把这种地理空间推理计算和估计的方法 称为地理空间插值。


   地理空间插值方法

    GIS 中常用的地理空间插值方法主要包括如下几种:

 

    距离加权倒数空间插值法(IDW)

    自然临近空间插值法

    样条空间插值法

    克里格空间插值法

     趋势空间插值法

     这些地理空间插值方法给我们一种技术手段以供对未知点的推理和估算,其测算结果具有地统计意义,测算结果与样本空间大小及样本空间的分布直接相关,而且这些插值方法在预测估值的时候都有自己的前 提假设,这个假设也就是每一种插值算法的理论前提。ArcGIS Engine 空间插值的方法都定义在 IInt erpolationOp 接口中,现在这个接口已经到了 IInterpolationOp3,下面就是 IInterpolationOp3 接口中 定义的方法:

 

 

 

     和插值相关的接口

     IFeatureClassDescriptor 接口:

 

     IFeatureClassDescriptor 接口被 FeatureClassDescriptor 对象实现,FeatureClassDescriptor 象通过指定一个值字段用来来描述插值的时候所需要的一些信息。

 

     IRasterAnalysisEnvironment 接口:

 

     IRasterAnalysisEnvironment 接口定义了插值后生成栅格的大小,范围,Mask 等。

 

     IRasterRadius 接口: 从这个的字面意思就可以看出这个接口是和距离有关的,没错,我们知道一些插值比如 IDW 就是和距

 

     离有关的,而设置距离的一些信息就定义在这个接口中,这个接口被 RasterRadiusClass 类实现。

 

 

 

      示例:利用ArcGIS Engine实现IDW差值

      代码如下

 

public IGeoDataset IDW (IFeatureClass _pFeatureClass, string _pFieldName, double _pDistance, double _pCell, int _pPower)

 

{

 

  IGeoDataset Geo = _pFeatureClass as IGeoDataset;

  object pExtent = Geo.Extent;

 

  object o = Type.Missing;

 

  IFeatureClassDescriptor pFeatureClassDes = new FeatureClassDescriptorClass ();

 

  pFeatureClassDes.Create (_pFeatureClass, null,_pFieldName);

 

  IInterpolationOp pInterOp = new RasterInterpolationOpClass ();

  IRasterAnalysisEnvironment pRasterAEnv = pInterOp as

 

  IRasterAnalysisEnvironment;

 

  // pRasterAEnv.Mask = Geo;

 

  pRasterAEnv.SetExtent (esriRasterEnvSettingEnum.esriRasterEnvValue, ref pExtent, ref o);

 

  object pCellSize = _pCell; //可以根据不同的点图层进行设置

 

  pRasterAEnv.SetCellSize (esriRasterEnvSettingEnum.esriRasterEnvValue, ref pCellSize);

 

  IRasterRadius pRasterrad = new RasterRadiusClass ();

  object obj = Type.Missing;

  pRasterrad.SetFixed (_pDistance, ref obj);

 

  object pBar = Type.Missing;

 

  IGeoDataset pGeoIDW = pInterOp.IDW (pFeatureClassDes as IGeoDataset, _pPower, pRasterrad, ref pBar);

 

  return pGeoIDW;

 

}

      京ICP备08100627号-22 京公网安备 11010802030428号