1. 引言
归一化差异水体指数(MNDWI,Modified Normalized Difference Water Index)是一种用于提取水体信息的指数。它能够有效抑制植被和建筑物,提高水体的可分辨性。
本文将介绍如何使用 QGIS 计算 MNDWI,并进行水体矢量提取,最终导出为 GeoPackage 格式的矢量数据。
2. 数据准备
2.1 影像波段说明
计算 MNDWI 需要使用绿色波段(Green)和短波红外波段(SWIR),不同 Landsat 版本的波段编号如下:
卫星 | Green 波段 | SWIR 波段 |
---|---|---|
Landsat 8 | Band 3 | Band 6 |
Landsat 5/7 | Band 2 | Band 5 |
2.2 加载影像到 QGIS
- 在 QGIS 中,点击 “图层” → “添加栅格图层”。
- 选择解压后的 Landsat 影像数据。
- 点击 “添加” 以加载数据。
3. 计算 MNDWI
MNDWI 计算公式如下:
MNDWI = ( Green - SWIR ) / (Green + SWIR)
3.1 打开栅格计算器
- 在 QGIS 菜单栏中,选择 “GDAL” → “栅格计算器”。
- 按数据实际选择Green波段为A,SWIR波段为B
- 在 “表达式” 框中输入以下公式:
(A-B) / (A+B)
- 选择输出路径,格式使用 GeoTIFF (
.tif
)。 - 点击 “确定” 以生成 MNDWI 影像。
4. 依据阈值进行水体提取
MNDWI 大于阈值的区域通常表示水体,因此可以进行二值化处理。
4.1 栅格重分类
- 打开 “栅格分析” → “按表格重分类”。
- 大于阈值的设重分类为1,小于阈值的重分类为0,将 MNDWI 影像二值化:
说明:- 结果值为
1
表示水体,0
表示非水体。同时设置0为无数据
- 结果值为
- 选择输出路径,格式仍然使用 GeoTIFF (
.tif
)。 - 点击 “确定” 以生成二值化水体栅格。
5. 矢量化水体
5.1 打开矢量化工具
- 选择 “栅格” → “转换” → “栅格转矢量”。
- 选择二值化水体栅格作为输入文件。
5.2 设置参数
- 字段:选择值
1
代表水体。 - 几何类型:选择 多边形。
- 输出格式: GeoPackage (
.gpkg
)。 - 点击 “运行” 生成水体矢量数据。
6. 手动矫正矢量数据
由于自动矢量化和MNDWI可能存在误差,需要进行手动修正。
6.1 进入编辑模式
- 在 上层操作面板 选择 “切换到编辑模式”。
- 使用 “节点工具” 修正水体边界。
6.2 平滑边界
- 选择 “处理工具箱” → “矢量几何” → “平滑”。
- 设定平滑程度并运行。
7. 导出最终水体矢量
7.1 选择导出格式
- 右键点击矢量图层,选择 “导出” → “另存为”。
- 选择 GeoPackage (
.gpkg
) 作为输出格式。 - 设定坐标参考系统(使用 WGS 84 / UTM)。
- 点击 “确定”,完成导出。
8. 结果分析与可视化
8.1 叠加原始影像
- 右键水体矢量图层,选择 “属性” → “透明度” 调整可视化效果。
8.2 计算水体面积
- 选择 “属性表” → “字段计算器”。
- 使用
area($geometry)
计算水体面积。
9. 结论
本文详细介绍了如何在 QGIS 中计算 MNDWI 进行水体提取,包括:
- 使用 GDAL 计算 MNDWI。
- 通过阈值重分类提取水体。
- 栅格转矢量并进行边界修正。
- 最终导出 GeoPackage 格式的水体矢量。
Comments 1 条评论
Guy, I would like to ask how to improve python calculations related to water bodies and land.