歸一化指數法(NDWI(Normalized Difference Water Index,歸一化水指數)),用遙感影像的特定波段進行歸一化差值處理,以凸顯影像中的水體信息。算法
其表達式爲NDWI =(p(Green)-p(NIR))/(p(Green)+p(NIR))ide
是基於綠波段與近紅外波的歸一化比值指數。該NDWI通常用來提取影像中的水體信息,效果較好。spa
PIE支持歸一化指數法算法的執行,下面對此算法功能進行介紹。示例以一幅洞庭湖2017年水體影像圖以下圖根據矢量文件提取指定範圍內的水體數據爲例。結果看示例截圖部分。code
第一步orm |
算法參數設置視頻 |
第二步blog |
算法執行教程 |
第三步ci |
結果顯示string |
算法名稱 |
歸一化水體指數算法 |
|
C#算法DLL |
PIE.CommonAlgo.dll |
|
C#算法名稱 |
PIE.CommonAlgo.DataAutoMagicAlgo |
|
參數結構體 |
DataAutoMagic_Exchange_Info |
|
參數說明 |
||
InputFilePathList |
IList<string> |
輸入文件路徑列表 |
OutputFilePath |
String |
輸出文件路徑 |
ShpFilePath |
String |
範圍路徑 |
Type |
Int |
自動提取類型,默認是0 |
數據路徑 |
百度雲盤地址下/ PIE示例數據/柵格數據/01.GF1/洞庭湖水體/ IMG_FE233_20171219_636493846049962321.tif SHP_FE233_20171219_636493846049962321.shp |
視頻路徑 |
百度雲盤地址下/PIE視頻教程/10.算法調用/行業應用/歸一化指數算法.avi |
示例代碼 |
|
1 /// <summary> 2 /// 歸一化水體指數法 3 /// </summary> 4 public void NormalizeWaterExtract() 5 { 6 // 歸一化水體指數分類 7 PIE.CommonAlgo.DataAutoMagic_Exchange_Info info = new DataAutoMagic_Exchange_Info(); info.InputFilePathList = new List<string> {@"D:\MapData\Raster\水體提取數據\WR_20171219_A0303_636493863981864520\IMG_FE233_20171219_636493846049962321.tif" };//輸入文件列表 8 info.OutputFilePath = @"D:\MapData\Raster\水體提取數據\temp\autoMagic.shp";//輸出文件路徑 注意是矢量文件 9 info.ShpFilePath = @"D:\MapData\Raster\水體提取數據\WR_20171219_A0303_636493863981864520\SHP_FE233_20171219_636493846049962321.shp";//矢量範圍路徑 10 info.Type = 0;//自動提取類型 默認0 11 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll","PIE.CommonAlgo.DataAutoMagicAlgo"); 12 if (algo == null) return; 13 14 algo.Name = "歸一化水體指數分類"; 15 algo.Params = info; 16 bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo); 17 if (result) 18 { 19 MessageBox.Show("歸一化水體指數分類算法執行成功"); 20 ILayer layer = LayerFactory.CreateDefaultLayer(info.OutputFilePath); 21 if (layer == null) return; 22 m_HookHelper.ActiveView.FocusMap.AddLayer(layer); 23 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 24 } 25 }
|
/// <summary>/// 歸一化水體指數法/// </summary>public void NormalizeWaterExtract(){ // 歸一化水體指數分類 PIE.CommonAlgo.DataAutoMagic_Exchange_Info info = new DataAutoMagic_Exchange_Info(); info.InputFilePathList = new List<string> {@"D:\MapData\Raster\水體提取數據\WR_20171219_A0303_636493863981864520\IMG_FE233_20171219_636493846049962321.tif" };//輸入文件列表 info.OutputFilePath = @"D:\MapData\Raster\水體提取數據\temp\autoMagic.shp ";//輸出文件路徑 注意是矢量文件 info.ShpFilePath = @"D:\MapData\Raster\水體提取數據\WR_20171219_A0303_636493863981864520\SHP_FE233_20171219_636493846049962321.shp";//矢量範圍路徑 info.Type = 0;//自動提取類型 默認0 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll","PIE.CommonAlgo.DataAutoMagicAlgo"); if (algo == null) return; algo.Name = "歸一化水體指數分類"; algo.Params = info; bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo); if (result) { MessageBox.Show("歸一化水體指數分類算法執行成功"); ILayer layer = LayerFactory.CreateDefaultLayer(info.OutputFilePath); if (layer == null) return; m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); }}