归一化指数法(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); }}