Landsat Time Series
[1]:
import os
from pcxarray import pc_query, prepare_timeseries
from distributed import Client # dask distributed client
import matplotlib.pyplot as plt
from IPython.display import HTML
from matplotlib.animation import FuncAnimation
from matplotlib.colors import LinearSegmentedColormap
from shapely import Polygon
import geopandas as gpd
import numpy as np
[2]:
geom = Polygon([
(-91.3011932, 33.852768),
(-90.9098053, 33.8413567),
(-90.9194183, 33.5069017),
(-91.2957001, 33.509193),
(-91.3005066, 33.8579026),
])
gdf = gpd.GeoDataFrame(geometry=[geom], crs="EPSG:4326")
gdf = gdf.to_crs(32615) # UTM 15N
selected_geom = gdf.geometry.union_all().envelope
[3]:
items_gdf = pc_query(
collections="landsat-c2-l2",
geometry=selected_geom,
datetime="1984/2024",
crs=gdf.crs,
# query={"eo:cloud_cover": {"lt": 5}} # OPTIONAL: filter by cloud cover
)
print(f"Found {len(items_gdf)} items")
Found 5439 items
[ ]:
client = Client(n_workers=os.cpu_count(), memory_limit="4GB")
[5]:
da = prepare_timeseries(
items_gdf,
geometry=selected_geom,
crs=gdf.crs,
bands=["green", "nir08", "qa_pixel"],
chunks={"time": 64, "x": 2048, "y": 2048},
max_workers=-1, # use all available CPU cores to submit tasks
)
display(da)
Constructing dask computation graph: 92%|█████████▏| 2520/2740 [05:01<00:26, 8.17timestep/s]/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/036/LC08_L2SP_024036_20220616_20220629_02_T1/LC08_L2SP_024036_20220616_20220629_02_T1_SR_B3.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 1/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/036/LC08_L2SP_024036_20220616_20220629_02_T1/LC08_L2SP_024036_20220616_20220629_02_T1_SR_B3.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 2/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 93%|█████████▎| 2544/2740 [05:04<00:25, 7.78timestep/s]/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220702_20220707_02_T2/LC08_L2SP_024037_20220702_20220707_02_T2_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 1/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/036/LC08_L2SP_024036_20220616_20220629_02_T1/LC08_L2SP_024036_20220616_20220629_02_T1_SR_B3.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 3/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220702_20220707_02_T2/LC08_L2SP_024037_20220702_20220707_02_T2_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 2/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 94%|█████████▎| 2568/2740 [05:07<00:20, 8.20timestep/s]/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20221107_20221115_02_T1/LC08_L2SP_024037_20221107_20221115_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A10%3A14Z&ske=2025-07-16T05%3A10%3A14Z&sks=b&skv=2024-05-04&sig=V%2BGV6yKA6t1RJXaOGR%2BEUPCzbxrbWQ3AdgMvrRVuQcs%3D' not recognized as being in a supported file format.. Attempt 1/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220702_20220707_02_T2/LC08_L2SP_024037_20220702_20220707_02_T2_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 3/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20221107_20221115_02_T1/LC08_L2SP_024037_20221107_20221115_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A10%3A14Z&ske=2025-07-16T05%3A10%3A14Z&sks=b&skv=2024-05-04&sig=V%2BGV6yKA6t1RJXaOGR%2BEUPCzbxrbWQ3AdgMvrRVuQcs%3D' not recognized as being in a supported file format.. Attempt 2/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 95%|█████████▍| 2592/2740 [05:10<00:18, 8.09timestep/s]/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/036/LC08_L2SP_024036_20220616_20220629_02_T1/LC08_L2SP_024036_20220616_20220629_02_T1_SR_B3.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 4/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20221107_20221115_02_T1/LC08_L2SP_024037_20221107_20221115_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A10%3A14Z&ske=2025-07-16T05%3A10%3A14Z&sks=b&skv=2024-05-04&sig=V%2BGV6yKA6t1RJXaOGR%2BEUPCzbxrbWQ3AdgMvrRVuQcs%3D' not recognized as being in a supported file format.. Attempt 3/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220702_20220707_02_T2/LC08_L2SP_024037_20220702_20220707_02_T2_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 4/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 95%|█████████▌| 2616/2740 [05:13<00:15, 7.97timestep/s]/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20221107_20221115_02_T1/LC08_L2SP_024037_20221107_20221115_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A10%3A14Z&ske=2025-07-16T05%3A10%3A14Z&sks=b&skv=2024-05-04&sig=V%2BGV6yKA6t1RJXaOGR%2BEUPCzbxrbWQ3AdgMvrRVuQcs%3D' not recognized as being in a supported file format.. Attempt 4/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 96%|█████████▋| 2640/2740 [05:17<00:12, 7.72timestep/s]/home/dh2306/pcxarray/src/pcxarray/processing.py:319: UserWarning: Failed to read item LC08_L2SP_024036_20220616_02_T1 with error: Failed to load raster from COG after 5 attempts: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/036/LC08_L2SP_024036_20220616_20220629_02_T1/LC08_L2SP_024036_20220616_20220629_02_T1_SR_B3.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Skipping this item.
warn(f"Failed to read item {item_series['id']} with error: {e}. Skipping this item.")
Constructing dask computation graph: 97%|█████████▋| 2664/2740 [05:20<00:10, 7.26timestep/s]/home/dh2306/pcxarray/src/pcxarray/processing.py:319: UserWarning: Failed to read item LC08_L2SP_024037_20220702_02_T2 with error: Failed to load raster from COG after 5 attempts: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220702_20220707_02_T2/LC08_L2SP_024037_20220702_20220707_02_T2_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Skipping this item.
warn(f"Failed to read item {item_series['id']} with error: {e}. Skipping this item.")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220616_20220629_02_T1/LC08_L2SP_024037_20220616_20220629_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 1/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220616_20220629_02_T1/LC08_L2SP_024037_20220616_20220629_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 2/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 98%|█████████▊| 2688/2740 [05:24<00:07, 7.19timestep/s]/home/dh2306/pcxarray/src/pcxarray/processing.py:319: UserWarning: Failed to read item LC08_L2SP_024037_20221107_02_T1 with error: Failed to load raster from COG after 5 attempts: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20221107_20221115_02_T1/LC08_L2SP_024037_20221107_20221115_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A10%3A14Z&ske=2025-07-16T05%3A10%3A14Z&sks=b&skv=2024-05-04&sig=V%2BGV6yKA6t1RJXaOGR%2BEUPCzbxrbWQ3AdgMvrRVuQcs%3D' not recognized as being in a supported file format.. Skipping this item.
warn(f"Failed to read item {item_series['id']} with error: {e}. Skipping this item.")
/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220616_20220629_02_T1/LC08_L2SP_024037_20220616_20220629_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 3/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 99%|█████████▉| 2712/2740 [05:26<00:03, 7.65timestep/s]/home/dh2306/pcxarray/src/pcxarray/io.py:92: UserWarning: Retrying loading raster from COG to error: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220616_20220629_02_T1/LC08_L2SP_024037_20220616_20220629_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Attempt 4/5
warn(f"Retrying loading raster from COG to error: {e}. Attempt {_retries + 1}/{max_retries}")
Constructing dask computation graph: 100%|██████████| 2740/2740 [05:29<00:00, 8.31timestep/s]
/home/dh2306/pcxarray/src/pcxarray/processing.py:319: UserWarning: Failed to read item LC08_L2SP_024037_20220616_02_T1 with error: Failed to load raster from COG after 5 attempts: '/vsicurl/https://landsateuwest.blob.core.windows.net/landsat-c2/level-2/standard/oli-tirs/2022/024/037/LC08_L2SP_024037_20220616_20220629_02_T1/LC08_L2SP_024037_20220616_20220629_02_T1_QA_PIXEL.TIF?st=2025-07-08T14%3A11%3A42Z&se=2025-07-09T14%3A56%3A42Z&sp=rl&sv=2024-05-04&sr=c&skoid=9c8ff44a-6a2c-4dfb-b298-1c9212f64d9a&sktid=72f988bf-86f1-41af-91ab-2d7cd011db47&skt=2025-07-09T05%3A09%3A40Z&ske=2025-07-16T05%3A09%3A40Z&sks=b&skv=2024-05-04&sig=omp2Y4M1akRciljB2%2BUBT7NBODgMSQPcevDEFtrqDL4%3D' not recognized as being in a supported file format.. Skipping this item.
warn(f"Failed to read item {item_series['id']} with error: {e}. Skipping this item.")
/home/dh2306/pcxarray/src/pcxarray/processing.py:643: UserWarning: Failed to process a group with error: Could not read any items that supposedly had partial overlap with the geometry. Try checking the geometry and its CRS.. Skipping this group.
warn(f"Failed to process a group with error: {e}. Skipping this group.")
<xarray.DataArray 'reproject-536c3f7c2189476a9b7a18f4ba4fea16' (time: 2739,
band: 3,
y: 1290, x: 1209)> Size: 51GB
dask.array<rechunk-merge, shape=(2739, 3, 1290, 1209), dtype=float32, chunksize=(64, 1, 1290, 1209), chunktype=numpy.ndarray>
Coordinates:
* time (time) datetime64[ns] 22kB 1984-04-20 1984-04-29 ... 2024-12-31
* band (band) <U8 96B 'green' 'nir08' 'qa_pixel'
* y (y) float64 10kB 3.748e+06 3.748e+06 ... 3.709e+06 3.709e+06
* x (x) float64 10kB 6.572e+05 6.572e+05 ... 6.934e+05 6.934e+05
spatial_ref int32 4B 32615
Attributes:
AREA_OR_POINT: Point
scale_factor: 1.0
add_offset: 0.0
_FillValue: nan[6]:
qa = da.sel(band="qa_pixel")
invalid_mask = qa == qa.rio.nodata
qa_valid = qa.fillna(0).astype(np.uint16) # Use uint16 for all bits
# Define basic masks from individual bits
fill = (qa_valid & (1 << 0)) != 0
dilated_cloud = (qa_valid & (1 << 1)) != 0
cirrus = (qa_valid & (1 << 2)) != 0
cloud = (qa_valid & (1 << 3)) != 0
cloudshadow = (qa_valid & (1 << 4)) != 0
snow = (qa_valid & (1 << 5)) != 0
# Combine all masks
mask = fill | dilated_cloud | cirrus | cloud | cloudshadow | snow | invalid_mask
da = da.where(~mask)
da = da.rio.write_nodata(np.nan)
[ ]:
def dn2sr(da):
"""
Convert Digital Number (DN) to Surface Reflectance (SR) for Landsat Collection 2 Level 2 data.
See https://www.usgs.gov/landsat-missions/landsat-collection-2-surface-reflectance
"""
return (da * 0.0000275) - 0.2
def calculate_ndwi(da):
"""Calculate NDWI from green and nir bands."""
green = dn2sr(da.sel(band="green"))
nir = dn2sr(da.sel(band="nir08"))
ndwi = (green - nir) / (green + nir)
ndwi = ndwi.clip(-1, 1) # Clip values to [-1, 1]
return ndwi
ndwi = calculate_ndwi(da)
yearly_ndwi = ndwi.resample(time="1Y").mean().compute()
[8]:
fig, ax = plt.subplots(figsize=(8, 6))
vmin = yearly_ndwi.min().item()
vmax = yearly_ndwi.max().item()
def update(frame):
ax.clear()
yearly_ndwi.isel(time=frame).plot.imshow(
ax=ax, add_colorbar=False, cmap="GnBu", vmin=vmin, vmax=vmax
)
ax.set_title(None)
ax.set_aspect('equal')
ax.axis('off')
fig.suptitle(f"Mississippi River Landsat Yearly Mean NDWI\n" + \
f"{yearly_ndwi['time'][frame].dt.strftime('%Y').values}")
init_plot = yearly_ndwi.isel(time=0).plot.imshow(
ax=ax, add_colorbar=True, cbar_kwargs={'label': 'NDWI'}, cmap="GnBu", vmin=vmin, vmax=vmax
)
ani = FuncAnimation(fig, update, frames=len(yearly_ndwi['time']), repeat=False)
# show in notebook
HTML(ani.to_jshtml(fps=1, default_mode='once'))
[8]: