☰
高分一号水体反演全流程:ENVI预处理与黑臭水华识别
2026/10/27 14:29:06 网站建设 项目流程

简介:这份资源面向遥感与GIS方向的初学者及环境监测从业者,围绕高分一号影像在重庆部分区域的水体监测需求,完整演示从数据获取到成果出图的黑臭水体与水华反演流程,涉及ArcGIS与ENVI两款专业软件的实际操作。压缩包内为1个docx文档,约13.95MB,以图文步骤形式组织内容,便于对照软件界面逐步练习。文档依次覆盖陆地观测卫星数据服务网站的数据检索与下载、ENVI中的辐射定标、FLAASH大气校正、基于RPC模型的正射校正与黑背景去除、水域掩模裁剪,以及利用Band Math计算NDWI、MNDWI等水体指数完成反演,最后在ArcGIS中符号化区分正常水体、黑臭水体与水华区并导出地图。已有559人学习,适合作为遥感水体监测项目的流程参考与操作范本。

1. 高分一号水体反演:从原始影像到黑臭水华分布图的完整链路

手里有一景高分一号 WFV 影像,想判断某段河涌是不是黑臭、某片湖库有没有水华,最省事的路径不是自己写代码,而是把 ENVI 的辐射定标、FLAASH 大气校正、RPC 正射校正、掩膜裁剪串成一条流水线,再用 Band Math 把 NDWI、MNDWI 和黑臭/水华判别指数算出来,最后丢进 ArcGIS 出图。这套流程我在几个水环境监测项目里反复跑过,参数一旦固定下来,换一景影像基本就是“打开—点按钮—等结果”。这篇笔记把数据下载、预处理、反演、制图四段拆开讲,重点放在每个工具里到底填什么、为什么这么填、哪一步最容易翻车。适合做遥感环境监测的从业者,也适合刚接触 ENVI 的学生照着复现。

2. 数据获取与预处理:把 DN 值变成有物理意义的反射率

高分一号 WFV 传感器幅宽大、重访周期短,做流域尺度的水体监测比 Landsat 更灵活,但它的原始产品是 DN 值,直接算指数会受传感器响应差异和大气影响,所以预处理这四步一步都不能省。下面按实际操作顺序走,每一步都给出工具入口、关键参数和判断标准。

2.1 数据下载:检索条件怎么设才不白跑

数据从陆地观测卫星数据服务平台的通用卫星载荷检索入口进。检索时四个条件必须同时卡住:时间范围、空间范围(用重庆目标区域的矢量或矩形框)、云覆盖量、传感器类型选 GF1 的 WFV。云覆盖量我一般先设 10% 以内,如果目标时段一景都没有,再放宽到 20%,但水体反演对薄云很敏感,超过 20% 的影像基本不建议用。

下载前看一眼快视图,重点确认两件事:目标水体是否完整落在幅宽内、水体上方有没有明显云带。曾经有一景影像快视图看着干净,结果目标河段正好压在一条薄云边缘,大气校正后水体反射率整体偏高,黑臭判别直接失效。下载下来的是压缩包,解压后通常包含多光谱 tif、全色 tif、RPC 文件和 XML 元数据,ENVI 打开时选多光谱那个文件,元数据会自动带进来。

提示:下载时把 RPC 文件和 XML 一起保留,后面正射校正要用 RPC 信息,缺了就得手动填,很麻烦。

2.2 辐射定标:Radiometric Calibration 的参数逻辑

在 ENVI 工具栏搜索rad,打开 Radiometric Calibration。输入选刚打开的多光谱影像,输出路径自己定。关键参数有三个:

  • Calibration Type选 Radiance 或 Reflectance。做水体指数反演建议直接选 Reflectance,ENVI 会调用定标系数把 DN 转成表观反射率,省掉后面再除太阳高度角。
  • Output Interleave选 BIL 或 BSQ 都行,FLAASH 对 BIL 更友好,我一般选 BIL。
  • Scale Factor保持默认,除非你明确知道数据产品做过缩放。
# ENVI 中无命令行,此处为操作路径记录 # Toolbar -> 搜索 rad -> Radiometric Calibration # Input File: GF1_WFV_multispectral.tif # Calibration Type: Reflectance # Output Interleave: BIL # Output Filename: gf1_rad_reflectance.dat

定标完成后双击结果看统计值,反射率正常范围大致在 0 到 1 之间,如果出现大量负值或超过 1 的值,多半是定标类型选错或元数据没读进来。这一步的输出是后面大气校正的输入,文件名建议带rad标识,避免和原始数据混在一起。

2.3 FLAASH 大气校正:光谱曲线文件是成败关键

工具栏搜索fla,打开 FLAASH Atmospheric Correction。输入选上一步的定标结果,输出文件名和路径设好。参数面板里需要重点确认的项:

