NASA EARTHDATA 数据自动化爬取与预处理
仓库说明
- EARTHDATA 说明
- NASA 计划于 2026 年底将公开数据全部集成进 EARTHDATA 中
- HLS 数据集:NASA 多部门将 Landsat8/9 与 Sentinel-2A/B 统一协调至 30m,划分为:
- L30(Landsat8/9,包含其独有的 2 个热红外波段,并已处理为表面亮温 ℃)
- S30(Sentinel-2A/B,包含其独有的 4 个红边波段)
- 对于核心六波段(Blue/Green/Red/NIR/SWIR1/SWIR2)可直接合并使用,合并后湖北地区单格网观测频率约为 3-4d
- 使用说明
- 本仓库基于官方原始脚本修复了实际使用中存在的 bug,并添加了更多可控制参数
- 爬取时不要使用魔法工具
- 实测单格网全年影像爬取+预处理约 1h
- 单用户每秒限制 100 次请求
1 安装基础环境
1.1 miniforge
-
miniforge 是结合 conda 与 mamba 的最小化包,比 Anaconda 和 Miniconda 更快更轻量,并且配置命令与原 conda 基本一致,支持直接使用 mamba 命令。
-
简而言之,环境配置效率上,miniforge > Mambaforge (202407 已废弃) > Miniconda + Mamba > Miniconda > Anaconda
1.2 配置环境变量
- 为了在控制台中直接使用 conda 命令,需要将安装的相关目录配置到 Path 环境变量中。
D:\program\miniforge3
D:\program\miniforge3\Scripts
D:\program\miniforge3\Library\bin
1.3 配置权限
- 详细配置与 miniconda 相同,图文教程地址:https://gis-xh.github.io/my-note/python/01conda/Win11-Miniconda-install/
- Windows 环境下,需要设置虚拟环境文件夹的访问权限为所有用户可访问,否则会出现无法读取虚拟环境文件的问题
- 具体地:
- 设置
D:\program\miniforge3\env
目录为所有用户可访问,具体操作为:右键点击文件夹 -> 属性 -> 安全 -> 编辑 -> 添加 -> 添加所有用户 -> 全选 -> 应用 -> 确定
- 设置
1.4 配置镜像源
- 生成下载源文件的配置文件 (若已经安装过 Anaconda/Miniconda,则无需执行此步骤)
conda config --set show_channel_urls yes
- 在
C:\Users\实际用户名\
目录找到.condarc
文件,使用记事本打开,输入如下内容并保存
envs_dirs:
- D:\program\miniforge3\envs
- 其他路径地址(可选,创建虚拟环境时将会按照顺序查找)
channels:
- conda-forge
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- 清理镜像缓存
conda clean -i
1.5 初始化 conda
- 打开控制台,初始化 PowerShell 与 CMD
conda init powershell
conda init cmd.exe
2 运行环境配置
2.1 使用 mamba 创建并激活虚拟环境
- 克隆虚拟环境 (完整复刻运行环境所有依赖)
mamba env create -f setup/lpdaac.yml
- 克隆虚拟环境 (复刻主要依赖环境-部分依赖可能会更新)
mamba env create -f setup/environment.yml
- 激活虚拟环境
mamba activate lpdaac
- 导出当前虚拟环境
mamba env export > setup/lpdaac.yml
3 设计思路
3.1 数据组织
data/
MODIS/
MOD11A1/ 地表温度 LST
2024/ 按年份归档
HDF/ 原始下载数据
MOD11A1.A2024001.MODIS网格ID.061.2024002094840.hdf
...
TIF/ 格式转换后的数据
MODIS.MOD11A1.网格ID.2024001.LST.tif
...
MCD43A3/ 反照率 Albedo
同上
MCD43A4/ 双向天底反射率 NBRDF
2024/
HDF/
MOD11A1.A2024001.MODIS网格ID.061.2024002094840.hdf
...
TIF/
2024001/ 反射率数据按照DOY归档
MODIS.MCD43A4.网格ID.2024001.NBRDF.tif
...
HLS/
2024/
2024001/
HLS.S30.T49REL.2024001T030631.v2.0.RED.subset.tif
HLS.S30.T49REL.2024001T030631.v2.0.GREEN.subset.tif
HLS.S30.T49REL.2024001T030631.v2.0.BLUE.subset.tif
...
SMAP/
DEM/
SAR/ 雷达数据
RTC_S1/ Sentinel-1 数据
RTC_S1_STATIC/ Sentinel-1 入射角
GPM/ 降雨数据
3.2 NASA Earthdata 账户准备
- 参考自 NASA 官网示例 Demo:https://github.com/nasa/LPDAAC-Data-Resources/blob/main/setup/setup_instructions_python.md
- 首次运行爬取命令时,需要输入用户名和密码,用户名和密码可以在 Earthdata 注册获取。
- 需要注意的是,密码中最好不要出
@/#/$/%
等符号,爬取时可能会出错。 - 单个用户每秒限制最多 100 次请求,参考自:https://forum.earthdata.nasa.gov/viewtopic.php?t=3734
4 使用示例
4.1 HLS 数据
4.1.1 脚本可用参数
-roi
:感兴趣区,需要按照 左下右上 的逆时针顺序设置点坐标,同时还支持shp
与geojson/json
格式文件-clip
:是否对影像进行裁剪,默认False
-tile
:HLS 影像瓦片 ID,例如T49RGQ
-dir
:输出目录,必须是已存在的目录-start
:开始时间,格式为YYYY-MM-DD
-end
:结束时间,格式为YYYY-MM-DD
-prod
:产品名称,例如HLSL30
,HLSS30
,both
-bands
:波段名称,如COASTAL-AEROSOL,BLUE,GREEN,RED,NIR1,SWIR1,SWIR2,CIRRUS,TIR1,TIR2,Fmask
-cc
:筛选影像云量阈值,如70
-qf
:是否使用质量波段过滤云/云阴影像元,默认True
-scale
:是否对影像使用缩放因子,默认True
4.1.2 爬取云端数据并在内存中进行预处理示例
- 爬取 L30 与 S30 的核心光谱波段:仅按照感兴趣区,瓦片 ID,起止时间以及产品名称筛选影像,不进行云量筛选影像,对影像进行去云掩膜处理
python .\\HLS_SuPER\\HLS_SuPER.py -roi '112.9834,30.5286,114.32373,31.64448' -tile T49RGQ -dir .\\data\\HLS\\ALL -start 2024-01-01 -end 2024-01-31 -prod both -bands BLUE,GREEN,RED,NIR1,SWIR1,SWIR2,Fmask -scale True
- 爬取 L30 的所有波段:按照感兴趣区,瓦片 ID,起止时间以及产品名称筛选影像,过滤云量小于 70% 的影像,对影像进行去云掩膜处理
python .\\HLS_SuPER\\HLS_SuPER.py -roi '112.9834,30.5286,114.32373,31.64448' -tile T49RGQ -dir .\\data\\HLS\\L30\\subset -start 2024-01-01 -end 2024-01-31 -prod HLSL30 -bands COASTAL-AEROSOL,BLUE,GREEN,RED,NIR1,SWIR1,SWIR2,CIRRUS,TIR1,TIR2,Fmask -cc 70 -scale True
- 仅爬取 L30 的热红外波段:仅按照感兴趣区,瓦片 ID,起止时间以及产品名称筛选影像,不进行云量筛选影像,对影像进行去云掩膜处理
python .\\HLS_SuPER\\HLS_SuPER.py -roi .\\data\\vectors\\49REL.geojson -tile T49REL -dir .\\data\\HLS\\2024 -start 2024-06-01 -end 2024-09-01 -prod HLSL30 -bands TIR1,TIR2
- 【测试用】根据给定的范围文件
*.geojson
,不进行云量筛选,直接爬取数据
python .\\HLS_SuPER\\HLS_SuPER.py -roi .\\data\\vectors\\49REL.geojson -tile T49REL -dir .\\data\\HLS\\2024 -start 2024-03-01 -end 2024-11-01 -prod both -bands BLUE,GREEN,RED,NIR1,SWIR1,SWIR2,Fmask
4.2 其他数据
v1.0: 直接运行DATA_SuPER/
目录下所需数据对应的*.py 文件即可.
Description
可用于NASA Earth Data系列数据的快速爬取与预处理,NASA Earth Data官网:https://search.earthdata.nasa.gov/search/
数据自动化下载处理工具-初版
Latest
Languages
Python
100%