Fourmile Canyon Watershed K-means Modeling¶

This project uses NDVI reflectance data from HLS landsat to map landuse and vegetation patterns, using a K-means algorithm to group data based on similar reflectance characteristics.

Site Description¶

Fourmile Canyon stretches West to East in the mountains near Boulder, Colorado. Landuse in this area is varied and includes residential areas, recreation, forest, and of course the watershed for fourmile creek, which eventually connects with Boulder Creek to the East of the city of Boulder. This area was heavily impacted by the Fourmile fire in 2010 (sources 1, 2). Work being done in the area includes flood mitigation (source 3) and mine tailings restoration - this is critical, since Fourmile Canyon provides a source of drinking water for local residents in Boulder County (Source 4).

Sources:

  1. "Fourmile Canyon Fire Findings", Graham et. al., 2012. USFS. (accessed 4/8/25) https://research.fs.usda.gov/treesearch/41028
  2. "Fourmile Canyon Fire", Allen, Simmon, Scott. 2010. NASA Earth Observatory. (accessed 4/8/25) https://earthobservatory.nasa.gov/images/45852/fourmile-canyon-fire
  3. "Fourmile Canyon Creek Flood Mitigation". Mc Farlane. 2025 City of Boulder. (accessed 4/8/25) https://bouldercolorado.gov/projects/fourmile-canyon-creek-flood-mitigation
  4. "Fourmile Canyon Tailings - Black Swan Restoration Project", NGuyen. (accessed 4/8/2025) https://response.epa.gov/site/site_profile.aspx?site_id=14017
In [7]:
## Cell 1: Import libraries / tools

import os # build file directories
import pickle # cache data objects, functions, or files
import re # Work with regular expressions
import warnings # prevent irrelevant warnings

import cartopy.crs as ccrs # cartography package, change coordinate reference systems
import earthaccess # access online data
import earthpy as et # python package for working with earth data
import geopandas as gpd # plots and data tables for geospatial data
import geoviews as gv # data visualization for geospatial data
import hvplot.pandas # interactive data plots 
import hvplot.xarray # interactive plots for raster data
import numpy as np # mathematical functions and analysis in python
import pandas as pd # work with data plots and tables
import rioxarray as rxr # work with rasters
import rioxarray.merge as rxrmerge # merge & mosaic rasters
from tqdm.notebook import tqdm # Use progress bars when downloading data or completing time-intensive tasks
import xarray as xr # work with rasters
from shapely.geometry import Polygon # work with geospatial polygons
from sklearn.cluster import KMeans # build K means cluster models

import pathlib # build paths and directories
import requests

os.environ["GDAL_HTTP_MAX_RETRY"] = "5"
os.environ["GDAL_HTTP_RETRY_DELAY"] = "1"

warnings.simplefilter('ignore')
In [8]:
## Cell 2: Define a function to "pickle" the data download (cache it on the computer)

def cached(func_key, override=False): # Defines a decorator called "cached", which is used to cache the results of function calls by saving them as pickle files.
    """
    A decorator to cache function results
    
    Parameters
    ==========
    key: str
      File basename used to save pickled results
    override: bool
      When True, re-compute even if the results are already stored
    """
    def compute_and_cache_decorator(compute_function): # 'wraps' the primary function in another function
        """
        Wrap the caching function
        
        Parameters
        ==========
        compute_function: function
          The function to run and cache results
        """
        def compute_and_cache(*args, **kwargs): # defines the primary function
            """
            Perform a computation and cache, or load cached result.
            
            Parameters
            ==========
            args
              Positional arguments for the compute function
            kwargs
              Keyword arguments for the compute function
            """
            # Add an identifier from the particular function call
            if 'cache_key' in kwargs:
                key = '_'.join((func_key, kwargs['cache_key']))
            else:
                key = func_key

            path = os.path.join(
                et.io.HOME, et.io.DATA_NAME, 'jars', f'{key}.pickle')
            
            # Check if the cache exists already or override caching
            if not os.path.exists(path) or override:
                # Make jars directory if needed
                os.makedirs(os.path.dirname(path), exist_ok=True)
                
                # Run the compute function as the user did
                result = compute_function(*args, **kwargs)
                
                # Pickle the object
                with open(path, 'wb') as file:
                    pickle.dump(result, file)
            else:
                # Unpickle the object
                with open(path, 'rb') as file:
                    result = pickle.load(file)
                    
            return result
        
        return compute_and_cache
    
    return compute_and_cache_decorator
In [19]:
## Cell 3: Download the watershed boundary shapefile, and plot it with ESRI tiles in the background.

