# 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 ```