From 8883fd8d58983d85dd6c2a901130325f943a5538 Mon Sep 17 00:00:00 2001 From: gis-xh Date: Mon, 11 Aug 2025 19:53:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(setup):=20=E8=A1=A5=E5=85=A8Python3.12?= =?UTF-8?q?=E6=96=B0=E7=8E=AF=E5=A2=83=E4=B8=8B=E7=9A=84selenium=E4=BE=9D?= =?UTF-8?q?=E8=B5=96.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 57 ++++++++++++------------ setup/environment.yml | 1 + setup/{lpdaac_windows.yml => lpdaac.yml} | 10 ++++- 3 files changed, 38 insertions(+), 30 deletions(-) rename setup/{lpdaac_windows.yml => lpdaac.yml} (98%) diff --git a/README.md b/README.md index 43dcc19..4fbf0b7 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,34 @@ ## 仓库说明 -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. 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 安装基础环境 ### 1.1 miniforge -- miniforge是结合conda与mamba的最小化包,比Anaconda和Miniconda更快更轻量,并且配置命令与原conda基本一致,支持直接使用mamba命令。 -- 简而言之,环境配置效率上,miniforge > Mambaforge (202407已废弃) > Miniconda + Mamba > Miniconda > Anaconda +- 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环境变量中。 +- 为了在控制台中直接使用 conda 命令,需要将安装的相关目录配置到 Path 环境变量中。 ``` D:\program\miniforge3 @@ -37,14 +39,14 @@ D:\program\miniforge3\Library\bin ### 1.3 配置权限 -- 详细配置与miniconda相同,图文教程地址:https://gis-xh.github.io/my-note/python/01conda/Win11-Miniconda-install/ -- Windows环境下,需要设置虚拟环境文件夹的访问权限为所有用户可访问,否则会出现无法读取虚拟环境文件的问题 +- 详细配置与 miniconda 相同,图文教程地址:https://gis-xh.github.io/my-note/python/01conda/Win11-Miniconda-install/ +- Windows 环境下,需要设置虚拟环境文件夹的访问权限为所有用户可访问,否则会出现无法读取虚拟环境文件的问题 - 具体地: - 设置`D:\program\miniforge3\env`目录为所有用户可访问,具体操作为:右键点击文件夹 -> 属性 -> 安全 -> 编辑 -> 添加 -> 添加所有用户 -> 全选 -> 应用 -> 确定 ### 1.4 配置镜像源 -- 生成下载源文件的配置文件 (若已经安装过Anaconda/Miniconda,则无需执行此步骤) +- 生成下载源文件的配置文件 (若已经安装过 Anaconda/Miniconda,则无需执行此步骤) ```sh conda config --set show_channel_urls yes @@ -95,12 +97,12 @@ conda init cmd.exe ## 2 运行环境配置 -### 2.1 使用mamba创建并激活虚拟环境 +### 2.1 使用 mamba 创建并激活虚拟环境 - 克隆虚拟环境 (完整复刻运行环境所有依赖) ```sh -mamba env create -f setup/lpdaac_windows.yml +mamba env create -f setup/lpdaac.yml ``` - 克隆虚拟环境 (复刻主要依赖环境-部分依赖可能会更新) @@ -158,11 +160,10 @@ data/ ### 3.2 NASA Earthdata 账户准备 -- 参考自NASA官网示例Demo:https://github.com/nasa/LPDAAC-Data-Resources/blob/main/setup/setup_instructions_python.md +- 参考自 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 - +- 单个用户每秒限制最多 100 次请求,参考自:https://forum.earthdata.nasa.gov/viewtopic.php?t=3734 ## 4 使用示例 @@ -172,7 +173,7 @@ data/ - `-roi`:感兴趣区,需要按照 **左下右上** 的逆时针顺序设置点坐标,同时还支持 `shp` 与 `geojson/json` 格式文件 - `-clip`:是否对影像进行裁剪,默认 `False` -- `-tile`:HLS影像瓦片ID,例如 `T49RGQ` +- `-tile`:HLS 影像瓦片 ID,例如 `T49RGQ` - `-dir`:输出目录,必须是已存在的目录 - `-start`:开始时间,格式为 `YYYY-MM-DD` - `-end`:结束时间,格式为 `YYYY-MM-DD` @@ -184,19 +185,19 @@ data/ #### 4.1.2 爬取云端数据并在内存中进行预处理示例 -- 爬取 L30 与 S30 的核心光谱波段:仅按照感兴趣区,瓦片ID,起止时间以及产品名称筛选影像,不进行云量筛选影像,对影像进行去云掩膜处理 +- 爬取 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% 的影像,对影像进行去云掩膜处理 +- 爬取 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,起止时间以及产品名称筛选影像,不进行云量筛选影像,对影像进行去云掩膜处理 +- 仅爬取 L30 的热红外波段:仅按照感兴趣区,瓦片 ID,起止时间以及产品名称筛选影像,不进行云量筛选影像,对影像进行去云掩膜处理 ```sh 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 @@ -210,4 +211,4 @@ python .\\HLS_SuPER\\HLS_SuPER.py -roi .\\data\\vectors\\49REL.geojson -tile T49 ### 4.2 其他数据 -v1.0: 直接运行`DATA_SuPER/`目录下所需数据对应的*.py文件即可. \ No newline at end of file +v1.0: 直接运行`DATA_SuPER/`目录下所需数据对应的\*.py 文件即可. diff --git a/setup/environment.yml b/setup/environment.yml index ea923c9..47a2f1d 100644 --- a/setup/environment.yml +++ b/setup/environment.yml @@ -26,3 +26,4 @@ dependencies: - scikit-image - seaborn - spectral + - selenium diff --git a/setup/lpdaac_windows.yml b/setup/lpdaac.yml similarity index 98% rename from setup/lpdaac_windows.yml rename to setup/lpdaac.yml index ce671a4..44206c0 100644 --- a/setup/lpdaac_windows.yml +++ b/setup/lpdaac.yml @@ -1,6 +1,5 @@ name: lpdaac channels: - - defaults - conda-forge dependencies: - _libavif_api=1.3.0=h57928b3_0 @@ -269,6 +268,7 @@ dependencies: - opentelemetry-sdk=1.36.0=pyhd8ed1ab_0 - opentelemetry-semantic-conventions=0.57b0=pyh3cfb1c2_0 - orc=2.1.2=h35764e3_0 + - outcome=1.3.0.post0=pyhd8ed1ab_1 - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.3.1=py312hc128f0a_0 @@ -353,6 +353,8 @@ dependencies: - scipy=1.16.0=py312h1416ca1_0 - seaborn=0.13.2=hd8ed1ab_3 - seaborn-base=0.13.2=pyhd8ed1ab_3 + - selenium=4.34.2=pyhe01879c_0 + - selenium-manager=4.34.0=h18a1a76_0 - send2trash=1.8.3=pyh5737063_1 - setproctitle=1.3.6=py312h4389bb4_0 - setuptools=80.9.0=pyhff2d567_0 @@ -383,6 +385,8 @@ dependencies: - tornado=6.5.2=py312he06e257_0 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 + - trio=0.30.0=py312h2e8e312_0 + - trio-websocket=0.12.2=pyh29332c3_0 - types-python-dateutil=2.9.0.20250809=pyhd8ed1ab_0 - typing-extensions=4.14.1=h4440ef1_0 - typing-inspection=0.4.1=pyhd8ed1ab_0 @@ -412,6 +416,7 @@ dependencies: - win_inet_pton=1.1.0=pyh7428d3b_8 - winpty=0.4.3=4 - wrapt=1.17.2=py312h4389bb4_0 + - wsproto=1.2.0=pyhd8ed1ab_1 - xarray=2025.7.1=pyhd8ed1ab_0 - xerces-c=3.2.5=he0c23c2_2 - xorg-libxau=1.0.12=h0e40799_0 @@ -428,4 +433,5 @@ dependencies: - zlib-ng=2.2.5=h1608b31_0 - zstandard=0.23.0=py312h4389bb4_2 - zstd=1.5.7=hbeecb71_2 -prefix: D:\program\miniforge3\envs\lpdaac + - pip: + - beautifulsoup4==4.12.3