# Call cacheing function
@cached('wbd_10', override=False)
def read_wbd_file(wbd_filename, huc_level, cache_key): # Define a function to read the downloaded wbd shapefile
    
    # Define a template URL for downloading the zipped WBD dataset
    wbd_url = (
        "https://prd-tnm.s3.amazonaws.com"
        "/StagedProducts/Hydrography/WBD/HU2/Shape/"
        f"{wbd_filename}.zip")
    
    # Define wbd directory (use earthpy to get data)
    wbd_dir = et.data.get_data(url=wbd_url)

  # Read desired data
    wbd_path = os.path.join(wbd_dir, 'Shape', f'WBDHU{huc_level}.shp') # create a template to read the downloaded the wbd data as a shapefile, and a path to store the shapefile.
    wbd_gdf = gpd.read_file(wbd_path, engine='pyogrio') # read the wbd data as a gdf
    return wbd_gdf # print the gdf

# Define huc level
huc_level = 12

# Define wbd_gdf in terms of function defined previously (read_wbd_file), with args and kwargs as the WBD shapefile, huc_level, and cache_key.
wbd_gdf = read_wbd_file(
    "WBD_10_HU2_Shape", huc_level, cache_key=f'hu{huc_level}')

# Define fourmile_gdf in terms of wbd_gdf, huc level, and watershed identifier. dissolve borders of the shapefile.
fourmile_gdf = (
    wbd_gdf[wbd_gdf[f'huc{huc_level}']
    .isin(['101900050403'])]
    .dissolve()
)

(
    # Define coordinate reference system for fourmile_gdf as Mercator
    fourmile_gdf.to_crs(ccrs.Mercator())
    # Make an interactive hv plot, with ESRI tiles in the background.
    .hvplot(
        alpha=.2, fill_color='white', 
        tiles='EsriImagery', crs=ccrs.Mercator(), title="Fourmile Canyon Subwatershed")
    .opts(width=900, height=600)
)
Out[19]:

Figure 1: Fourmile Canyon Subwatershed.

This image shows the extent and boundaries of the Fourmile Canyon Subwatershed, overlaid on an ESRI basemap.

In [10]:
## Cell 4: login to earthaccess, and search for HLS tiles covering the WBD site.

# Log in to earthaccess
earthaccess.login(persist=True)

