第1章:遥感数据获取与预处理

各位同学,大家好。我是你们这门课的老朋友。今天咱们聊聊遥感数据获取与预处理。说实话,这步是遥感分析的基石。地基没打好,后面盖的楼再漂亮也得塌。我见过太多项目,数据预处理没做好,结果分析出来的植被指数全是错的,白白浪费几个月时间。

嗯,咱们直接进入正题。

1.1 常用遥感数据源

目前主流的免费遥感数据源,说白了就三个:Landsat、Sentinel-2、MODIS。我个人的习惯是,做精细生态评估用Sentinel-2,做长时序分析用Landsat,做大尺度宏观监测用MODIS。你想想看,各有各的脾气。

数据源 空间分辨率 时间分辨率 波段数 主要用途
Landsat 8/9 30m(多光谱) 16天 11 长时序植被变化、土地利用
Sentinel-2 10m(可见光) 5天 13 精细植被监测、农业
MODIS 250m-1km 1-2天 36 全球尺度、快速监测

我在项目中遇到过一件事:有次做城市绿地评估,用了Landsat的30米数据,结果把小区里的花坛和草坪全混在一起了。后来换成Sentinel-2的10米数据,细节一下就出来了。所以选数据源,一定要看你的目标尺度。

1.2 数据下载方法

下载数据其实不难,但有几个坑。我给大家梳理一下常用渠道。

  • USGS EarthExplorer:Landsat数据最全,老牌平台。我建议注册一个账号,免费。
  • Copernicus Open Access Hub:下载Sentinel-2的首选。注意,它有时会抽风,下载速度慢。我曾经半夜爬起来续传,你懂的。
  • NASA LAADS DAAC:MODIS数据的大本营。HDF格式,后面会讲。
  • Google Earth Engine:如果你不想下载,直接在云端处理。我个人现在越来越依赖它,省硬盘空间。
小技巧:下载Landsat数据时,记得选Level-2产品。它已经做了大气校正,能省你不少事。Level-1是原始数据,还得自己折腾。

1.3 数据格式解析

遥感数据格式,最常见的就是GeoTIFF和HDF。嗯,这里要注意,两种格式的脾气完全不同。

GeoTIFF

说白了,就是普通TIFF图片加上地理坐标信息。每个像素都知道自己在哪。Landsat和Sentinel-2都用这个格式。我习惯用GDAL库来读写,Python里最稳。

import gdal
# 读取GeoTIFF文件
ds = gdal.Open('LC08_B4.TIF')
band = ds.GetRasterBand(1)
data = band.ReadAsArray()
# 获取地理变换参数
geotransform = ds.GetGeoTransform()
print('左上角坐标:', geotransform[0], geotransform[3])
print('像元大小:', geotransform[1], geotransform[5])

HDF

MODIS数据用的是HDF格式。它像个集装箱,里面装了很多数据集。我第一次打开HDF文件时,差点被里面的层级结构搞晕。后来发现,用h5py库就能轻松读取。

import h5py
# 读取MODIS HDF文件
with h5py.File('MOD09GA.A2022001.hdf', 'r') as f:
    # 查看数据集结构
    def print_structure(name, obj):
        print(name)
    f.visititems(print_structure)
    # 读取某个波段
    data = f['MODIS_Grid_1km_2D/sur_refl_b01'][:]
避坑指南:我曾经在读取HDF文件时,没注意数据缩放因子。MODIS的反射率数据通常乘以0.0001才是真实值。结果我直接用原始值算NDVI,全成了负数。嗯,从那以后我再也不敢忽略元数据了。

1.4 辐射定标与大气校正原理

这部分是预处理的核心。为什么?因为卫星传感器记录的是数字量化值(DN值),不是真实的地表反射率。你想想看,DN值受传感器增益、太阳高度角、大气散射等因素影响。直接拿DN值算植被指数,结果肯定不准。

辐射定标

辐射定标,就是把DN值转换成辐射亮度值或表观反射率。说白了,就是给原始数据做一次线性变换。公式很简单:

# 辐射定标示例(Landsat 8)
# 假设DN值在band中,增益和偏移来自元数据文件
radiance = band * gain + offset
# 或者直接转成表观反射率
reflectance = (radiance * d * pi) / (ESUN * cos(solar_zenith))

我个人习惯,直接用USGS提供的Level-2产品,它已经帮你做了辐射定标和大气校正。但如果你拿到的是Level-1数据,就得自己动手。

大气校正

大气校正,目的是消除水汽、气溶胶、臭氧等对信号的干扰。常用的方法有:

  • 6S模型:物理模型,精度高,但参数多。我一般做研究时才用。
  • FLAASH:集成在ENVI里,操作方便。适合批量处理。
  • DOS(暗目标法):简单粗暴,假设图像中有暗目标(如水体),其反射率应为0。我刚开始学遥感时就用这个,虽然精度一般,但胜在快。
核心要点:大气校正不是可选项,是必选项。尤其是做植被指数时,近红外和红波段的比值对大气非常敏感。不做校正,你的NDVI可能偏差0.1以上,这在生态评估中是致命的。

1.5 知识体系框架

为了让大家更直观地理解本章的知识结构,我画了一张流程图。嗯,用SVG画的,虽然丑了点,但逻辑清楚。

遥感数据获取与预处理知识框架 常用遥感数据源 数据下载方法 数据格式解析 Landsat (30m, 16天) Sentinel-2 (10m, 5天) MODIS (250m-1km, 1天) USGS EarthExplorer Copernicus Open Access Hub Google Earth Engine GeoTIFF (Landsat/Sentinel) HDF (MODIS) GDAL / h5py 读取 辐射定标 + 大气校正 6S模型 / FLAASH DOS暗目标法 Level-2产品直接使用

这张图把本章的核心逻辑串起来了。从数据源选择,到下载,到格式解析,最后到预处理。每一步都环环相扣。我个人觉得,预处理这一步花的时间,至少占整个项目的40%。别嫌麻烦,后面算植被指数时你就知道值了。

好了,第一章的内容就到这里。记住,数据预处理是遥感分析的良心活。你糊弄它,它就糊弄你。


公众号:蓝海资料掘金营,微信deep3321