opendatacube / odc-geo

GeoBox and geometry utilities extracted from datacube-core
https://odc-geo.readthedocs.io/en/latest/
Apache License 2.0
75 stars 11 forks source link

Writing a tif with save_cog_with_dask writes a blank file #111

Closed alexgleith closed 3 months ago

alexgleith commented 8 months ago

As mentioned, I used odc-stac to load data and create a median, then used the new dask function to write to S3.

File wrote fine, but only contains zeros.

ODC-related libraries are as follows:

odc-algo==0.2.3
odc-geo==0.4.2rc1
odc-stac==0.3.7
odc-ui==0.2.0a3

Code I used is below.

import os

import odc.geo  # noqa
from odc.algo import mask_cleanup
from odc.stac import configure_rio, load
from pystac_client import Client

from datacube.utils.dask import start_local_dask
from odc.geo.cog import save_cog_with_dask

dask_client = start_local_dask(n_workers=8, threads_per_worker=4, mem_safety_margin="2G")

catalog = "https://cmr.earthdata.nasa.gov/cloudstac/LPCLOUD/"

# Searching across both landsat and sentinel at 30 m
collections = ["HLSS30.v2.0", "HLSL30.v2.0"]

client = Client.open(catalog)

# BBOX over Precipitous Bluff in Tasmania
ll = (-43.55, 146.45)
ur = (-43.35, 146.75)
bbox = [ll[1], ll[0], ur[1], ur[0]]

# Search for items in the collection
items = client.search(collections=collections, bbox=bbox, datetime="2023-07-01/2023-09-30").items()

# Finds about 109 items
items = [i for i in items]
print(f"Found {len(items)} items")

# Configure GDAL. You need to export your earthdata token as an environment variable.
header_string = f"Authorization: Bearer {os.environ['EARTHDATA_TOKEN']}"
configure_rio(cloud_defaults=True, GDAL_HTTP_HEADERS=header_string)

data = load(
    items,
    bbox=bbox,
    crs="epsg:6933",
    resolution=30,
    chunks={"x": 2500, "y": 2500, "time": 1},
    groupby="solar_day",
    bands=["B04", "B03", "B02", "Fmask"]
)

# Get cloud  mask bitfields
# I think 1 is cloud, but I can't find docs...
# And bit 2 is a mess, but might be cloud shadow... not using that
# I can't actually find the cloud shadow bit
mask_bitfields = [1]  
bitmask = 0
for field in mask_bitfields:
    bitmask |= 1 << field

# Get cloud mask
cloud_mask = data["Fmask"].astype(int) & bitmask != 0

# Contract and then expand the cloud mask to remove small areas
dilated = mask_cleanup(cloud_mask, [("opening", 2), ("dilation", 3)])

masked = data.where(~dilated)
masked = masked.drop("Fmask")

# Create a simple cloud-free median, still in memory
median = masked.median("time")

cog_visual = save_cog_with_dask(
    median["B04"],
    "s3://files.auspatious.com/test_red.tif",
    compression="lzw",
    level=80,
    overview_resampling="average",
    # blocksize=[bsz, bsz // 2, bsz // 4],
    client=dask_client,  # optional, default client will be queried
)

# Seems to write a file full of zeros
cog_visual.compute()
Kirill888 commented 8 months ago

@alexgleith thanks for this, can you mention versions of dask/distributed in your setup, when running this on planetary computer I get no errors and imagery looks fine

image

alexgleith commented 8 months ago

Dask versions:

dask==2023.9.3
dask-glm==0.3.0
dask-image==2023.8.1
dask-ml==2023.3.24

Also: imagecodecs==2023.9.18 and tifffile==2023.9.26.

Kirill888 commented 8 months ago

Can't reproduce 😦 @alexgleith,

Code I'm running:

import os
from dask.distributed import Client as DaskClient
from odc.geo.cog import save_cog_with_dask
from odc.stac import configure_rio, load
from pystac_client import Client