# Search for HLS tiles
results = earthaccess.search_data(
    short_name="HLSL30",
    cloud_hosted=True, 
    bounding_box=tuple(fourmile_gdf.total_bounds), # tiles bounded by the fourmile_gdf (wbd file)
    temporal=("2024-06", "2024-08"), # date range
)
results
Out[10]:
[Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.91489818, 'Latitude': 39.66157578}, {'Longitude': -104.88607749, 'Latitude': 39.74831988}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-03T17:42:50.897Z', 'EndingDateTime': '2024-06-03T17:43:14.784Z'}}
 Size(MB): 211.09787940979004
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024155T174250.v2.0/HLS.L30.T13TDE.2024155T174250.v2.0.B10.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.56713838, 'Latitude': 39.66022228}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.27133734, 'Latitude': 40.65053773}, {'Longitude': -105.56713838, 'Latitude': 39.66022228}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-04T17:36:22.832Z', 'EndingDateTime': '2024-06-04T17:36:46.719Z'}}
 Size(MB): 85.88759708404541
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024156T173622.v2.0/HLS.L30.T13TDE.2024156T173622.v2.0.B07.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-11T17:42:33.167Z', 'EndingDateTime': '2024-06-11T17:42:57.058Z'}}
 Size(MB): 192.7325096130371
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024163T174233.v2.0/HLS.L30.T13TDE.2024163T174233.v2.0.B02.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.60420741, 'Latitude': 39.66003536}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.31001482, 'Latitude': 40.65044037}, {'Longitude': -105.60420741, 'Latitude': 39.66003536}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-12T17:36:34.547Z', 'EndingDateTime': '2024-06-12T17:36:58.433Z'}}
 Size(MB): 89.5349645614624
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024164T173634.v2.0/HLS.L30.T13TDE.2024164T173634.v2.0.B02.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.89321432, 'Latitude': 39.66182818}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-19T17:42:35.785Z', 'EndingDateTime': '2024-06-19T17:42:59.663Z'}}
 Size(MB): 208.0468044281006
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024171T174235.v2.0/HLS.L30.T13TDE.2024171T174235.v2.0.SAA.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.55909505, 'Latitude': 39.66026128}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.26317601, 'Latitude': 40.65055662}, {'Longitude': -105.55909505, 'Latitude': 39.66026128}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-20T17:36:30.877Z', 'EndingDateTime': '2024-06-20T17:36:54.772Z'}}
 Size(MB): 80.59362888336182
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024172T173630.v2.0/HLS.L30.T13TDE.2024172T173630.v2.0.B02.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-27T17:42:45.820Z', 'EndingDateTime': '2024-06-27T17:43:09.711Z'}}
 Size(MB): 208.8241548538208
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024179T174245.v2.0/HLS.L30.T13TDE.2024179T174245.v2.0.VAA.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.55699679, 'Latitude': 39.66027136}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.26140181, 'Latitude': 40.65056065}, {'Longitude': -105.55699679, 'Latitude': 39.66027136}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-06-28T17:36:23.674Z', 'EndingDateTime': '2024-06-28T17:36:47.561Z'}}
 Size(MB): 82.25014114379883
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024180T173623.v2.0/HLS.L30.T13TDE.2024180T173623.v2.0.B09.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.8970618, 'Latitude': 39.66156134}, {'Longitude': -104.88616729, 'Latitude': 39.69371795}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-05T17:42:46.118Z', 'EndingDateTime': '2024-07-05T17:43:10.009Z'}}
 Size(MB): 191.11334609985352
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024187T174246.v2.0/HLS.L30.T13TDE.2024187T174246.v2.0.Fmask.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.55979447, 'Latitude': 39.66025791}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.26423946, 'Latitude': 40.65028393}, {'Longitude': -105.55979447, 'Latitude': 39.66025791}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-06T17:36:39.007Z', 'EndingDateTime': '2024-07-06T17:37:02.894Z'}}
 Size(MB): 83.08455562591553
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024188T173639.v2.0/HLS.L30.T13TDE.2024188T173639.v2.0.SAA.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-13T17:42:55.263Z', 'EndingDateTime': '2024-07-13T17:43:19.150Z'}}
 Size(MB): 191.29655742645264
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024195T174255.v2.0/HLS.L30.T13TDE.2024195T174255.v2.0.B05.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.59966123, 'Latitude': 39.66005892}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.3043374, 'Latitude': 40.65045548}, {'Longitude': -105.59966123, 'Latitude': 39.66005892}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-14T17:36:43.958Z', 'EndingDateTime': '2024-07-14T17:37:07.845Z'}}
 Size(MB): 92.00957775115967
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024196T173643.v2.0/HLS.L30.T13TDE.2024196T173643.v2.0.B11.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.8960126, 'Latitude': 39.66156041}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-21T17:42:55.541Z', 'EndingDateTime': '2024-07-21T17:43:19.436Z'}}
 Size(MB): 209.06141090393066
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024203T174255.v2.0/HLS.L30.T13TDE.2024203T174255.v2.0.Fmask.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.58672206, 'Latitude': 39.660125}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.2915632, 'Latitude': 40.65048844}, {'Longitude': -105.58672206, 'Latitude': 39.660125}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-22T17:36:54.050Z', 'EndingDateTime': '2024-07-22T17:37:17.937Z'}}
 Size(MB): 84.24648761749268
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024204T173654.v2.0/HLS.L30.T13TDE.2024204T173654.v2.0.B03.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.8960126, 'Latitude': 39.66156041}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-29T17:43:06.008Z', 'EndingDateTime': '2024-07-29T17:43:29.890Z'}}
 Size(MB): 187.49278450012207
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024211T174306.v2.0/HLS.L30.T13TDE.2024211T174306.v2.0.B02.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.57203431, 'Latitude': 39.66019827}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.2763051, 'Latitude': 40.65052595}, {'Longitude': -105.57203431, 'Latitude': 39.66019827}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-07-30T17:36:46.658Z', 'EndingDateTime': '2024-07-30T17:37:10.545Z'}}
 Size(MB): 82.0096607208252
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024212T173646.v2.0/HLS.L30.T13TDE.2024212T173646.v2.0.B03.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-06T17:42:59.428Z', 'EndingDateTime': '2024-08-06T17:43:23.314Z'}}
 Size(MB): 195.69117832183838
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024219T174259.v2.0/HLS.L30.T13TDE.2024219T174259.v2.0.Fmask.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.53356613, 'Latitude': 39.66038137}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.23833618, 'Latitude': 40.6503403}, {'Longitude': -105.53356613, 'Latitude': 39.66038137}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-07T17:36:49.588Z', 'EndingDateTime': '2024-08-07T17:37:13.483Z'}}
 Size(MB): 81.72731876373291
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024220T173649.v2.0/HLS.L30.T13TDE.2024220T173649.v2.0.VZA.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-14T17:43:08.129Z', 'EndingDateTime': '2024-08-14T17:43:32.011Z'}}
 Size(MB): 198.9260540008545
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024227T174308.v2.0/HLS.L30.T13TDE.2024227T174308.v2.0.SZA.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.56399099, 'Latitude': 39.66023761}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.26814377, 'Latitude': 40.65054519}, {'Longitude': -105.56399099, 'Latitude': 39.66023761}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-15T17:36:53.104Z', 'EndingDateTime': '2024-08-15T17:37:16.986Z'}}
 Size(MB): 89.20931720733643
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024228T173653.v2.0/HLS.L30.T13TDE.2024228T173653.v2.0.SAA.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.89881047, 'Latitude': 39.66156288}, {'Longitude': -104.88615797, 'Latitude': 39.69939442}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-22T17:43:13.290Z', 'EndingDateTime': '2024-08-22T17:43:37.177Z'}}
 Size(MB): 194.1783037185669
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024235T174313.v2.0/HLS.L30.T13TDE.2024235T174313.v2.0.VZA.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.56888692, 'Latitude': 39.66021373}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.27311154, 'Latitude': 40.65053355}, {'Longitude': -105.56888692, 'Latitude': 39.66021373}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-23T17:37:03.533Z', 'EndingDateTime': '2024-08-23T17:37:27.416Z'}}
 Size(MB): 84.48768043518066
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024236T173703.v2.0/HLS.L30.T13TDE.2024236T173703.v2.0.B01.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -106.1661317, 'Latitude': 39.65575257}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -106.18317261, 'Latitude': 40.6447948}, {'Longitude': -106.1661317, 'Latitude': 39.65575257}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-30T17:43:16.261Z', 'EndingDateTime': '2024-08-30T17:43:40.148Z'}}
 Size(MB): 186.76609706878662
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024243T174316.v2.0/HLS.L30.T13TDE.2024243T174316.v2.0.Fmask.tif'],
 Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}
 Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -105.57658052, 'Latitude': 39.66017579}, {'Longitude': -104.88622009, 'Latitude': 39.66155123}, {'Longitude': -104.88455693, 'Latitude': 40.65079881}, {'Longitude': -105.28127286, 'Latitude': 40.65051396}, {'Longitude': -105.57658052, 'Latitude': 39.66017579}]}}]}}}
 Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2024-08-31T17:37:03.832Z', 'EndingDateTime': '2024-08-31T17:37:27.719Z'}}
 Size(MB): 82.11702060699463
 Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T13TDE.2024244T173703.v2.0/HLS.L30.T13TDE.2024244T173703.v2.0.B03.tif']]
