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 } |