参数设置值说明
Sensor TypeUNKNOWN 或 GF1 对应选项没有 GF1 预设时选 UNKNOWN,手动填光谱响应
Ground Elevation目标区平均高程(km)重庆丘陵区一般 0.2~0.5
Atmospheric ModelMid-Latitude Summer 或 Tropical按成像月份选
Aerosol ModelRural 或 Urban城市周边选 Urban
Initial Visibility20~40 km晴天取高值,有霾取低值

然后打开 Multispectral Settings,点 Filter Function File 的 Open,选 Spectral Library,加载gf1-wfv3光谱曲线文件。这一步是很多新手漏掉的:不加载传感器光谱响应,FLAASH 会按通用曲线算,波段间串扰会让水体指数偏移。高级设置保持默认,点 Apply 开始跑。一景 WFV 数据在普通工作站上大概几分钟到十几分钟,跑完后检查水体像元的反射率曲线,正常水体在蓝绿波段反射率高于红波段,如果曲线形状反了,回去查光谱文件和大气模型。

2.4 RPC 正射校正与黑边去除:Data Ignore Value 设为 0

工具栏搜索RPC,打开 RPC Orthorectification Using Reference Image。输入大气校正结果,参考影像可以用同区域已正射的底图,高程数据用 SRTM 或 ASTER GDEM 都行。重采样方法选 Cubic Convolution,输出像元大小按参考影像或原始分辨率填。跑完后影像四周会出现黑色背景值,双击图层打开 Edit Metadata,点 Add Metadata items 找到Data Ignore Value,设为 0。这一步不做,后面掩膜裁剪时黑边会被当成有效像元参与统计,水体面积直接虚高。

2.5 水域掩膜裁剪:Build Mask 加 Apply Mask 两步走

工具栏搜索mask,先 Build Mask。输入正射校正结果,载入重庆水域 shp 数据,输出 mask 文件。再搜索mask打开 Apply Mask,输入文件选正射影像,掩膜文件选刚生成的 mask,输出参数里把掩膜外像元设为 0 或 NaN。裁剪完的water.dat就是反演的工作底图,后续所有波段运算都在这上面做,范围外的地物不会干扰指数统计。

3. 黑臭水体与水华反演:Band Math 公式怎么写、阈值怎么定

预处理做完,影像已经是地表反射率,接下来用波段运算把水体信息提取出来。高分一号 WFV 的波段顺序要记牢:Band1 蓝、Band2 绿、Band3 红、Band4 近红外。所有指数公式都基于这个顺序,写错一个波段号,结果就完全对不上。

3.1 NDWI 与 MNDWI:先圈出水体范围

工具栏搜索band,打开 Band Math,输入公式:

(float(b2) - float(b4)) / (float(b2) + float(b4))

这是 NDWI,用绿波段和近红外波段。点 Map Variable to Input File,把 b2 映射到 Band2、b4 映射到 Band4,输入文件选water.dat。输出后水体在 NDWI 上呈正值,植被和建筑呈负值,一般以 0 为界先粗分。城市区域建筑阴影容易和黑臭水体混淆,这时换 MNDWI:

(float(b2) - float(b5)) / (float(b2) + float(b5))

高分一号 WFV 没有短波红外波段,严格意义的 MNDWI 用不了,常见做法是用 Band4 近红外替代,或者直接用 NDWI 配合纹理和亮度做二次筛选。这一点在写报告时要说明,不能照搬 Landsat 的公式。

3.2 黑臭水体判别:用反射率组合做经验指数

黑臭水体的光谱特征是可见光波段反射率整体偏低、绿波段相对抬升、红波段与近红外差异缩小。实操中常用一个归一化黑臭指数做初筛:

(float(b3) - float(b2)) / (float(b3) + float(b2) + 0.0001)

分母加 0.0001 是防止除零。这个指数在清洁水体上接近 0 或负值,在黑臭水体上偏正。阈值不能拍脑袋定,我一般先在影像上选几个已知清洁点和黑臭点做感兴趣区,统计指数分布,取两类均值的中点作为初始阈值,再结合现场采样数据微调。没有现场数据时,阈值只作为相对分级依据,报告里要写清楚是“疑似黑臭”而不是定性结论。

3.3 水华识别:利用近红外抬升特征

水华(藻类聚集)在近红外波段反射率明显高于清洁水体,这是它和黑臭水体最大的光谱差异。常用归一化植被指数 NDVI 做辅助判断:

(float(b4) - float(b3)) / (float(b4) + float(b3) + 0.0001)

清洁水体 NDVI 接近负值或零,水华区域 NDVI 明显抬升。实际操作中把 NDWI 和水华指数叠加:NDWI 大于 0 的区域里,再按 NDVI 分级,低值归为一般水体,高值归为水华疑似区。分级阈值同样建议用感兴趣区统计加现场验证确定,不同季节、不同营养状态下阈值会漂移,一套阈值跑全年是不靠谱的。

3.4 结果导出与 ArcGIS 制图:符号化和面积统计