In [11]:
## Cell 5: Define a function to compile data access links from earthaccess (HLS tiles covering the WBD region)

def get_earthaccess_links(results): # Name the function "get_earthaccess_links"
    url_re = re.compile( # compile regular expressions
        r'\.(?P<tile_id>\w+)\.\d+T\d+\.v\d\.\d\.(?P<band>[A-Za-z0-9]+)\.tif' # regular expression pattern for .tiff data downloads
    )

    # Loop through each granule
    link_rows = [] # Create an empty list to put the links in
    for granule in tqdm(results):
        # Get granule information
        info_dict = granule['umm'] # Creates a list of granule metadata values
        granule_id = info_dict['GranuleUR'] # List of granule identifiers
        datetime = pd.to_datetime(
            info_dict['TemporalExtent']['RangeDateTime']['BeginningDateTime'] # creates sublists within the info_dict which identify the date and time information for the granules
        )
        points = (
            info_dict['SpatialExtent']['HorizontalSpatialDomain']['Geometry']
            ['GPolygons'][0]['Boundary']['Points'] # sublists within info_dict define spatial and geometric characteristics of each granule
        )
        geometry = Polygon([(point['Longitude'], point['Latitude']) for point in points]) # This line is running some code from the "Polygon" library. Looks like it's using the granule spatial info gathered in "points" to create polygons.

        # Get URLs for each granule
        files = earthaccess.open([granule])

        # Build metadata DataFrame rows
        for file in files: # set up loop
            match = url_re.search(file.full_name) # define 'match' as the full_name of each granule file
            if match is not None: # if match exists
                link_rows.append( # append to link_rows
                    gpd.GeoDataFrame( # (what to append to link_rows): a gdf for each granule, complete with datetime, tile_id, band, url, and geometry, with CRS = EPSG:4326.
                        dict(
                            datetime=[datetime],
                            tile_id=[match.group('tile_id')],
                            band=[match.group('band')],
                            url=[file],
                            geometry=[geometry]
                        ),
                        crs="EPSG:4326" # Set coordinate reference system
                    )
                )

    # Concatenate metadata DataFrame (compile everything into a gdf)
    if link_rows:
        file_df = pd.concat(link_rows).reset_index(drop=True) # define "file_df" by concatenating and resetting the index (this is merging the granules / HLS tiles into one tile and resetting the index).
    else:
        file_df = gpd.GeoDataFrame(columns=["datetime", "tile_id", "band", "url", "geometry"], crs="EPSG:4326")

    return file_df
In [13]:
## Cell 6: Process the HLS data, looping through each granule to add a cloud mask, crop, and define scale.

