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 } |
2.4. 示例截图