PIE SDK水深提取算法

1.算法功能简介

  水深提取算法就是根据输入的水位设为d,dem设为h 这两个数据做一个差值运算,则水深计算公式为d-h;本示例中的是基于洞庭湖提取的水体矢量文件的范围来计算dem和水位25米的差值。

  需要注意的是,水位的基准要和dem的基准一致。水位的基准需要判断是基于河床还是和dem一致的高程基准面。不然结果可能会受影响。

2.算法功能实现说明

2.1 实现步骤

第一步

算法参数设置

第二步

算法执行

第三步

结果显示

2.2 算法参数

算法名称

水深提取法

C#算法DLL

PIE.CommonAlgo.dll

C#算法名称

PIE.CommonAlgo. WaterStatisticsAlgo

参数结构体

WaterDepthInfo

参数说明

dWaterHeight

double

水位

pszInDEMFile

string

DEM文件路径

pszOutFile

string

输出文件路径

pszShpFile

String

水体矢量路径

2.3 示例代码

数据路径

百度云盘地址下/ PIE示例数据/栅格数据/01.GF1/洞庭湖水体/ WR_20171219_A0303_636493863981864520/dem/洞庭湖.tif

示例代码

 1 /// <summary>
 2 /// 水深提取算法 autoMagic.shp水体矢量文件是IMG_FE233_20171219_636493846049962321.tif进行归一化指数法处理的结果
 3 /// </summary>
 4 public void WaterStatics()
 5 {
 6     PIE.CommonAlgo.WaterDepthInfo info = new WaterDepthInfo();
 7     info.pszInDEMFile = @"D:MapDataRaster水体提取数据WR_20171219_A0303_636493863981864520dem洞庭湖.tif";//Dem文件路径
 8     info.pszShpFile = @"D:MapDataRaster水体提取数据	empautoMagic.shp";//水体矢量文件
 9     info.dWaterHeight = 25;//水位
10     info.pszOutFile = @"D:MapDataRaster水体提取数据	empwaterDepth.tif";//输出文件路径
11          
12     PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.WaterStatisticsAlgo");
13     if (algo == null) return;
14           
15     algo.Name = "水深提取";
16     algo.Params = info;
17 
18     bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
19     if (result)
20     {
21         MessageBox.Show("水深提取算法执行成功");
22         ILayer layer = LayerFactory.CreateDefaultLayer(info.pszOutFile);
23         if (layer == null) return;
24         m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
25         m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
26     }
27 }
View Code

2.4 示例截图

原文地址:https://www.cnblogs.com/PIESat/p/11281168.html