• PIE SDK克里金插值法


     

    1.算法功能简介

        克里金插值法基于一般最小二乘法的随机插值技术没用方差图作为权重函数,被应用于任何点数据估计其在地表上分布的现象,被称为空间自协方差最佳插值法,是一种最优内插法也是一种最常用的空间插值算法,例如地质学中的地下水位和土壤湿度的采样;环境科学研究中的大气污染(例如臭氧)和土壤污染物的研究;以及大气科学中的近地面风场、气温、降水等的单点观测。

     

        PIE支持算法功能的执行,下面对等值线生成算法功能进行介绍。

    2.算法功能实现说明

    2.1. 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2. 算法参数

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo. KrigingInterpolationAlgo

    参数结构体

    KrigingInterpolation_Exchange_Info

    参数说明

    CellSize

    double

    像元大小

    FieldIndex

    Int

    字段索引

    Height

    Int

    输出栅格高

    Width

    int

    输出栅格宽度

    InputFeatureDataset

    IFeatureDataset

    输入数据集

    OutputRasterDataset

    IRasterDataset

    输出数据集

    OutputRasterFilePath

    string

    输出的栅格数据文件路径(*.tif;*.tiff) 【输出信息】

    OutputRasterType

    string

    输出栅格类型

    SearchMaxDis

    double

    搜索最大距离

    SearchPoints

    int

    搜索点数

    2.3. 示例代码

    数据路径

    百度云盘地址下/PIE示例数据/矢量数据/Shape/省会城市.shp

    视频路径

    百度云盘地址下/PIE视频教程/10.算法调用/实用工具/克里金插值算.avi

    示例代码

     1          /// <summary>
     2         /// 克里金插值算法测试
     3         /// </summary>
     4         private void Test_KrigingInterpolationAlgo()
     5         {
     6             #region 1、参数设置
     7             string strFileName = @"D:\data\China\省会城市.shp";
     8             IFeatureDataset fDataset = PIE.DataSource.DatasetFactory.OpenFeatureDataset(strFileName);
     9             if (fDataset.GetGeomType() != GeometryType.GeometryPoint) return;
    10             KrigingInterpolation_Exchange_Info info = new KrigingInterpolation_Exchange_Info();
    11             info.InputFeatureDataset = fDataset;
    12             info.FieldIndex = 1;
    13             info.SearchPoints = 20;
    14             info.OutputRasterFilePath = @"D:\temp\省会城市克里金插值测试.tiff";
    15             info.OutputRasterType = "GTIFF";
    16             info.Width = 1000;
    17             info.CellSize = fDataset.GetExtent().GetWidth() / info.Width;
    18             //info.CellSize = fDataset.GetExtent().GetWidth() / 100;
    19             #endregion
    20             //2、算法执行
    21             PIE.CommonAlgo.KrigingInterpolationAlgo alog = new KrigingInterpolationAlgo();
    22             alog.Params = info;
    23             bool result = alog.Execute();
    24             int errCode = -1;
    25             string errMsg = string.Empty;
    26             alog.GetErrorInfo(ref errCode, ref errMsg);
    27             //3、结果显示
    28             ILayer layer = LayerFactory.CreateDefaultLayer(info.OutputRasterFilePath);
    29             if (layer == null)
    30             {
    31                 MessageBox.Show("执行失败");
    32                 return;
    33             }       
    34             m_HookHelper.FocusMap.AddLayer(layer);     m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    35             (fDataset as IDisposable).Dispose();
    36             fDataset = null;
    37         }
    View Code

    2.4. 示例截图

     

     

  • 相关阅读:
    Leetcode 1349 参加考试的最大学生数
    卡特兰数小结
    Leetcode 76 最小覆盖字串 (滑动窗口)
    Leetcode 5331.跳跃游戏
    实现对properties文件的有序读写
    Android日志框架darks-logs使用教程
    Android入门-Service-start,end,bind,unbind之间的区别
    Android实用代码七段(一)
    [转帖]自动调整TextView字体大小以适应文字长度
    apk,task,android:process与android:sharedUserId的区别
  • 原文地址:https://www.cnblogs.com/PIESat/p/10150796.html
Copyright © 2020-2023  润新知