水深提取算法就是根據輸入的水位設爲d,dem設爲h 這兩個數據作一個差值運算,則水深計算公式爲d-h;本示例中的是基於洞庭湖提取的水體矢量文件的範圍來計算dem和水位25米的差值。算法
須要注意的是,水位的基準要和dem的基準一致。水位的基準須要判斷是基於河牀仍是和dem一致的高程基準面。否則結果可能會受影響。ide
第一步spa |
算法參數設置code |
第二步blog |
算法執行ci |
第三步string |
結果顯示event |
算法名稱table |
水深提取法ast |
|
C#算法DLL |
PIE.CommonAlgo.dll |
|
C#算法名稱 |
PIE.CommonAlgo. WaterStatisticsAlgo |
|
參數結構體 |
WaterDepthInfo |
|
參數說明 |
||
dWaterHeight |
double |
水位 |
pszInDEMFile |
string |
DEM文件路徑 |
pszOutFile |
string |
輸出文件路徑 |
pszShpFile |
String |
水體矢量路徑 |
數據路徑 |
百度雲盤地址下/ 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:\MapData\Raster\水體提取數據\WR_20171219_A0303_636493863981864520\dem\洞庭湖.tif";//Dem文件路徑 8 info.pszShpFile = @"D:\MapData\Raster\水體提取數據\temp\autoMagic.shp";//水體矢量文件 9 info.dWaterHeight = 25;//水位 10 info.pszOutFile = @"D:\MapData\Raster\水體提取數據\temp\waterDepth.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 } |