@cached('fourmile_reflectance_da_df')
def compute_reflectance_da(search_results, boundary_gdf):
    """
    Connect to files over VSI, crop, cloud mask, and wrangle
    
    Returns a single reflectance DataFrame 
    with all bands as columns and
    centroid coordinates and datetime as the index.
    
    Parameters
    ==========
    file_df : pd.DataFrame
        File connection and metadata (datetime, tile_id, band, and url)
    boundary_gdf : gpd.GeoDataFrame
        Boundary use to crop the data
    """
    def open_dataarray(url, boundary_proj_gdf, scale=1, masked=True):
        # Open masked DataArray
        da = rxr.open_rasterio(url, masked=masked).squeeze() * scale
        
        # Reproject boundary if needed
        if boundary_proj_gdf is None:
            boundary_proj_gdf = boundary_gdf.to_crs(da.rio.crs)
            
        # Crop
        cropped = da.rio.clip_box(*boundary_proj_gdf.total_bounds)
        return cropped
    
    def compute_quality_mask(da, mask_bits=[1, 2, 3]):
        """Mask out low quality data by bit"""
        # Unpack bits into a new axis
        bits = (
            np.unpackbits(
                da.astype(np.uint8), bitorder='little'
            ).reshape(da.shape + (-1,))
        )

        # Select the required bits and check if any are flagged
        mask = np.prod(bits[..., mask_bits]==0, axis=-1)
        return mask

    file_df = get_earthaccess_links(search_results)
    
    granule_da_rows= []
    boundary_proj_gdf = None

    # Loop through each image
    group_iter = file_df.groupby(['datetime', 'tile_id'])
    for (datetime, tile_id), granule_df in tqdm(group_iter):
        print(f'Processing granule {tile_id} {datetime}')
              
        # Open granule cloud cover
        cloud_mask_url = (
            granule_df.loc[granule_df.band=='Fmask', 'url']
            .values[0])
        cloud_mask_cropped_da = open_dataarray(cloud_mask_url, boundary_proj_gdf, masked=False)

        # Compute cloud mask
        cloud_mask = compute_quality_mask(cloud_mask_cropped_da)

        # Loop through each spectral band
        da_list = []
        df_list = []
        for i, row in granule_df.iterrows():
            if row.band.startswith('B'):
                # Open, crop, and mask the band
                band_cropped = open_dataarray(
                    row.url, boundary_proj_gdf, scale=0.0001)
                band_cropped.name = row.band
                # Add the DataArray to the metadata DataFrame row
                row['da'] = band_cropped.where(cloud_mask)
                granule_da_rows.append(row.to_frame().T)
    
    # Reassemble the metadata DataFrame
    return pd.concat(granule_da_rows)

reflectance_da_df = compute_reflectance_da(results, fourmile_gdf)
  0%|          | 0/24 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
QUEUEING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
PROCESSING TASKS | :   0%|          | 0/15 [00:00<?, ?it/s]
COLLECTING RESULTS | :   0%|          | 0/15 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
Processing granule T13TDE 2024-06-03 17:42:50.897000+00:00
Processing granule T13TDE 2024-06-04 17:36:22.832000+00:00
Processing granule T13TDE 2024-06-11 17:42:33.167000+00:00
Processing granule T13TDE 2024-06-12 17:36:34.547000+00:00
Processing granule T13TDE 2024-06-19 17:42:35.785000+00:00
Processing granule T13TDE 2024-06-20 17:36:30.877000+00:00
Processing granule T13TDE 2024-06-27 17:42:45.820000+00:00
Processing granule T13TDE 2024-06-28 17:36:23.674000+00:00
Processing granule T13TDE 2024-07-05 17:42:46.118000+00:00
Processing granule T13TDE 2024-07-06 17:36:39.007000+00:00
Processing granule T13TDE 2024-07-13 17:42:55.263000+00:00
Processing granule T13TDE 2024-07-14 17:36:43.958000+00:00
Processing granule T13TDE 2024-07-21 17:42:55.541000+00:00
Processing granule T13TDE 2024-07-22 17:36:54.050000+00:00
Processing granule T13TDE 2024-07-29 17:43:06.008000+00:00
Processing granule T13TDE 2024-07-30 17:36:46.658000+00:00
Processing granule T13TDE 2024-08-06 17:42:59.428000+00:00
Processing granule T13TDE 2024-08-07 17:36:49.588000+00:00
Processing granule T13TDE 2024-08-14 17:43:08.129000+00:00
Processing granule T13TDE 2024-08-15 17:36:53.104000+00:00
Processing granule T13TDE 2024-08-22 17:43:13.290000+00:00
Processing granule T13TDE 2024-08-23 17:37:03.533000+00:00
Processing granule T13TDE 2024-08-30 17:43:16.261000+00:00
Processing granule T13TDE 2024-08-31 17:37:03.832000+00:00
In [14]:
## Cell 7: Create a function that merges granules across dates, filling in cloud gaps and masking negative values.