def main(dask_client):
    tk = os.environ.get("EARTHDATA_TOKEN", None)
    if tk is None:
        with open("safe/ers.tk", "rt") as f:
            tk = f.read().strip()

    catalog = "https://cmr.earthdata.nasa.gov/cloudstac/LPCLOUD/"

    # Searching across both landsat and sentinel at 30 m
    collections = ["HLSS30.v2.0", "HLSL30.v2.0"]

    client = Client.open(catalog)

    # BBOX over Precipitous Bluff in Tasmania
    ll = (-43.55, 146.45)
    ur = (-43.35, 146.75)
    bbox = [ll[1], ll[0], ur[1], ur[0]]

    print("Querying STAC catalog")
    # Search for items in the collection
    items = client.search(
        collections=collections,
        bbox=bbox,
        datetime="2023-07-01/2023-09-30",
    ).item_collection()

    # Finds about 109 items
    print(f"Found {len(items)} items")

    rgb_bands = ("B04", "B03", "B02")
    # Configure GDAL. You need to export your earthdata token as an environment variable.
    configure_rio(cloud_defaults=True, GDAL_HTTP_HEADERS=f"Authorization: Bearer {tk}")

    data = load(
        items,
        bbox=bbox,
        crs=6933,
        resolution=30,
        chunks={"x": 2500, "y": 2500, "time": 1},
        groupby="solar_day",
        bands=[*rgb_bands, "Fmask"],
    )

    mask_bitfields = [1]
    bitmask = 0
    for field in mask_bitfields:
        bitmask |= 1 << field

    # Get cloud mask
    cloud_mask = (data["Fmask"].astype(int) & bitmask) != 0

    # Contract and then expand the cloud mask to remove small areas
    if True:
        from odc.algo import mask_cleanup

        is_cloud = mask_cleanup(cloud_mask, [("opening", 2), ("dilation", 3)])
    else:
        is_cloud = cloud_mask

    masked = data.where(~is_cloud)
    masked = masked.drop("Fmask")

    # Create a simple cloud-free median, still in memory
    median = masked.median("time")

    print(f"Running: {dask_client.dashboard_link}")
    path = save_cog_with_dask(
        median.odc.to_rgba(rgb_bands, vmin=0, vmax=1000),
        "rgba.tif",
        compression="webp",
        level=100,
        client=dask_client,
    ).compute()
    print(f"Saved to: {path}")
    return path

if __name__ == "__main__":
    print("Starting Dask")
    dask_client = DaskClient(n_workers=1, threads_per_worker=None)
    print(f"Dask Dashboard: {dask_client.dashboard_link}")
    print("Starting main")
    main(dask_client)

In this conda environment:

name: odc-geo-cog-test
channels:
  - conda-forge

dependencies:
  - python =3.10
  # for new odc-geo
  - tifffile
  - imagecodecs
  - pyproj
  - rasterio
  - shapely
  - dask
  - xarray
  - cachetools

  # for the test notebook
  - pystac-client
  - datacube
  - odc-stac
  - odc-algo
  - pip:
    - odc-geo==0.4.2rc1

conda env list --explicit below

