154 lines
6.6 KiB
Markdown
154 lines
6.6 KiB
Markdown
# NASA EARTHDATA 数据爬取与预处理 —— 以 HLS 数据集为例
|
||
|
||
## 仓库说明
|
||
|
||
1) 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
|
||
2) 使用说明
|
||
- 本仓库基于官方原始脚本修复了实际使用中存在的bug,并添加了更多可控制参数
|
||
- 爬取时不要使用魔法工具
|
||
- 实测单格网全年影像爬取+预处理约1h
|
||
- 单用户每秒限制100次请求
|
||
|
||
## 1 安装 miniforge
|
||
|
||
### 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,则无需执行此步骤)
|
||
|
||
```sh
|
||
conda config --set show_channel_urls yes
|
||
```
|
||
|
||
- 在`C:\Users\实际用户名\`目录找到`.condarc`文件,使用记事本打开,输入如下内容并保存
|
||
|
||
```
|
||
envs_dirs:
|
||
- D:\program\miniforge3\envs
|
||
- 其他路径地址(可选,创建虚拟环境时将会按照顺序查找)
|
||
channels:
|
||
- defaults
|
||
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
|
||
```
|
||
|
||
### 1.5 初始化 conda
|
||
|
||
- 打开控制台,初始化 PowerShell 与 CMD
|
||
|
||
```sh
|
||
conda init powershell
|
||
```
|
||
|
||
```sh
|
||
conda init cmd.exe
|
||
```
|
||
|
||
## 2 运行环境配置
|
||
|
||
### 2.1 使用mamba创建并激活虚拟环境
|
||
|
||
- 克隆虚拟环境 (Windows环境下推荐)
|
||
|
||
```sh
|
||
mamba env create -f setup/lpdaac_windows.yml
|
||
```
|
||
|
||
- 激活虚拟环境
|
||
|
||
```sh
|
||
mamba activate lpdaac_windows
|
||
```
|
||
|
||
## 3 HLS 数据爬取
|
||
|
||
### 3.1 账户准备
|
||
|
||
- 参考自NASA官网示例Demo:https://github.com/nasa/LPDAAC-Data-Resources/blob/main/setup/setup_instructions_python.md
|
||
- 首次运行爬取命令时,需要输入用户名和密码,用户名和密码可以在 [Earthdata](https://urs.earthdata.nasa.gov/) 注册获取。
|
||
- 需要注意的是,密码中最好不要出 `@/#/$/%` 等符号,爬取时可能会出错。
|
||
- 单个用户每秒限制最多100次请求,参考自:https://forum.earthdata.nasa.gov/viewtopic.php?t=3734
|
||
|
||
### 3.2 脚本可用参数
|
||
|
||
- `-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`
|
||
|
||
### 3.3 爬取云端数据并在内存中进行预处理示例
|
||
|
||
- 爬取 L30 与 S30 的核心光谱波段:仅按照感兴趣区,瓦片ID,起止时间以及产品名称筛选影像,不进行云量筛选影像,对影像进行去云掩膜处理
|
||
|
||
```sh
|
||
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% 的影像,对影像进行去云掩膜处理
|
||
|
||
```sh
|
||
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,起止时间以及产品名称筛选影像,不进行云量筛选影像,对影像进行去云掩膜处理
|
||
|
||
```sh
|
||
python .\\HLS_SuPER\\HLS_SuPER.py -roi '112.9834,30.5286,114.32373,31.64448' -tile T49RGQ -dir .\\data\\HLS\\L30\\TIR -start 2024-01-01 -end 2024-01-31 -prod HLSL30 -bands TIR1,TIR2,Fmask -scale True
|
||
```
|
||
|
||
- 【测试用】根据给定的范围文件 `*.geojson`,不进行云量筛选,直接爬取 L30 与 S30 2024 年的核心光谱波段
|
||
|
||
```sh
|
||
python .\\HLS_SuPER\\HLS_SuPER.py -roi .\\data\\vectors\\wuling_guanqu_polygon.geojson -tile T49RGQ -dir .\\data\\HLS\\ALL\\2024 -start 2024-06-01 -end 2024-09-01 -prod both -bands BLUE,GREEN,RED,NIR1,SWIR1,SWIR2,Fmask -scale True
|
||
```
|