NDWI指数计算公式是什么?波段如何选择?
很多同学在做水体提取时会直接搜索“NDWI指数计算公式是什么?波段如何选择?”,但真正容易出错的地方并不是公式本身,而是不同传感器的波段名称、波段编号和空间分辨率并不完全一致。本文以 GIS 和遥感制图中的实际操作为目标,讲清楚 NDWI 指数计算公式、常用波段选择方法,以及在 QGIS、ArcGIS Pro 或 Python 中计算前需要检查的关键问题。

引言:NDWI指数计算公式是什么
NDWI,全称为 Normalized Difference Water Index,通常译为归一化差异水体指数。它的经典计算公式是:
NDWI = (Green - NIR) / (Green + NIR)
其中,Green 表示绿色波段反射率,NIR 表示近红外波段反射率。这个公式的核心思想是:水体在绿色波段通常有一定反射,而在近红外波段反射很低;植被和部分陆地背景在近红外波段反射较高。因此,用绿色波段减去近红外波段,可以让水体在结果中更突出。
在实际 GIS 工作中,NDWI指数计算公式看起来很简单,但如果波段选错,结果会出现水体不明显、植被被误判为水体、城市阴影被提取出来等问题。所以,理解 NDWI 波段如何选择,比单纯记住公式更重要。
背景:为什么NDWI适合做水体提取
NDWI 常用于湖泊、河流、水库、坑塘、湿地等水体的快速识别。它适合以下场景:
- 从 Landsat、Sentinel-2、高分、无人机多光谱影像中提取水体范围。
- 对比不同时期水域面积变化。
- 制作洪水淹没范围、湖泊萎缩、河道变化等专题图。
- 作为水体掩膜,辅助土地利用分类或生态分析。
需要注意的是,NDWI 并不是万能的水体提取方法。它对清洁开阔水体效果较好,但在浑浊水体、浅水区、城市阴影、山体阴影、湿润土壤、冰雪覆盖区域中,可能需要结合阈值调整、影像分类或其他水体指数一起使用。
原理:NDWI波段选择为什么是Green和NIR
NDWI 的波段选择基于地物光谱反射特征。简单理解如下:
- 水体:在绿色波段可能有一定反射,在近红外波段吸收明显,反射率通常较低。
- 植被:在近红外波段反射很强,在绿色波段也有反射,但通常 NIR 明显高于 Green。
- 裸地和建筑:反射特征比较复杂,部分区域可能与水体混淆。
把 Green 和 NIR 放入 NDWI 指数计算公式后,水体的 NDWI 值通常偏高,植被的 NDWI 值通常偏低。这样就可以通过一个阈值把水体和非水体分开。
常见经验:NDWI 大于 0 的区域经常被初步认为可能是水体,但这个阈值不是固定标准,必须结合影像、地区和季节进行检查。
步骤:不同遥感影像的NDWI波段如何选择
计算 NDWI 前,最关键的一步是确认影像的传感器类型和波段含义。不要只看文件名中的 B1、B2、B3,因为不同卫星的波段编号不一样。
Landsat 8和Landsat 9的NDWI波段选择
对于 Landsat 8 OLI 和 Landsat 9 OLI-2,常用 NDWI 公式为:
NDWI = (Band 3 - Band 5) / (Band 3 + Band 5)
| 传感器 | 绿色波段 Green | 近红外波段 NIR | NDWI公式 |
|---|---|---|---|
| Landsat 8 / 9 | Band 3 | Band 5 | (B3 – B5) / (B3 + B5) |
如果你使用的是 USGS 下载的地表反射率产品,建议优先使用反射率数据计算 NDWI,而不是直接使用原始 DN 值。反射率数据更适合不同时相之间的比较。
Landsat 5和Landsat 7的NDWI波段选择
对于 Landsat 5 TM 和 Landsat 7 ETM+,常用 NDWI 公式为:
NDWI = (Band 2 - Band 4) / (Band 2 + Band 4)
| 传感器 | 绿色波段 Green | 近红外波段 NIR | NDWI公式 |
|---|---|---|---|
| Landsat 5 TM | Band 2 | Band 4 | (B2 – B4) / (B2 + B4) |
| Landsat 7 ETM+ | Band 2 | Band 4 | (B2 – B4) / (B2 + B4) |
Landsat 7 在 2003 年以后存在 SLC-off 条带缺失问题,如果用于水体面积统计,需要先检查缺失区域是否影响研究区。
Sentinel-2的NDWI波段选择
对于 Sentinel-2 MSI,常用 NDWI 公式为:
NDWI = (Band 3 - Band 8) / (Band 3 + Band 8)
| 传感器 | 绿色波段 Green | 近红外波段 NIR | NDWI公式 |
|---|---|---|---|
| Sentinel-2 MSI | Band 3 | Band 8 | (B3 – B8) / (B3 + B8) |
Sentinel-2 的 Band 3 和 Band 8 空间分辨率都是 10 米,计算 NDWI 比较方便。若你使用 Band 8A,它也是近红外窄波段,但空间分辨率为 20 米,通常不作为经典 NDWI 的首选。
高分影像和无人机多光谱影像的NDWI波段选择
对于高分系列或无人机多光谱影像,不能简单套用 Landsat 或 Sentinel-2 的波段编号。正确做法是查看影像元数据,确认哪个波段是绿色波段,哪个波段是近红外波段。
- 绿色波段通常位于可见光绿光范围。
- 近红外波段通常标记为 NIR 或 Near Infrared。
- 如果影像没有近红外波段,就不能计算经典 NDWI。
- 如果只有 RGB 三个波段,不能使用标准 NDWI 公式。
步骤:在QGIS中计算NDWI
在 QGIS 中计算 NDWI,可以使用“栅格计算器”。以下步骤适合已经完成波段加载的多波段遥感影像。
- 打开 QGIS,加载绿色波段和近红外波段。
- 确认两个波段的坐标系、分辨率和范围一致。
- 打开 栅格 中的 栅格计算器。
- 输入 NDWI 指数计算公式。
- 设置输出文件路径和输出格式,建议使用 GeoTIFF。
- 运行后加载结果,使用单波段伪彩色渲染查看水体分布。
以 Sentinel-2 为例,QGIS 栅格计算器表达式可以写成:
("B3@1" - "B8@1") / ("B3@1" + "B8@1")
以 Landsat 8 为例,表达式可以写成:
("B3@1" - "B5@1") / ("B3@1" + "B5@1")
如果输出结果大面积为空值,优先检查分母是否为 0、两个波段范围是否重叠、栅格是否存在 NoData 值。
步骤:在ArcGIS Pro中计算NDWI
在 ArcGIS Pro 中,常用方法是使用 Raster Calculator,也就是栅格计算器。操作步骤如下:
- 将绿色波段和近红外波段添加到地图中。
- 打开 Spatial Analyst Tools 下的 Map Algebra。
- 选择 Raster Calculator。
- 输入 NDWI 公式。
- 设置输出栅格名称和保存位置。
- 运行后检查 NDWI 值域是否大致在 -1 到 1 之间。
示例表达式如下:
Float("Green" - "NIR") / Float("Green" + "NIR")
使用 Float 的目的是避免整数栅格计算导致结果被截断。对于 NDWI 这种归一化指数,输出应该是浮点型栅格。
步骤:用Python计算NDWI
如果需要批量处理影像,可以使用 Python 结合 Rasterio 计算 NDWI。下面是一个简化示例,适合已经准备好绿色波段和近红外波段的 GeoTIFF 文件。
import rasterio
import numpy as np
green_path = "green.tif"
nir_path = "nir.tif"
out_path = "ndwi.tif"
with rasterio.open(green_path) as green_src:
green = green_src.read(1).astype("float32")
profile = green_src.profile
with rasterio.open(nir_path) as nir_src:
nir = nir_src.read(1).astype("float32")
denominator = green + nir
ndwi = np.where(denominator == 0, np.nan, (green - nir) / denominator)
profile.update(dtype=rasterio.float32, count=1, nodata=np.nan)
with rasterio.open(out_path, "w", **profile) as dst:
dst.write(ndwi.astype("float32"), 1)
这个代码只适合两个波段已经对齐的情况。如果 Green 和 NIR 的分辨率、范围或仿射变换不一致,需要先进行重采样和配准。
常见坑:NDWI计算结果不对通常是什么原因
把波段编号套错
最常见的问题是把 Landsat 8 的 Band 5 误认为绿色波段,或把 Sentinel-2 的 Band 8A 与 Band 8 混用。NDWI波段选择必须根据传感器元数据确认,不能只凭经验猜。
使用RGB影像计算标准NDWI
普通 RGB 影像只有红、绿、蓝三个可见光波段,没有近红外波段。因此不能计算经典 NDWI。若只有 RGB 数据,只能尝试其他视觉水体识别方法,不能直接套用 NDWI 指数计算公式。
没有使用反射率数据
原始 DN 值受传感器增益、太阳高度角、大气条件等影响较大。做单景影像快速识别时可能还能看到水体差异,但如果要做多期对比,建议使用地表反射率产品。
没有处理云、云影和山体阴影
云影和山体阴影可能在 NDWI 结果中表现得很像水体。对于山区、城市高楼阴影区和多云影像,建议先做云掩膜、阴影检查,或与真彩色影像叠加核查。
阈值固定为0导致误提取
NDWI 大于 0 常被用作初始阈值,但不同地区、季节、传感器和水体浑浊程度都会影响结果。实际工作中,应结合样本点、目视判读或直方图来调整阈值。
方法比较:NDWI、MNDWI和AWEI怎么选
除了 NDWI,水体提取中还经常看到 MNDWI 和 AWEI。它们的目标类似,但适用场景不同。
| 方法 | 常用公式 | 特点 | 适合场景 |
|---|---|---|---|
| NDWI | (Green – NIR) / (Green + NIR) | 公式简单,突出开阔水体 | 湖泊、河流、水库的快速提取 |
| MNDWI | (Green – SWIR) / (Green + SWIR) | 对建筑和裸地抑制更明显 | 城市水体、建设区附近水体 |
| AWEI | 使用多个波段组合 | 对阴影和复杂背景有一定改进 | 阴影较多或背景复杂区域 |
如果你的研究区是开阔湖泊或河流,NDWI 通常是一个很好的起点。如果研究区包含大量建筑物、道路、裸地和城市阴影,可以尝试 MNDWI 或结合监督分类方法。
检查清单:计算NDWI前后应该核对什么
为了减少返工,建议在计算 NDWI 前后按下面清单检查。
计算前检查
- 是否确认传感器类型,例如 Landsat 8、Sentinel-2 或无人机多光谱。
- 是否确认 Green 和 NIR 的真实波段含义。
- 两个波段是否坐标系一致。
- 两个波段是否分辨率一致。
- 两个波段是否空间范围重叠。
- 是否需要先做大气校正或使用地表反射率产品。
- 是否存在云、云影、积雪或明显阴影。
计算后检查
- NDWI 值域是否大致位于 -1 到 1 之间。
- 水体区域是否在 NDWI 图上表现为较高值。
- 植被区域是否被有效抑制。
- 城市阴影、山体阴影是否被误判为水体。
- 阈值是否经过样本或目视验证。
- 统计水域面积前是否设置了正确的投影坐标系。
FAQ:NDWI指数计算公式与波段选择常见问题
NDWI指数计算公式一定是Green和NIR吗?
经典 NDWI 水体指数通常使用 Green 和 NIR,公式为 (Green – NIR) / (Green + NIR)。但有些文献中也会把 NDWI 用于植被水分相关分析,使用 NIR 和 SWIR。做水体提取时,应明确自己使用的是 McFeeters 提出的水体 NDWI。
NDWI大于0就一定是水体吗?
不一定。NDWI 大于 0 可以作为初始判断,但不是绝对规则。云影、山体阴影、湿润土壤、部分建筑阴影也可能出现较高 NDWI 值。正式制图前需要结合影像底图和样本验证。
Sentinel-2计算NDWI用B8还是B8A?
常规 NDWI 水体提取一般使用 B3 和 B8。B3 是绿色波段,B8 是近红外波段,二者都是 10 米分辨率。B8A 也是近红外窄波段,但分辨率为 20 米,使用前需要考虑重采样和方法一致性。
Landsat 8计算NDWI用哪些波段?
Landsat 8 计算 NDWI 通常使用 Band 3 和 Band 5,公式为 (B3 – B5) / (B3 + B5)。其中 Band 3 是绿色波段,Band 5 是近红外波段。
只有RGB影像可以计算NDWI吗?
不能计算标准 NDWI。因为 NDWI 需要近红外波段,而 RGB 影像只有红、绿、蓝三个可见光波段。如果没有 NIR 波段,只能使用其他基于颜色、纹理或分类的方法进行水体识别。
NDWI和MNDWI哪个更好?
没有绝对更好。NDWI 简单、直观,适合开阔水体快速提取;MNDWI 使用 Green 和 SWIR,在城市区域或建筑背景复杂的场景中往往更有优势。建议根据研究区背景进行小范围试算和精度检查。
结论:先确认波段,再计算NDWI
NDWI指数计算公式并不复杂,经典水体 NDWI 为 (Green – NIR) / (Green + NIR)。真正影响结果质量的是 NDWI 波段选择、数据预处理、阈值判断和结果验证。
在实际项目中,建议按“确认传感器—查明波段含义—检查波段对齐—计算 NDWI—调整阈值—叠加影像验证”的流程操作。这样既能避免把波段选错,也能减少阴影、云和裸地带来的误提取问题。
如果你只是做快速水体识别,NDWI 是一个高效入口;如果你要做正式面积统计或时序变化分析,就要进一步关注反射率数据、云影掩膜、阈值一致性和精度验证。