@cached('fourmile_reflectance_da')
def merge_and_composite_arrays(granule_da_df):
    # Merge and composite and image for each band
    df_list = []
    da_list = []
    for band, band_df in tqdm(granule_da_df.groupby('band')):
        merged_das = []
        for datetime, date_df in tqdm(band_df.groupby('datetime')):
            # Merge granules for each date
            merged_da = rxrmerge.merge_arrays(list(date_df.da))
            # Mask negative values
            merged_da = merged_da.where(merged_da>0)
            merged_das.append(merged_da)
            
        # Composite images across dates
        composite_da = xr.concat(merged_das, dim='datetime').median('datetime')
        composite_da['band'] = int(band[1:])
        composite_da.name = 'reflectance'
        da_list.append(composite_da)
        
    return xr.concat(da_list, dim='band')

reflectance_da = merge_and_composite_arrays(reflectance_da_df)
reflectance_da
  0%|          | 0/10 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
  0%|          | 0/24 [00:00<?, ?it/s]
Out[14]:
<xarray.DataArray 'reflectance' (band: 10, y: 202, x: 698)> Size: 6MB
array([[[0.0182    , 0.0209    , 0.0201    , ..., 0.0262    ,
         0.0258    , 0.0316    ],
        [0.0196    , 0.0206    , 0.0223    , ..., 0.0256    ,
         0.0241    , 0.0256    ],
        [0.02725   , 0.02735   , 0.0271    , ..., 0.0245    ,
         0.0248    , 0.022     ],
        ...,
        [0.01515   , 0.01845   , 0.0179    , ..., 0.0395    ,
         0.0369    , 0.03555   ],
        [0.01465   , 0.0169    , 0.0175    , ..., 0.0382    ,
         0.0288    , 0.03755   ],
        [0.0152    , 0.0156    , 0.01745   , ..., 0.0467    ,
         0.0351    , 0.03035   ]],

       [[0.0219    , 0.0244    , 0.0241    , ..., 0.0326    ,
         0.0315    , 0.0386    ],
        [0.0238    , 0.0253    , 0.0263    , ..., 0.0309    ,
         0.0296    , 0.0321    ],
        [0.02955   , 0.02975   , 0.02985   , ..., 0.0291    ,
         0.0293    , 0.0275    ],
...
        [0.19745   , 0.19909999, 0.20045   , ..., 0.2911    ,
         0.2868    , 0.30105   ],
        [0.1947    , 0.1959    , 0.1971    , ..., 0.2888    ,
         0.2843    , 0.29659998],
        [0.19330001, 0.19435   , 0.1954    , ..., 0.2881    ,
         0.2844    , 0.29369998]],

       [[0.1629    , 0.1567    , 0.152     , ..., 0.2641    ,
         0.26119998, 0.2599    ],
        [0.1565    , 0.15179999, 0.1484    , ..., 0.2653    ,
         0.26209998, 0.2593    ],
        [0.15715   , 0.15105   , 0.14605   , ..., 0.2638    ,
         0.2624    , 0.25959998],
        ...,
        [0.19929999, 0.20095   , 0.20199999, ..., 0.2756    ,
         0.2721    , 0.28509998],
        [0.1954    , 0.19665   , 0.19775   , ..., 0.2737    ,
         0.2695    , 0.2819    ],
        [0.1945    , 0.1952    , 0.196     , ..., 0.2714    ,
         0.2676    , 0.28179997]]], dtype=float32)
Coordinates:
  * x            (x) float64 6kB 4.518e+05 4.518e+05 ... 4.727e+05 4.727e+05
  * y            (y) float64 2kB 4.436e+06 4.435e+06 ... 4.43e+06 4.429e+06
  * band         (band) int64 80B 1 2 3 4 5 6 7 9 10 11
    spatial_ref  int64 8B 0