Band Math 输出的是单波段灰度图,直接看没有意义。在 ENVI 里用 Density Slice 或 Classification 把指数分成几级,导出为 tif 或 shp。进 ArcGIS 后做三件事:按分级设色(清洁水体蓝、黑臭水体灰褐、水华区绿)、叠加水域边界和行政区划、用栅格计算器统计各级面积。出图时注意坐标系统一,ENVI 输出默认可能是 WGS84 地理坐标,ArcGIS 里做面积统计前要投影到适合重庆的投影坐标系,否则面积会有偏差。

4. 避坑与排查:这几处翻车我见过太多次

4.1 大气校正后反射率出现大面积负值

现象:FLAASH 输出影像上大片像元反射率为负,水体区域尤其明显。

原因:最常见的是辐射定标时 Calibration Type 选了 Radiance 但没做后续转换,或者 FLAASH 里 Initial Visibility 设得过高,大气校正过度扣除。另一个隐蔽原因是光谱曲线文件加载错,用了其他传感器的响应曲线。

解决:回查定标输出统计值,确认反射率量级;把 Initial Visibility 降到 20 km 左右重跑;重新加载gf1-wfv3光谱文件并确认路径没有中文。

4.2 正射校正后影像和矢量对不上

现象:水域 shp 叠上去偏移几百米,掩膜裁出来的范围明显错位。

原因:RPC 文件没被正确读取,或者参考影像本身坐标系不对。也有情况是高程数据覆盖不全,边缘区域校正模型外推失真。

解决:在 ENVI 里打开 RPC 信息确认参数存在;参考影像统一到同一坐标系;高程数据范围要覆盖整景影像,不够就换更大范围的 DEM。

4.3 掩膜裁剪后水体面积明显偏大

现象:统计出来的水体面积比实际大一圈,边缘还有规则黑边。

原因:正射校正后的 Data Ignore Value 没设成 0,黑边被当作有效像元参与掩膜和指数计算。

解决:回到正射结果,Edit Metadata 里把 Data Ignore Value 设为 0,重新生成 mask 和裁剪结果。这个坑几乎每批新数据都会遇到一次。

4.4 Band Math 公式报错或输出全零

现象:点 OK 后提示波段不匹配,或者输出影像全是 0。

原因:公式里波段变量没映射到输入文件,或者输入文件波段数不够(比如裁剪后只剩几个波段)。另一个常见原因是整数除法,两个整型波段相除结果被截断。

解决:公式里所有波段变量用float()包一层;Map Variable to Input File 里逐个确认 b2、b3、b4 对应正确波段;检查输入文件的波段数和元数据。

4.5 水华和黑臭区域混在一起分不开

现象:同一片水域既被判为黑臭又被判为水华,分级图颜色重叠。

原因:两个指数阈值独立设定,没有做逻辑互斥。黑臭水体在绿波段抬升时 NDVI 也可能偏高,单靠一个指数分不开。

解决:先用水体指数圈定水体范围,再在水体范围内按 NDVI 和黑臭指数做二维分级,或者加一个亮度条件(黑臭水体可见光反射率整体偏低)。分级规则写进报告,别只给一张图。

5. 把流程固化成模板:参数复用与结果验证的两个习惯

这套流程跑顺之后,真正耗时的不是点按钮,而是每次换数据都要重新确认参数。我的做法是建一个 ENVI 处理模板:把辐射定标、FLAASH、RPC 三步的参数存成工程文件,新数据进来只改输入路径和成像时间对应的 Atmospheric Model,其余不动。FLAASH 里唯一随季节变的是大气模型,重庆夏季用 Tropical、春秋用 Mid-Latitude Summer,这个对应关系固定下来后,单景处理时间能压到半小时以内。

验证环节我强制做两件事。第一,每景影像处理后抽三个点核对反射率曲线形状,水体点蓝绿波段高于红波段、近红外接近零,曲线不对就回查定标和大气校正。第二,反演结果和上一期同区域结果做差值,如果黑臭面积突变超过 30%,先怀疑云污染或阈值漂移,而不是直接写进报告。下面这个检查表是我每次出图前必过的:

检查项通过标准不通过时回查
定标反射率范围主体在 0~1 之间定标类型、元数据
水体光谱曲线蓝绿>红,近红外低光谱响应文件、大气模型
正射套合矢量与影像偏差小于 2 个像元RPC、参考影像、DEM
黑边处理Data Ignore Value = 0元数据编辑
指数分级与现场或历史数据趋势一致阈值、感兴趣区统计

还有一个小技巧:Band Math 输出的指数影像先别急着分级,用 ENVI 的 Quick Stats 看直方图,如果直方图是双峰,说明水体和背景分离度好,阈值取谷底;如果单峰拖尾,说明目标区域水体占比太低或云干扰严重,这景数据就要谨慎使用。这个习惯帮我挡掉过好几景“看着能用、算出来全是噪声”的影像。

从那以后我每次跑完反演,都会先把指数直方图和光谱曲线过一遍再出图,宁可多花十分钟,也不把一张自己都不敢信的分级图交出去。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询