``` # This file may be used to create an environment using: # $ conda create --name --file # platform: osx-arm64 @EXPLICIT https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-common-0.9.4-h93a5062_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h3422bc3_4.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/c-ares-1.20.1-h93a5062_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2023.7.22-hf0a4a13_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.1-h1a8c8d9_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/json-c-0.17-h40ed0f5_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/jxrlib-1.1-h27ca646_2.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libboost-headers-1.82.0-hce30654_6.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libcxx-16.0.6-h4653b0c_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libdeflate-1.19-hb547adb_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h642e427_1.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.5.0-hb7217d7_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-he4db4b2_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libwebp-base-1.3.2-hb547adb_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.2.13-h53f4e23_5.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/llvm-openmp-17.0.3-hcd81f8e_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h642e427_1000.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/ncurses-6.4-h463b476_2.conda https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pthread-stubs-0.4-h27ca646_1001.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/python_abi-3.10-4_cp310.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda https://conda.anaconda.org/conda-forge/osx-arm64/tzcode-2023c-h1a8c8d9_0.conda https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hb547adb_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.3-h27ca646_0.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.0.7-h1a8c8d9_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aom-3.6.1-hb765f3a_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-cal-0.6.7-ha251d5a_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-compression-0.2.17-ha251d5a_4.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-sdkutils-0.1.12-ha251d5a_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-checksums-0.1.17-ha251d5a_3.conda https://conda.anaconda.org/conda-forge/osx-arm64/charls-2.4.2-h13dd4ca_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.5.0-hb7217d7_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/geos-3.12.0-h13dd4ca_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.21.1-h0186832_0.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libabseil-20230802.1-cxx17_h13dd4ca_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libaec-1.1.2-h13dd4ca_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.39-h76d750c_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libsqlite-3.43.2-h091b4b1_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.15-hf346824_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libxml2-2.11.5-h25269f3_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/libzopfli-1.0.3-h9f76cd9_0.tar.bz2 https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/openssl-3.1.4-h0d3ecfb_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.40-hb34f9b4_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pixman-0.42.2-h13dd4ca_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.1.10-h17c5cce_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/svt-av1-1.7.0-hb765f3a_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-hb31c410_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/uriparser-0.9.7-hb7217d7_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/zfp-1.0.0-h82938aa_4.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/zlib-1.2.13-h53f4e23_5.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/zstd-1.5.5-h4f39d0f_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-io-0.13.35-h0f79f92_4.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/blosc-1.21.5-hc338f07_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/c-blosc2-2.10.5-h8eb3132_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.6.0-h6da1cb0_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/krb5-1.21.2-h92f50d5_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libarchive-3.7.2-h82b9b87_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libavif16-1.0.1-h18c541d_2.conda https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libglib-2.78.0-h24e9cb9_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libnghttp2-1.55.1-h2b02ca0_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libprotobuf-4.24.3-hf590ac1_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libre2-11-2023.06.02-h1753957_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/librttopo-1.1.0-h667cd51_14.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libtiff-4.6.0-ha8a6c65_2.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libzip-1.10.1-ha0bc3c6_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/minizip-4.0.2-hd5cad61_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/nss-3.94-hc6b9969_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/python-3.10.13-h2469fbe_0_cpython.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/sqlite-3.43.2-hf2abe2d_0.conda https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-event-stream-0.3.2-hd73d0d5_4.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-http-0.7.13-hb3e5a72_7.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/brotli-1.1.0-hb547adb_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/brotli-python-1.1.0-py310h1253130_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/charset-normalizer-3.3.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/freexl-2.0.0-hfbad9fb_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/greenlet-3.0.1-py310hd5a4765_0.conda https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/lark-1.1.8-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/lazy_loader-0.3-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/lcms2-2.15-hf2736f0_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libcurl-8.4.0-h2d989ff_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libpq-16.0-hcea71ed_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/lz4-4.3.2-py310hf90591b_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/markupsafe-2.1.3-py310h2aa6e3c_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/msgpack-python-1.0.6-py310h38f39d4_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/openjpeg-2.5.0-h4c1507b_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/orc-1.9.0-hcd02cb2_3.conda https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/psutil-5.9.5-py310h2aa6e3c_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pyrsistent-0.20.0-py310hd125d64_0.conda https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pyyaml-6.0.1-py310h2aa6e3c_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/re2-2023.06.02-h6135d0a_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.7-py310h2aa6e3c_2.conda https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/slicerator-1.1.0-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/tornado-6.3.3-py310h2aa6e3c_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/wrapt-1.15.0-py310h2aa6e3c_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/xyzservices-2023.10.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-auth-0.7.5-he6edc6d_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-mqtt-0.9.8-he2964ae_0.conda https://conda.anaconda.org/conda-forge/osx-arm64/brunsli-0.1-h9f76cd9_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/cairo-1.18.0-hd1e100b_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/cfitsio-4.3.0-hca87796_0.conda https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/cytoolz-0.12.2-py310h2aa6e3c_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/deprecat-2.1.1-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/hdf5-1.14.2-nompi_h3aba7b3_100.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libgrpc-1.58.2-h19be7b0_0.conda https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pillow-10.1.0-py310hfae7ebd_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/postgresql-16.0-h00cd704_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/proj-9.3.0-h52fb9d0_2.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/psycopg2-2.9.7-py310h1ce8fe0_1.conda https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/ruamel.yaml-0.18.3-py310hd125d64_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/sqlalchemy-1.4.49-py310hd125d64_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/xerces-c-3.2.4-hd886eac_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-c-s3-0.3.20-h8d12f51_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/botocore-1.31.75-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/geoalchemy2-0.14.2-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/geotiff-1.7.1-h71398c0_14.conda https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/kealib-1.5.2-h47b5e36_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libgoogle-cloud-2.12.0-h5a37b55_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libnetcdf-4.9.2-nompi_hb2fb864_112.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libspatialite-5.1.0-h32510b6_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/poppler-23.10.0-hcdd998b_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pyproj-3.6.1-py310h2de6d0e_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/pystac-1.9.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-crt-cpp-0.24.4-h5f3d163_2.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/dask-core-2023.10.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/numpy-1.26.0-py310he2cad68_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/pystac-client-0.7.5-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/tiledb-2.16.3-he15c4da_3.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/aws-sdk-cpp-1.11.182-hba14a0b_2.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/boto3-1.28.75-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/cftime-1.6.3-py310h50ce23c_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/contourpy-1.1.1-py310h38f39d4_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/distributed-2023.10.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/imagecodecs-2023.9.18-py310h646f8c5_2.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/imageio-2.31.5-pyh8c1a49c_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libgdal-3.7.2-h116f65a_7.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/numexpr-2.8.7-py310h6e3cc31_4.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pandas-2.1.2-py310h6e3cc31_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pywavelets-1.4.1-py310h280b8fa_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/scipy-1.11.3-py310hd1cfc7d_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/shapely-2.0.2-py310h656ff59_0.conda https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2 https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/bokeh-3.3.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/libarrow-13.0.0-h87fad27_13_cpu.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/netcdf4-1.6.5-nompi_py310h3aafd6c_100.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/rasterio-1.3.9-py310hdddcdff_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/tifffile-2023.9.26-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/xarray-2023.10.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/datacube-1.8.16-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/odc-geo-0.4.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/pims-0.6.1-pyhd8ed1ab_1.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/pyarrow-13.0.0-py310hf2cf3de_13_cpu.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/osx-arm64/scikit-image-0.22.0-py310h6e3cc31_2.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/dask-2023.10.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/odc-stac-0.3.7-pyhd8ed1ab_0.conda https://conda.anaconda.org/t/wf-a29067ba-8418-4489-b4b9-7e3ab0f09167/conda-forge/noarch/dask-image-2023.8.1-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/odc-algo-0.2.3-pyhd8ed1ab_0.tar.bz2 ```
Kirill888 commented 8 months ago

@alexgleith there is a new release candidate that fixes Dask key aliasing, I doubt that was the problem in your case, but who knows. If you could try your use-case in a "clean, from scratch" environment, that would be great.