7.9 KiB
Raw Blame History

NASA EARTHDATA 数据自动化爬取与预处理

仓库说明

  1. EARTHDATA 说明
  • NASA 计划于 2026 年底将公开数据全部集成进 EARTHDATA 中
  • HLS 数据集NASA 多部门将 Landsat8/9 与 Sentinel-2A/B 统一协调至 30m划分为
    • L30Landsat8/9包含其独有的 2 个热红外波段,并已处理为表面亮温 ℃)
    • S30Sentinel-2A/B包含其独有的 4 个红边波段)
    • 对于核心六波段Blue/Green/Red/NIR/SWIR1/SWIR2可直接合并使用合并后湖北地区单格网观测频率约为 3-4d
  1. 使用说明
  • 本仓库基于官方原始脚本修复了实际使用中存在的 bug并添加了更多可控制参数
  • 爬取时不要使用魔法工具
  • 实测单格网全年影像爬取+预处理约 1h
  • 单用户每秒限制 100 次请求

1 安装基础环境

1.1 miniforge

  • miniforge 是结合 conda 与 mamba 的最小化包,比 Anaconda 和 Miniconda 更快更轻量,并且配置命令与原 conda 基本一致,支持直接使用 mamba 命令。

  • 简而言之环境配置效率上miniforge > Mambaforge (202407 已废弃) > Miniconda + Mamba > Miniconda > Anaconda

  • 官方仓库地址:https://github.com/conda-forge/miniforge

  • 官方下载地址:https://conda-forge.org/download/

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 账户准备

4 使用示例

4.1 HLS 数据

4.1.1 脚本可用参数

  • -roi:感兴趣区,需要按照 左下右上 的逆时针顺序设置点坐标,同时还支持 shpgeojson/json 格式文件
  • -clip:是否对影像进行裁剪,默认 False
  • -tileHLS 影像瓦片 ID例如 T49RGQ
  • -dir:输出目录,必须是已存在的目录
  • -start:开始时间,格式为 YYYY-MM-DD
  • -end:结束时间,格式为 YYYY-MM-DD
  • -prod:产品名称,例如 HLSL30HLSS30both
  • -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 文件即可.