From 834c9d3563a89fe23635620d76922c3125ba0228 Mon Sep 17 00:00:00 2001 From: xhong Date: Mon, 13 Apr 2026 09:56:22 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E9=87=8D=E5=91=BD=E5=90=8D=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E9=85=8D=E7=BD=AE=E5=B9=B6=E6=9B=B4=E6=96=B0=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E5=92=8C=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将环境配置从 `lpdaac.yml` 重命名为 `openearth.yml` 以反映更通用的工具集定位 - 在 `environment.yml` 中添加 `pystac-client` 依赖以支持更多数据源 - 更新 README.md,补充 Microsoft Planetary Computer 说明并修正环境名称引用 --- README.md | 19 +- setup/environment.yml | 3 +- setup/lpdaac.yml | 439 ------------------------------------------ setup/openearth.yml | Bin 0 -> 32796 bytes 4 files changed, 14 insertions(+), 447 deletions(-) delete mode 100644 setup/lpdaac.yml create mode 100644 setup/openearth.yml diff --git a/README.md b/README.md index 9bae543..cb75a1c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ # 公开RS/GIS数据自动化下载与预处理工具 - - ## 仓库说明 -1. EARTHDATA 说明 +1. NASA EARTHDATA 说明 - NASA 计划于2026年底将公开数据全部集成进 EARTHDATA 中 - HLS 数据集:NASA多部门将 Landsat8/9 与 Sentinel-2A/B 统一协调至 30m,划分为: @@ -12,7 +10,14 @@ - S30(Sentinel-2A/B,包含其独有的 4 个红边波段) - 对于核心六波段(Blue/Green/Red/NIR/SWIR1/SWIR2)可直接合并使用,合并后湖北地区单格网观测频率约为3-4d -2. 使用说明 +2. Miicrosoft Planetary Computer 说明 + +- 微软行星计算机是一个平台,它使用户能够利用云计算的力量来加速环境可持续性和地球科学的发展。 +- 行星计算机将多 PB 的全球环境数据目录与直观的 API、灵活的科学环境相结合,使用户能够回答有关这些数据的全球性问题,并将这些答案提供给保护利益相关者的应用程序。 + +3. Google Earth Engine 说明 + +4. 使用说明 - 针对HLS数据获取,基于NASA EARTHDATA官方原始脚本修复了实际使用中的bug,并添加了更多控制参数 - 使用时不要使用魔法工具 @@ -103,7 +108,7 @@ conda init cmd.exe - 克隆虚拟环境 (完整复刻运行环境所有依赖) ```sh -mamba env create -f setup/lpdaac.yml +mamba env create -f setup/openearth.yml ``` - 克隆虚拟环境 (复刻主要依赖环境-部分依赖可能会更新) @@ -115,13 +120,13 @@ mamba env create -f setup/environment.yml - 激活虚拟环境 ```sh -mamba activate lpdaac +mamba activate openearth ``` - 导出当前虚拟环境 ```sh -mamba env export > setup/lpdaac.yml +mamba env export > setup/openearth.yml ``` ## 3 设计思路 diff --git a/setup/environment.yml b/setup/environment.yml index 12b6756..b8b3601 100644 --- a/setup/environment.yml +++ b/setup/environment.yml @@ -1,4 +1,4 @@ -name: lpdaac +name: openearth channels: - conda-forge dependencies: @@ -24,6 +24,7 @@ dependencies: - ray-default - rioxarray - scikit-image + - pystac-client - seaborn - spectral - selenium diff --git a/setup/lpdaac.yml b/setup/lpdaac.yml deleted file mode 100644 index 54db95f..0000000 --- a/setup/lpdaac.yml +++ /dev/null @@ -1,439 +0,0 @@ -name: lpdaac -channels: - - conda-forge -dependencies: - - _libavif_api=1.3.0=h57928b3_2 - - _openmp_mutex=4.5=2_gnu - - _python_abi3_support=1.0=hd8ed1ab_2 - - affine=2.4.0=pyhd8ed1ab_1 - - aiobotocore=2.24.2=pyhcf101f3_0 - - aiohappyeyeballs=2.6.1=pyhd8ed1ab_0 - - aiohttp=3.13.0=py312h30f5c63_0 - - aiohttp-cors=0.8.1=pyhd8ed1ab_0 - - aioitertools=0.12.0=pyhd8ed1ab_1 - - aiosignal=1.4.0=pyhd8ed1ab_0 - - annotated-types=0.7.0=pyhd8ed1ab_1 - - anyio=4.11.0=pyhcf101f3_0 - - aom=3.9.1=he0c23c2_0 - - argon2-cffi=25.1.0=pyhd8ed1ab_0 - - argon2-cffi-bindings=25.1.0=py312he06e257_1 - - arrow=1.3.0=pyhd8ed1ab_1 - - asciitree=0.3.3=py_2 - - asttokens=3.0.0=pyhd8ed1ab_1 - - async-lru=2.0.5=pyh29332c3_0 - - attrs=25.4.0=pyh71513ae_0 - - aws-c-auth=0.9.0=h467f71e_16 - - aws-c-cal=0.9.2=hef2a5b8_1 - - aws-c-common=0.12.4=hfd05255_0 - - aws-c-compression=0.3.1=ha8a2810_6 - - aws-c-event-stream=0.5.5=h16d2062_1 - - aws-c-http=0.10.2=h909f643_3 - - aws-c-io=0.21.0=h20b9e97_1 - - aws-c-mqtt=0.13.1=h8a47558_4 - - aws-c-s3=0.8.3=hcc9d52c_1 - - aws-c-sdkutils=0.2.4=ha8a2810_1 - - aws-checksums=0.2.7=ha8a2810_2 - - aws-crt-cpp=0.32.10=h16ee0b7_3 - - aws-sdk-cpp=1.11.510=h41ea3a3_14 - - babel=2.17.0=pyhd8ed1ab_0 - - beautifulsoup4=4.14.2=pyha770c72_0 - - bleach=6.2.0=pyh29332c3_4 - - bleach-with-css=6.2.0=h82add2a_4 - - blosc=1.21.6=hfd34d9b_1 - - bokeh=3.8.0=pyhd8ed1ab_0 - - botocore=1.40.18=pyhd8ed1ab_0 - - bounded-pool-executor=0.0.3=pyhd8ed1ab_0 - - branca=0.8.2=pyhd8ed1ab_0 - - brotli=1.1.0=hfd05255_4 - - brotli-bin=1.1.0=hfd05255_4 - - brotli-python=1.1.0=py312hbb81ca0_4 - - bzip2=1.0.8=h0ad9c76_8 - - c-ares=1.34.5=h2466b09_0 - - c-blosc2=2.21.3=h3cf07e4_0 - - ca-certificates=2025.10.5=h4c7d964_0 - - cached-property=1.5.2=hd8ed1ab_1 - - cached_property=1.5.2=pyha770c72_1 - - cachetools=6.2.0=pyhd8ed1ab_0 - - cartopy=0.25.0=py312hc128f0a_1 - - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py312he06e257_0 - - cftime=1.6.4=py312h196c9fc_2 - - charls=2.4.2=h1537add_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 - - click=8.1.8=pyh7428d3b_0 - - click-plugins=1.1.1.2=pyhd8ed1ab_0 - - cligj=0.7.2=pyhd8ed1ab_2 - - cloudpickle=3.1.1=pyhd8ed1ab_0 - - colorama=0.4.6=pyhd8ed1ab_1 - - colorcet=3.1.0=pyhd8ed1ab_1 - - colorful=0.5.6=pyhd8ed1ab_0 - - comm=0.2.3=pyhe01879c_0 - - configobj=5.0.9=pyhd8ed1ab_1 - - contourpy=1.3.3=py312hf90b1b7_2 - - cpython=3.12.11=py312hd8ed1ab_0 - - cryptography=45.0.7=py312h84d000f_1 - - curlify=2.2.1=pyh44b312d_0 - - cycler=0.12.1=pyhd8ed1ab_1 - - cytoolz=1.0.1=py312h4389bb4_0 - - dask=2025.9.1=pyhcf101f3_0 - - dask-core=2025.9.1=pyhcf101f3_0 - - datashader=0.18.2=pyhd8ed1ab_0 - - dav1d=1.2.1=hcfcfb64_0 - - debugpy=1.8.17=py312ha1a9051_0 - - decorator=5.2.1=pyhd8ed1ab_0 - - defusedxml=0.7.1=pyhd8ed1ab_0 - - deprecated=1.2.18=pyhd8ed1ab_0 - - distlib=0.4.0=pyhd8ed1ab_0 - - distributed=2025.9.1=pyhcf101f3_0 - - donfig=0.8.1.post1=pyhd8ed1ab_1 - - earthaccess=0.15.1=pyhcf101f3_0 - - exceptiongroup=1.3.0=pyhd8ed1ab_0 - - executing=2.2.1=pyhd8ed1ab_0 - - fasteners=0.19=pyhd8ed1ab_1 - - filelock=3.20.0=pyhd8ed1ab_0 - - fiona=1.10.1=py312h6e88f47_3 - - firefox=143.0.4=h5112557_0 - - folium=0.20.0=pyhd8ed1ab_0 - - fonttools=4.60.1=py312h05f76fc_0 - - fqdn=1.5.1=pyhd8ed1ab_1 - - freetype=2.14.1=h57928b3_0 - - freexl=2.0.0=hf297d47_2 - - frozenlist=1.7.0=py312hfdf67e6_0 - - fsspec=2025.9.0=pyhd8ed1ab_0 - - gdal=3.10.3=py312h07de9ea_21 - - geckodriver=0.36.0=h127b8e1_0 - - geopandas=1.1.1=pyhd8ed1ab_1 - - geopandas-base=1.1.1=pyha770c72_1 - - geos=3.14.0=hdade9fe_0 - - geotiff=1.7.4=h73469f5_4 - - geoviews=1.14.1=hd8ed1ab_0 - - geoviews-core=1.14.1=pyha770c72_0 - - giflib=5.2.2=h64bf75a_0 - - google-api-core=2.25.2=pyhd8ed1ab_0 - - google-auth=2.41.1=pyhd8ed1ab_0 - - googleapis-common-protos=1.70.0=pyhd8ed1ab_0 - - grpcio=1.71.0=py312h18946f6_1 - - h11=0.16.0=pyhd8ed1ab_0 - - h2=4.3.0=pyhcf101f3_0 - - h5netcdf=1.6.4=pyhd8ed1ab_0 - - h5py=3.14.0=nompi_py312h03cd2ba_101 - - harmony-py=0.4.14=pyhd8ed1ab_0 - - hdf4=4.2.15=h5557f11_7 - - hdf5=1.14.6=nompi_he30205f_103 - - holoviews=1.21.0=pyhd8ed1ab_0 - - hpack=4.1.0=pyhd8ed1ab_0 - - httpcore=1.0.9=pyh29332c3_0 - - httpx=0.28.1=pyhd8ed1ab_0 - - hvplot=0.12.1=pyhd8ed1ab_0 - - hyperframe=6.1.0=pyhd8ed1ab_0 - - icu=75.1=he0c23c2_0 - - idna=3.10=pyhd8ed1ab_1 - - imagecodecs=2025.8.2=py312h424859f_4 - - imageio=2.37.0=pyhfb79c49_0 - - importlib-metadata=8.7.0=pyhe01879c_1 - - importlib-resources=6.5.2=pyhd8ed1ab_0 - - importlib_resources=6.5.2=pyhd8ed1ab_0 - - ipykernel=6.30.1=pyh3521513_0 - - ipython=9.6.0=pyh6be1c34_0 - - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - - ipywidgets=8.1.7=pyhd8ed1ab_0 - - isoduration=20.11.0=pyhd8ed1ab_1 - - jedi=0.19.2=pyhd8ed1ab_1 - - jinja2=3.1.6=pyhd8ed1ab_0 - - jmespath=1.0.1=pyhd8ed1ab_1 - - joblib=1.5.2=pyhd8ed1ab_0 - - json5=0.12.1=pyhd8ed1ab_0 - - jsonpointer=3.0.0=py312h2e8e312_2 - - jsonschema=4.25.1=pyhe01879c_0 - - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - - jsonschema-with-format-nongpl=4.25.1=he01879c_0 - - jupyter=1.1.1=pyhd8ed1ab_1 - - jupyter-lsp=2.3.0=pyhcf101f3_0 - - jupyter_bokeh=4.0.5=pyhd8ed1ab_1 - - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_console=6.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh5737063_0 - - jupyter_events=0.12.0=pyh29332c3_0 - - jupyter_server=2.17.0=pyhcf101f3_0 - - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - - jupyterlab=4.4.9=pyhd8ed1ab_0 - - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - - jxrlib=1.1=hcfcfb64_3 - - kiwisolver=1.4.9=py312h78d62e6_1 - - krb5=1.21.3=hdf4eb48_0 - - lark=1.3.0=pyhd8ed1ab_0 - - lazy-loader=0.4=pyhd8ed1ab_2 - - lcms2=2.17=hbcf6048_0 - - lerc=4.0.0=h6470a55_1 - - libabseil=20250127.1=cxx17_h4eb7d71_0 - - libaec=1.1.4=h20038f6_0 - - libarchive=3.8.1=gpl_h26aea39_101 - - libarrow=20.0.0=h7ea4809_8_cuda - - libarrow-acero=20.0.0=h7d8d6a5_8_cuda - - libarrow-dataset=20.0.0=h7d8d6a5_8_cuda - - libarrow-substrait=20.0.0=hb76e781_8_cuda - - libavif16=1.3.0=he916da2_2 - - libblas=3.9.0=35_h5709861_mkl - - libbrotlicommon=1.1.0=hfd05255_4 - - libbrotlidec=1.1.0=hfd05255_4 - - libbrotlienc=1.1.0=hfd05255_4 - - libcblas=3.9.0=35_h2a3cdd5_mkl - - libcrc32c=1.1.2=h0e60522_0 - - libcurl=8.14.1=h88aaa65_0 - - libdeflate=1.24=h76ddb4d_0 - - libevent=2.1.12=h3671451_1 - - libexpat=2.7.1=hac47afa_0 - - libffi=3.4.6=h537db12_1 - - libfreetype=2.14.1=h57928b3_0 - - libfreetype6=2.14.1=hdbac1cb_0 - - libgcc=15.2.0=h1383e82_7 - - libgdal-core=3.10.3=haf333d4_21 - - libgdal-hdf4=3.10.3=ha47b6c4_21 - - libgomp=15.2.0=h1383e82_7 - - libgoogle-cloud=2.36.0=hf249c01_1 - - libgoogle-cloud-storage=2.36.0=he5eb982_1 - - libgrpc=1.71.0=h8c3449c_1 - - libhwloc=2.12.1=default_h64bd3f2_1002 - - libhwy=1.3.0=ha71e874_1 - - libiconv=1.18=hc1393d2_2 - - libjpeg-turbo=3.1.0=h2466b09_0 - - libjxl=0.11.1=hb7713f0_4 - - libkml=1.3.0=h538826c_1021 - - liblapack=3.9.0=35_hf9ab0e9_mkl - - liblzma=5.8.1=h2466b09_2 - - libnetcdf=4.9.3=nompi_h7d90bef_103 - - libparquet=20.0.0=ha850022_8_cuda - - libpng=1.6.50=h7351971_1 - - libprotobuf=5.29.3=hd33f5f0_2 - - libre2-11=2025.06.26=habfad5f_0 - - librttopo=1.1.0=h5ff11c1_19 - - libsodium=1.0.20=hc70643c_0 - - libspatialite=5.1.0=gpl_h3bf7137_118 - - libsqlite=3.50.4=hf5d6505_0 - - libssh2=1.11.1=h9aa295b_0 - - libthrift=0.21.0=hbe90ef8_0 - - libtiff=4.7.1=h550210a_0 - - libutf8proc=2.10.0=hff4702e_0 - - libwebp-base=1.6.0=h4d5522a_0 - - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_10 - - libxcb=1.17.0=h0e4246c_0 - - libxml2=2.15.0=ha29bfb0_1 - - libxml2-16=2.15.0=h06f855e_1 - - libxml2-devel=2.15.0=ha29bfb0_1 - - libzip=1.11.2=h3135430_0 - - libzlib=1.3.1=h2466b09_2 - - libzopfli=1.0.3=h0e60522_0 - - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=21.1.2=hfa2b4ca_3 - - llvmlite=0.45.1=py312hdb9728c_0 - - locket=1.0.0=pyhd8ed1ab_0 - - lz4=4.4.4=py312ha1aa51a_1 - - lz4-c=1.10.0=h2466b09_1 - - lzo=2.10=h6a83c73_1002 - - mapclassify=2.10.0=pyhd8ed1ab_1 - - markdown=3.9=pyhd8ed1ab_0 - - markdown-it-py=4.0.0=pyhd8ed1ab_0 - - markupsafe=3.0.3=py312h05f76fc_0 - - matplotlib-base=3.10.6=py312h0ebf65c_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 - - mdit-py-plugins=0.5.0=pyhd8ed1ab_0 - - mdurl=0.1.2=pyhd8ed1ab_1 - - minizip=4.0.10=h9fa1bad_0 - - mistune=3.1.4=pyhcf101f3_0 - - mkl=2024.2.2=h57928b3_16 - - msgpack-python=1.1.2=py312hf90b1b7_0 - - multidict=6.6.3=py312h05f76fc_0 - - multimethod=2.0=pyhd8ed1ab_0 - - multipledispatch=0.6.0=pyhd8ed1ab_1 - - munkres=1.1.4=pyhd8ed1ab_1 - - narwhals=2.7.0=pyhcf101f3_0 - - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbformat=5.10.4=pyhd8ed1ab_1 - - nest-asyncio=1.6.0=pyhd8ed1ab_1 - - netcdf4=1.7.2=nompi_py312h79d12a2_104 - - networkx=3.5=pyhe01879c_0 - - notebook=7.4.7=pyhd8ed1ab_0 - - notebook-shim=0.2.4=pyhd8ed1ab_1 - - numba=0.62.1=py312h9a042f1_0 - - numcodecs=0.15.1=py312h72972c8_0 - - numpy=2.3.3=py312ha72d056_0 - - odc-geo=0.5.0rc1=pyhd8ed1ab_0 - - odc-loader=0.5.1=pyhd8ed1ab_0 - - odc-stac=0.4.0=pyhd8ed1ab_0 - - opencensus=0.11.3=pyhd8ed1ab_1 - - opencensus-context=0.1.3=py312h2e8e312_4 - - openjpeg=2.5.4=h24db6dd_0 - - openssl=3.5.4=h725018a_0 - - opentelemetry-api=1.35.0=pyhd8ed1ab_0 - - opentelemetry-exporter-prometheus=0.56b0=pyhe01879c_1 - - opentelemetry-proto=1.37.0=pyhd8ed1ab_0 - - opentelemetry-sdk=1.35.0=pyhd8ed1ab_0 - - opentelemetry-semantic-conventions=0.56b0=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.3=py312hc128f0a_1 - - pandocfilters=1.5.0=pyhd8ed1ab_0 - - panel=1.8.2=pyhd8ed1ab_0 - - param=2.2.1=pyhd8ed1ab_0 - - parso=0.8.5=pyhcf101f3_0 - - partd=1.4.2=pyhd8ed1ab_0 - - patsy=1.0.1=pyhd8ed1ab_1 - - pcre2=10.46=h3402e2f_0 - - pickleshare=0.7.5=pyhd8ed1ab_1004 - - pillow=11.3.0=py312h5ee8bfe_3 - - pip=25.2=pyh8b19718_0 - - platformdirs=4.5.0=pyhcf101f3_0 - - pockets=0.9.1=pyhd8ed1ab_1 - - pqdm=0.2.0=pyhd8ed1ab_1 - - progressbar2=4.2.0=pyhd8ed1ab_0 - - proj=9.7.0=h9080b7b_0 - - prometheus_client=0.23.1=pyhd8ed1ab_0 - - prompt-toolkit=3.0.52=pyha770c72_0 - - prompt_toolkit=3.0.52=hd8ed1ab_0 - - propcache=0.3.1=py312h31fea79_0 - - proto-plus=1.26.1=pyhd8ed1ab_0 - - protobuf=5.29.3=py312h275cf98_0 - - psutil=7.1.0=py312he06e257_0 - - pthread-stubs=0.4=h0e40799_1002 - - pure_eval=0.2.3=pyhd8ed1ab_1 - - py-spy=0.4.1=h77a83cd_0 - - pyarrow=20.0.0=py312h2e8e312_0 - - pyarrow-core=20.0.0=py312h607bf26_0_cuda - - pyasn1=0.6.1=pyhd8ed1ab_2 - - pyasn1-modules=0.4.2=pyhd8ed1ab_0 - - pycparser=2.22=pyh29332c3_1 - - pyct=0.6.0=pyhd8ed1ab_0 - - pydantic=2.12.0=pyh3cfb1c2_0 - - pydantic-core=2.41.1=py312hdabe01f_0 - - pygments=2.19.2=pyhd8ed1ab_0 - - pykdtree=1.4.3=py312h196c9fc_1 - - pyogrio=0.11.0=py312h6e88f47_0 - - pyopenssl=25.1.0=pyhd8ed1ab_0 - - pyparsing=3.2.5=pyhcf101f3_0 - - pyproj=3.7.2=py312habbd053_2 - - pyresample=1.34.2=py312h275cf98_0 - - pyshp=3.0.2=pyhd8ed1ab_0 - - pysocks=1.7.1=pyh09c184e_7 - - pystac=1.14.1=pyhd8ed1ab_0 - - pystac-client=0.9.0=pyhd8ed1ab_0 - - python=3.12.11=h3f84c4b_0_cpython - - python-cmr=0.13.0=pyhff2d567_1 - - python-dateutil=2.8.2=pyhd8ed1ab_0 - - python-dotenv=0.20.0=pyhd8ed1ab_0 - - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.12.11=hd8ed1ab_0 - - python-json-logger=2.0.7=pyhd8ed1ab_0 - - python-tzdata=2025.2=pyhd8ed1ab_0 - - python-utils=3.9.1=pyhff2d567_1 - - python_abi=3.12=8_cp312 - - pytz=2025.2=pyhd8ed1ab_0 - - pyu2f=0.1.5=pyhd8ed1ab_1 - - pyviz_comms=3.0.6=pyhd8ed1ab_0 - - pywavelets=1.9.0=py312h196c9fc_1 - - pywin32=311=py312h829343e_1 - - pywinpty=2.0.15=py312h275cf98_1 - - pyyaml=6.0.3=py312h05f76fc_0 - - pyzmq=27.1.0=py312hbb5da91_0 - - qhull=2020.2=hc790b64_5 - - rasterio=1.4.3=py312h11f88aa_3 - - rav1e=0.7.1=ha073cba_3 - - ray-core=2.49.2=py312h6652516_2 - - ray-default=2.49.2=py312h8c80c70_2 - - re2=2025.06.26=h3dd2b4f_0 - - referencing=0.36.2=pyh29332c3_0 - - requests=2.32.5=pyhd8ed1ab_0 - - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - - rfc3987-syntax=1.1.0=pyhe01879c_1 - - rioxarray=0.19.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py312hdabe01f_1 - - rsa=4.9.1=pyhd8ed1ab_0 - - s3fs=2025.9.0=pyhd8ed1ab_0 - - scikit-image=0.25.2=py312hc128f0a_2 - - scikit-learn=1.7.2=py312h91ac024_0 - - scipy=1.16.2=py312h33376e8_0 - - seaborn=0.13.2=hd8ed1ab_3 - - seaborn-base=0.13.2=pyhd8ed1ab_3 - - selenium=4.36.0=pyhcf101f3_0 - - selenium-manager=4.36.0=h18a1a76_0 - - send2trash=1.8.3=pyh5737063_1 - - setuptools=80.9.0=pyhff2d567_0 - - shapely=2.1.2=py312ha0f8e3e_0 - - six=1.17.0=pyhe01879c_1 - - smart_open=7.3.1=pyhcf101f3_0 - - snappy=1.2.2=h7fa0ca8_0 - - sniffio=1.3.1=pyhd8ed1ab_1 - - snuggs=1.4.7=pyhd8ed1ab_2 - - sortedcontainers=2.4.0=pyhd8ed1ab_1 - - soupsieve=2.8=pyhd8ed1ab_0 - - spectral=0.24=pyhd8ed1ab_0 - - sphinxcontrib-napoleon=0.7=pyhd8ed1ab_1 - - sqlite=3.50.4=hdb435a2_0 - - stack_data=0.6.3=pyhd8ed1ab_1 - - statsmodels=0.14.5=py312h196c9fc_1 - - svt-av1=3.1.2=hac47afa_0 - - tbb=2021.13.0=h18a62a1_3 - - tblib=3.1.0=pyhd8ed1ab_0 - - tenacity=9.1.2=pyhd8ed1ab_0 - - terminado=0.18.1=pyh5737063_0 - - threadpoolctl=3.6.0=pyhecae5ae_0 - - tifffile=2025.10.4=pyhd8ed1ab_0 - - tinycss2=1.4.0=pyhd8ed1ab_0 - - tinynetrc=1.3.1=pyhd8ed1ab_0 - - tk=8.6.13=h2c6b04d_2 - - tomli=2.3.0=pyhcf101f3_0 - - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py312he06e257_1 - - tqdm=4.67.1=pyhd8ed1ab_1 - - traitlets=5.14.3=pyhd8ed1ab_1 - - trio=0.31.0=py312h680a3fa_0 - - trio-websocket=0.12.2=pyh29332c3_0 - - types-python-dateutil=2.9.0.20251008=pyhd8ed1ab_0 - - typing-extensions=4.15.0=h396c80c_0 - - typing-inspection=0.4.2=pyhd8ed1ab_0 - - typing_extensions=4.15.0=pyhcf101f3_0 - - typing_utils=0.1.0=pyhd8ed1ab_1 - - tzdata=2025b=h78e105d_0 - - uc-micro-py=1.0.3=pyhd8ed1ab_1 - - ucrt=10.0.26100.0=h57928b3_0 - - unicodedata2=16.0.0=py312he06e257_1 - - uri-template=1.3.0=pyhd8ed1ab_1 - - uriparser=0.9.8=h5a68840_0 - - urllib3=2.5.0=pyhd8ed1ab_0 - - vc=14.3=h41ae7f8_31 - - vc14_runtime=14.44.35208=h818238b_31 - - vcomp14=14.44.35208=h818238b_31 - - virtualenv=20.35.3=pyhd8ed1ab_0 - - vs2015_runtime=14.44.35208=h38c0c73_31 - - wcwidth=0.2.14=pyhd8ed1ab_0 - - webcolors=24.11.1=pyhd8ed1ab_0 - - webencodings=0.5.1=pyhd8ed1ab_3 - - websocket-client=1.9.0=pyhd8ed1ab_0 - - wheel=0.45.1=pyhd8ed1ab_1 - - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - - win_inet_pton=1.1.0=pyh7428d3b_8 - - winpty=0.4.3=4 - - wrapt=1.17.3=py312he06e257_1 - - wsproto=1.2.0=pyhd8ed1ab_1 - - xarray=2025.10.1=pyhd8ed1ab_0 - - xerces-c=3.2.5=he0c23c2_2 - - xorg-libxau=1.0.12=h0e40799_0 - - xorg-libxdmcp=1.1.5=h0e40799_0 - - xyzservices=2025.4.0=pyhd8ed1ab_0 - - yaml=0.2.5=h6a83c73_3 - - yarl=1.20.1=py312h31fea79_0 - - zarr=2.18.7=pyhd8ed1ab_0 - - zeromq=4.3.5=h5bddc39_9 - - zfp=1.0.1=h2f0f97f_3 - - zict=3.0.0=pyhd8ed1ab_1 - - zipp=3.23.0=pyhd8ed1ab_0 - - zlib=1.3.1=h2466b09_2 - - zlib-ng=2.2.5=h1608b31_0 - - zstandard=0.25.0=py312he5662c2_0 - - zstd=1.5.7=hbeecb71_2 -prefix: D:\program\miniforge3\envs\lpdaac diff --git a/setup/openearth.yml b/setup/openearth.yml new file mode 100644 index 0000000000000000000000000000000000000000..36ce601e04d5b121b65d6ff88b203d8238d41b07 GIT binary patch literal 32796 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 literal 0 HcmV?d00001