xarray.DataArray
'reflectance'
  • band: 10
  • y: 202
  • x: 698
  • 0.0182 0.0209 0.0201 0.0196 0.0196 ... 0.276 0.2714 0.2676 0.2818
    array([[[0.0182    , 0.0209    , 0.0201    , ..., 0.0262    ,
             0.0258    , 0.0316    ],
            [0.0196    , 0.0206    , 0.0223    , ..., 0.0256    ,
             0.0241    , 0.0256    ],
            [0.02725   , 0.02735   , 0.0271    , ..., 0.0245    ,
             0.0248    , 0.022     ],
            ...,
            [0.01515   , 0.01845   , 0.0179    , ..., 0.0395    ,
             0.0369    , 0.03555   ],
            [0.01465   , 0.0169    , 0.0175    , ..., 0.0382    ,
             0.0288    , 0.03755   ],
            [0.0152    , 0.0156    , 0.01745   , ..., 0.0467    ,
             0.0351    , 0.03035   ]],
    
           [[0.0219    , 0.0244    , 0.0241    , ..., 0.0326    ,
             0.0315    , 0.0386    ],
            [0.0238    , 0.0253    , 0.0263    , ..., 0.0309    ,
             0.0296    , 0.0321    ],
            [0.02955   , 0.02975   , 0.02985   , ..., 0.0291    ,
             0.0293    , 0.0275    ],
    ...
            [0.19745   , 0.19909999, 0.20045   , ..., 0.2911    ,
             0.2868    , 0.30105   ],
            [0.1947    , 0.1959    , 0.1971    , ..., 0.2888    ,
             0.2843    , 0.29659998],
            [0.19330001, 0.19435   , 0.1954    , ..., 0.2881    ,
             0.2844    , 0.29369998]],
    
           [[0.1629    , 0.1567    , 0.152     , ..., 0.2641    ,
             0.26119998, 0.2599    ],
            [0.1565    , 0.15179999, 0.1484    , ..., 0.2653    ,
             0.26209998, 0.2593    ],
            [0.15715   , 0.15105   , 0.14605   , ..., 0.2638    ,
             0.2624    , 0.25959998],
            ...,
            [0.19929999, 0.20095   , 0.20199999, ..., 0.2756    ,
             0.2721    , 0.28509998],
            [0.1954    , 0.19665   , 0.19775   , ..., 0.2737    ,
             0.2695    , 0.2819    ],
            [0.1945    , 0.1952    , 0.196     , ..., 0.2714    ,
             0.2676    , 0.28179997]]], dtype=float32)
    • x
      (x)
      float64
      4.518e+05 4.518e+05 ... 4.727e+05
      array([451785., 451815., 451845., ..., 472635., 472665., 472695.])
    • y
      (y)
      float64
      4.436e+06 4.435e+06 ... 4.429e+06
      array([4435515., 4435485., 4435455., ..., 4429545., 4429515., 4429485.])
    • band
      (band)
      int64
      1 2 3 4 5 6 7 9 10 11
      array([ 1,  2,  3,  4,  5,  6,  7,  9, 10, 11])
    • spatial_ref
      ()
      int64
      0
      crs_wkt :
      PROJCS["WGS 84 / UTM zone 13N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-105],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32613"]]
      semi_major_axis :
      6378137.0
      semi_minor_axis :
      6356752.314245179
      inverse_flattening :
      298.257223563
      reference_ellipsoid_name :
      WGS 84
      longitude_of_prime_meridian :
      0.0
      prime_meridian_name :
      Greenwich
      geographic_crs_name :
      WGS 84
      horizontal_datum_name :
      World Geodetic System 1984
      projected_crs_name :
      WGS 84 / UTM zone 13N
      grid_mapping_name :
      transverse_mercator
      latitude_of_projection_origin :
      0.0
      longitude_of_central_meridian :
      -105.0
      false_easting :
      500000.0
      false_northing :
      0.0
      scale_factor_at_central_meridian :
      0.9996
      spatial_ref :
      PROJCS["WGS 84 / UTM zone 13N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-105],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32613"]]
      GeoTransform :
      451770.0 30.0 0.0 4435530.0 0.0 -30.0
      array(0)
    • x
      PandasIndex
      PandasIndex(Index([451785.0, 451815.0, 451845.0, 451875.0, 451905.0, 451935.0, 451965.0,
             451995.0, 452025.0, 452055.0,
             ...
             472425.0, 472455.0, 472485.0, 472515.0, 472545.0, 472575.0, 472605.0,
             472635.0, 472665.0, 472695.0],
            dtype='float64', name='x', length=698))
    • y
      PandasIndex
      PandasIndex(Index([4435515.0, 4435485.0, 4435455.0, 4435425.0, 4435395.0, 4435365.0,
             4435335.0, 4435305.0, 4435275.0, 4435245.0,
             ...
             4429755.0, 4429725.0, 4429695.0, 4429665.0, 4429635.0, 4429605.0,
             4429575.0, 4429545.0, 4429515.0, 4429485.0],
            dtype='float64', name='y', length=202))
    • band
      PandasIndex
      PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 9, 10, 11], dtype='int64', name='band'))
In [15]:
## Cell 8: Clean up the dataframe (.dropna) and fit KMeans model.

# Convert spectral DataArray to a tidy DataFrame
model_df = reflectance_da.to_dataframe().reflectance.unstack('band')
model_df = model_df.drop(columns=[10, 11]).dropna()

# Running the fit and predict functions at the same time.
# We can do this since we don't have target data.
prediction = KMeans(n_clusters=6).fit_predict(model_df.values)

# Add the predicted values back to the model DataFrame
model_df['clusters'] = prediction
model_df
Out[15]:
band 1 2 3 4 5 6 7 9 clusters
y x
4435515.0 451785.0 0.01820 0.0219 0.02890 0.02660 0.02740 0.01855 0.01540 0.00120 2
451815.0 0.02090 0.0244 0.03300 0.02880 0.02950 0.02180 0.01810 0.00150 2
451845.0 0.02010 0.0241 0.03250 0.03090 0.03050 0.02350 0.01900 0.00140 2
451875.0 0.01960 0.0238 0.03280 0.02980 0.02830 0.02100 0.01750 0.00120 2
451905.0 0.01960 0.0237 0.03060 0.02730 0.02580 0.01860 0.01580 0.00120 2
... ... ... ... ... ... ... ... ... ... ...
4429485.0 472575.0 0.03000 0.0434 0.07080 0.08020 0.24270 0.20310 0.14130 0.00120 1
472605.0 0.04310 0.0568 0.08520 0.09100 0.22840 0.18720 0.13370 0.00130 1
472635.0 0.04670 0.0581 0.08880 0.09640 0.21530 0.17610 0.13070 0.00140 1
472665.0 0.03510 0.0471 0.07870 0.08040 0.24000 0.15890 0.11170 0.00120 1
472695.0 0.03035 0.0408 0.06795 0.06595 0.25835 0.15370 0.10115 0.00125 0

140994 rows × 9 columns

In [16]:
## Cell 9: Plot K-means and RGB images of the watershed.

# Plot the k-means clusters
rgb = reflectance_da.sel(band=[4, 3, 2])
rgb_uint8 = (rgb * 255).astype(np.uint8).where(rgb!=np.nan)
rgb_bright = rgb_uint8 * 10
rgb_sat = rgb_bright.where(rgb_bright < 255, 255)

(
    rgb_sat.hvplot.rgb( 
        x='x', y='y', bands='band',
        data_aspect=1,
        xaxis=None, yaxis=None, title="K-means and RGB comparison")
    + 
    model_df.clusters.to_xarray().sortby(['x', 'y']).hvplot(
        cmap="accent", aspect='equal') 
)
Out[16]:

Interpretation:¶

The K-means algorithm clusters data into groups based on similar reflectance characteristics. It is limited in that it does not indicate what about the data is similar, however in combination with the RGB image, this can provide some insights. For example, the algorithm appears to have assigned dense forests a value of 2 (yellow, in the K-means plot) and areas with more grasses a value of 3 or 5 (blue and grey). Areas with sparse or mixed vegetation are 4 or 1, and areas with higher reflectance (presumably denser green vegetation) are 0 (green). Looking at the k-means plot with this in mind can give some idea of the distribution of various vegetation types and densities across the study region.

With this interpretation in mind, it's possible to see a variety of patterns in the landscape. Areas with dense forest (k-means group 2, yellow) are located particularly on the Southern sides of valleys, and towards the Western part of the watershed. Areas with more grasses (K-means groups 3 and 5) occur more in the East, and on the Northern sides of the valleys. This has implications for wildfire risk as well as watershed management. With further fine-tuning, it might also be possible to see areas that had previously been burned using this technique.

In [17]:
# initialize
k_means = KMeans(n_clusters = 5)

# fit model and predict
prediction = k_means.fit_predict(model_df.values)

model_df['clusters'] = prediction
model_df
Out[17]:
band 1 2 3 4 5 6 7 9 clusters
y x
4435515.0 451785.0 0.01820 0.0219 0.02890 0.02660 0.02740 0.01855 0.01540 0.00120 1
451815.0 0.02090 0.0244 0.03300 0.02880 0.02950 0.02180 0.01810 0.00150 1
451845.0 0.02010 0.0241 0.03250 0.03090 0.03050 0.02350 0.01900 0.00140 1
451875.0 0.01960 0.0238 0.03280 0.02980 0.02830 0.02100 0.01750 0.00120 1
451905.0 0.01960 0.0237 0.03060 0.02730 0.02580 0.01860 0.01580 0.00120 1
... ... ... ... ... ... ... ... ... ... ...
4429485.0 472575.0 0.03000 0.0434 0.07080 0.08020 0.24270 0.20310 0.14130 0.00120 2
472605.0 0.04310 0.0568 0.08520 0.09100 0.22840 0.18720 0.13370 0.00130 2
472635.0 0.04670 0.0581 0.08880 0.09640 0.21530 0.17610 0.13070 0.00140 2
472665.0 0.03510 0.0471 0.07870 0.08040 0.24000 0.15890 0.11170 0.00120 2
472695.0 0.03035 0.0408 0.06795 0.06595 0.25835 0.15370 0.10115 0.00125 2

140994 rows × 9 columns