Skip to main content
`Ctrl`+`K`

# How to read data from STAC

This notebook shows how to read the data in from a STAC asset using xarray and a little hidden helper library called xpystac.

## tl;dr

For any PySTAC asset that can be represented as an xarray dataset you can read the data using the following command:

    xr.open_dataset(asset)

If you want to load multiple assets from the same item and/or many items at once use:

    odc.stac.load([items])

## Dependencies

There are lots of optional dependencies depending on where and how the data you are interested in are stored. Here are some of the libraries that you will probably need:

- dask - to delay data loading until access

- pystac - STAC object structures

- xarray, rioxarray - data structures

- xpystac, odc-stac - helper for loading pystac into xarray objects

Despite all these install instructions, the import block is very straightforward

    [1]:

    import odc.stac
    import planetary_computer
    import rioxarray
    import xarray as xr

    import pystac

## Examples

Here are a few examples of the different types of objects that you can open in xarray.

### COGs

Read all the data from the COGs referenced by the assets on an item.

    [2]:

    landsat_item = pystac.Item.from_file(
        "https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-c2-l2/items/LC09_L2SP_088084_20230408_02_T2",
    )

    ds = odc.stac.load(
        [landsat_item], chunks={"x": 1024, "y": 1024}, patch_url=planetary_computer.sign
    )
    ds

    [2]:

    <xarray.Dataset> Size: 2GB
    Dimensions:      (y: 7801, x: 7761, time: 1)
    Coordinates:
      * y            (y) float64 62kB -3.713e+06 -3.713e+06 ... -3.947e+06
      * x            (x) float64 62kB 3.774e+05 3.774e+05 ... 6.102e+05 6.102e+05
        spatial_ref  int32 4B 32656
      * time         (time) datetime64[ns] 8B 2023-04-08T23:37:51.630731
    Data variables: (12/19)
        qa           (time, y, x) int16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        red          (time, y, x) uint16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        blue         (time, y, x) uint16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        drad         (time, y, x) int16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        emis         (time, y, x) int16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        emsd         (time, y, x) int16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        ...           ...
        swir16       (time, y, x) uint16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        swir22       (time, y, x) uint16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        coastal      (time, y, x) uint16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        qa_pixel     (time, y, x) uint16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        qa_radsat    (time, y, x) uint16 121MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
        qa_aerosol   (time, y, x) uint8 61MB dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>

xarray.Dataset

- Dimensions:
  - y: 7801
  - x: 7761
  - time: 1
- Coordinates: (4)
  - y
    (y)
    float64
    -3.713e+06 ... -3.947e+06
    units :
      metre
    resolution :
      -30.0
    crs :
      EPSG:32656

        array([-3713100., -3713130., -3713160., ..., -3947040., -3947070., -3947100.],
              shape=(7801,))

  - x
    (x)
    float64
    3.774e+05 3.774e+05 ... 6.102e+05
    units :
      metre
    resolution :
      30.0
    crs :
      EPSG:32656

        array([377400., 377430., 377460., ..., 610140., 610170., 610200.],
              shape=(7761,))

  - spatial_ref
    ()
    int32
    32656
    spatial_ref :
      PROJCRS["WGS 84 / UTM zone 56N",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["UTM zone 56N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",153,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Navigation and medium accuracy spatial referencing."],AREA["Between 150°E and 156°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation."],BBOX[0,150,84,156]],ID["EPSG",32656]]
    crs_wkt :
      PROJCRS["WGS 84 / UTM zone 56N",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["UTM zone 56N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",153,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Navigation and medium accuracy spatial referencing."],AREA["Between 150°E and 156°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation."],BBOX[0,150,84,156]],ID["EPSG",32656]]
    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 ensemble
    projected_crs_name :
      WGS 84 / UTM zone 56N
    grid_mapping_name :
      transverse_mercator
    latitude_of_projection_origin :
      0.0
    longitude_of_central_meridian :
      153.0
    false_easting :
      500000.0
    false_northing :
      0.0
    scale_factor_at_central_meridian :
      0.9996
    GeoTransform :
      377385 30 0 -3713085 0 -30

        array(32656, dtype=int32)

  - time
    (time)
    datetime64[ns]
    2023-04-08T23:37:51.630731

        array(['2023-04-08T23:37:51.630731000'], dtype='datetime64[ns]')

- Data variables: (19)
  - qa
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - red
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - blue
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - drad
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - emis
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - emsd
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - trad
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - urad
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - atran
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - cdist
    (time, y, x)
    int16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      -9999

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | int16 numpy.ndarray

  - green
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - nir08
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - lwir11
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - swir16
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - swir22
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - coastal
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      0

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - qa_pixel
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      1

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - qa_radsat
    (time, y, x)
    uint16
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>

    | Array | Chunk
    Bytes | 115.48 MiB | 2.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint16 numpy.ndarray

  - qa_aerosol
    (time, y, x)
    uint8
    dask.array<chunksize=(1, 1024, 1024), meta=np.ndarray>
    nodata :
      1

    | Array | Chunk
    Bytes | 57.74 MiB | 1.00 MiB
    Shape | (1, 7801, 7761) | (1, 1024, 1024)
    Dask graph | 64 chunks in 3 graph layers
    Data type | uint8 numpy.ndarray

- Indexes: (3)
  - y
    PandasIndex

        PandasIndex(Index([-3713100.0, -3713130.0, -3713160.0, -3713190.0, -3713220.0, -3713250.0,
               -3713280.0, -3713310.0, -3713340.0, -3713370.0,
               ...
               -3946830.0, -3946860.0, -3946890.0, -3946920.0, -3946950.0, -3946980.0,
               -3947010.0, -3947040.0, -3947070.0, -3947100.0],
              dtype='float64', name='y', length=7801))

  - x
    PandasIndex

        PandasIndex(Index([377400.0, 377430.0, 377460.0, 377490.0, 377520.0, 377550.0, 377580.0,
               377610.0, 377640.0, 377670.0,
               ...
               609930.0, 609960.0, 609990.0, 610020.0, 610050.0, 610080.0, 610110.0,
               610140.0, 610170.0, 610200.0],
              dtype='float64', name='x', length=7761))

  - time
    PandasIndex

        PandasIndex(DatetimeIndex(['2023-04-08 23:37:51.630731'], dtype='datetime64[ns]', name='time', freq=None))

- Attributes: (0)

Let’s prove that we really can access the data within the COGs.

    [3]:

    %%time
    ds.blue.mean().compute()

    CPU times: user 2.68 s, sys: 459 ms, total: 3.14 s
    Wall time: 5.31 s

    [3]:

    <xarray.DataArray 'blue' ()> Size: 8B
    array(13940.01841915)
    Coordinates:
        spatial_ref  int32 4B 32656

xarray.DataArray
'blue'

- 1.394e+04

      array(13940.01841915)

- Coordinates: (1)
  - spatial_ref
    ()
    int32
    32656
    spatial_ref :
      PROJCRS["WGS 84 / UTM zone 56N",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["UTM zone 56N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",153,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Navigation and medium accuracy spatial referencing."],AREA["Between 150°E and 156°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation."],BBOX[0,150,84,156]],ID["EPSG",32656]]
    crs_wkt :
      PROJCRS["WGS 84 / UTM zone 56N",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["UTM zone 56N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",153,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Navigation and medium accuracy spatial referencing."],AREA["Between 150°E and 156°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation."],BBOX[0,150,84,156]],ID["EPSG",32656]]
    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 ensemble
    projected_crs_name :
      WGS 84 / UTM zone 56N
    grid_mapping_name :
      transverse_mercator
    latitude_of_projection_origin :
      0.0
    longitude_of_central_meridian :
      153.0
    false_easting :
      500000.0
    false_northing :
      0.0
    scale_factor_at_central_meridian :
      0.9996
    GeoTransform :
      377385 30 0 -3713085 0 -30

        array(32656, dtype=int32)

- Indexes: (0)
- Attributes: (0)

For more control over the individual COGs referenced by the assets, you can grab the href off the asset, sign it and then use it directly.

    [4]:

    landsat_asset = landsat_item.assets["blue"]
    landsat_asset_href = planetary_computer.sign(landsat_asset).href

    da = rioxarray.open_rasterio(landsat_asset_href, overview_level=5)
    da

    [4]:

    <xarray.DataArray (band: 1, y: 122, x: 122)> Size: 30kB
    [14884 values with dtype=uint16]
    Coordinates:
      * band         (band) int64 8B 1
      * x            (x) float64 976B 3.783e+05 3.802e+05 ... 6.074e+05 6.093e+05
      * y            (y) float64 976B -3.714e+06 -3.716e+06 ... -3.946e+06
        spatial_ref  int64 8B 0
    Attributes:
        AREA_OR_POINT:  Point
        _FillValue:     0
        scale_factor:   1.0
        add_offset:     0.0

xarray.DataArray

- band: 1
- y: 122
- x: 122

- ...

      [14884 values with dtype=uint16]

- Coordinates: (4)
  - band
    (band)
    int64
    1

        array([1])

  - x
    (x)
    float64
    3.783e+05 3.802e+05 ... 6.093e+05

        array([378339.221311, 380247.663934, 382156.106557, 384064.54918 ,
               385972.991803, 387881.434426, 389789.877049, 391698.319672,
               393606.762295, 395515.204918, 397423.647541, 399332.090164,
               401240.532787, 403148.97541 , 405057.418033, 406965.860656,
               408874.303279, 410782.745902, 412691.188525, 414599.631148,
               416508.07377 , 418416.516393, 420324.959016, 422233.401639,
               424141.844262, 426050.286885, 427958.729508, 429867.172131,
               431775.614754, 433684.057377, 435592.5     , 437500.942623,
               439409.385246, 441317.827869, 443226.270492, 445134.713115,
               447043.155738, 448951.598361, 450860.040984, 452768.483607,
               454676.92623 , 456585.368852, 458493.811475, 460402.254098,
               462310.696721, 464219.139344, 466127.581967, 468036.02459 ,
               469944.467213, 471852.909836, 473761.352459, 475669.795082,
               477578.237705, 479486.680328, 481395.122951, 483303.565574,
               485212.008197, 487120.45082 , 489028.893443, 490937.336066,
               492845.778689, 494754.221311, 496662.663934, 498571.106557,
               500479.54918 , 502387.991803, 504296.434426, 506204.877049,
               508113.319672, 510021.762295, 511930.204918, 513838.647541,
               515747.090164, 517655.532787, 519563.97541 , 521472.418033,
               523380.860656, 525289.303279, 527197.745902, 529106.188525,
               531014.631148, 532923.07377 , 534831.516393, 536739.959016,
               538648.401639, 540556.844262, 542465.286885, 544373.729508,
               546282.172131, 548190.614754, 550099.057377, 552007.5     ,
               553915.942623, 555824.385246, 557732.827869, 559641.270492,
               561549.713115, 563458.155738, 565366.598361, 567275.040984,
               569183.483607, 571091.92623 , 573000.368852, 574908.811475,
               576817.254098, 578725.696721, 580634.139344, 582542.581967,
               584451.02459 , 586359.467213, 588267.909836, 590176.352459,
               592084.795082, 593993.237705, 595901.680328, 597810.122951,
               599718.565574, 601627.008197, 603535.45082 , 605443.893443,
               607352.336066, 609260.778689])

  - y
    (y)
    float64
    -3.714e+06 ... -3.946e+06

        array([-3714044.139344, -3715962.418033, -3717880.696721, -3719798.97541 ,
               -3721717.254098, -3723635.532787, -3725553.811475, -3727472.090164,
               -3729390.368852, -3731308.647541, -3733226.92623 , -3735145.204918,
               -3737063.483607, -3738981.762295, -3740900.040984, -3742818.319672,
               -3744736.598361, -3746654.877049, -3748573.155738, -3750491.434426,
               -3752409.713115, -3754327.991803, -3756246.270492, -3758164.54918 ,
               -3760082.827869, -3762001.106557, -3763919.385246, -3765837.663934,
               -3767755.942623, -3769674.221311, -3771592.5     , -3773510.778689,
               -3775429.057377, -3777347.336066, -3779265.614754, -3781183.893443,
               -3783102.172131, -3785020.45082 , -3786938.729508, -3788857.008197,
               -3790775.286885, -3792693.565574, -3794611.844262, -3796530.122951,
               -3798448.401639, -3800366.680328, -3802284.959016, -3804203.237705,
               -3806121.516393, -3808039.795082, -3809958.07377 , -3811876.352459,
               -3813794.631148, -3815712.909836, -3817631.188525, -3819549.467213,
               -3821467.745902, -3823386.02459 , -3825304.303279, -3827222.581967,
               -3829140.860656, -3831059.139344, -3832977.418033, -3834895.696721,
               -3836813.97541 , -3838732.254098, -3840650.532787, -3842568.811475,
               -3844487.090164, -3846405.368852, -3848323.647541, -3850241.92623 ,
               -3852160.204918, -3854078.483607, -3855996.762295, -3857915.040984,
               -3859833.319672, -3861751.598361, -3863669.877049, -3865588.155738,
               -3867506.434426, -3869424.713115, -3871342.991803, -3873261.270492,
               -3875179.54918 , -3877097.827869, -3879016.106557, -3880934.385246,
               -3882852.663934, -3884770.942623, -3886689.221311, -3888607.5     ,
               -3890525.778689, -3892444.057377, -3894362.336066, -3896280.614754,
               -3898198.893443, -3900117.172131, -3902035.45082 , -3903953.729508,
               -3905872.008197, -3907790.286885, -3909708.565574, -3911626.844262,
               -3913545.122951, -3915463.401639, -3917381.680328, -3919299.959016,
               -3921218.237705, -3923136.516393, -3925054.795082, -3926973.07377 ,
               -3928891.352459, -3930809.631148, -3932727.909836, -3934646.188525,
               -3936564.467213, -3938482.745902, -3940401.02459 , -3942319.303279,
               -3944237.581967, -3946155.860656])

  - spatial_ref
    ()
    int64
    0
    crs_wkt :
      PROJCS["WGS 84 / UTM zone 56N",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",153],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","32656"]]
    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 56N
    grid_mapping_name :
      transverse_mercator
    latitude_of_projection_origin :
      0.0
    longitude_of_central_meridian :
      153.0
    false_easting :
      500000.0
    false_northing :
      0.0
    scale_factor_at_central_meridian :
      0.9996
    spatial_ref :
      PROJCS["WGS 84 / UTM zone 56N",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",153],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","32656"]]
    GeoTransform :
      377385.0 1908.4426229508197 0.0 -3713085.0 0.0 -1918.2786885245903

        array(0)

- Indexes: (3)
  - band
    PandasIndex

        PandasIndex(Index([1], dtype='int64', name='band'))

  - x
    PandasIndex

        PandasIndex(Index([ 378339.2213114754,  380247.6639344262, 382156.10655737703,
               384064.54918032786,  385972.9918032787,  387881.4344262295,
               389789.87704918033,  391698.3196721311,  393606.7622950819,
               395515.20491803274,
               ...
                592084.7950819673,   593993.237704918,  595901.6803278688,
                597810.1229508197,  599718.5655737704,  601627.0081967213,
                603535.4508196721,  605443.8934426229,  607352.3360655737,
                609260.7786885246],
              dtype='float64', name='x', length=122))

  - y
    PandasIndex

        PandasIndex(Index([-3714044.1393442624,  -3715962.418032787, -3717880.6967213117,
                -3719798.975409836,  -3721717.254098361, -3723635.5327868853,
                 -3725553.81147541, -3727472.0901639345, -3729390.3688524594,
               -3731308.6475409837,
               ...
               -3928891.3524590167,  -3930809.631147541,  -3932727.909836066,
               -3934646.1885245903, -3936564.4672131147, -3938482.7459016396,
                -3940401.024590164,  -3942319.303278689,  -3944237.581967213,
                -3946155.860655738],
              dtype='float64', name='y', length=122))

- Attributes: (4)
  AREA_OR_POINT :
    Point
  _FillValue :
    0
  scale_factor :
    1.0
  add_offset :
    0.0

    [5]:

    %%time
    da.mean()

    CPU times: user 3.44 ms, sys: 0 ns, total: 3.44 ms
    Wall time: 186 ms

    [5]:

    <xarray.DataArray ()> Size: 8B
    array(14472.21996775)
    Coordinates:
        spatial_ref  int64 8B 0

xarray.DataArray

- 1.447e+04

      array(14472.21996775)

- Coordinates: (1)
  - spatial_ref
    ()
    int64
    0
    crs_wkt :
      PROJCS["WGS 84 / UTM zone 56N",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",153],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","32656"]]
    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 56N
    grid_mapping_name :
      transverse_mercator
    latitude_of_projection_origin :
      0.0
    longitude_of_central_meridian :
      153.0
    false_easting :
      500000.0
    false_northing :
      0.0
    scale_factor_at_central_meridian :
      0.9996
    spatial_ref :
      PROJCS["WGS 84 / UTM zone 56N",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",153],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","32656"]]
    GeoTransform :
      377385.0 1908.4426229508197 0.0 -3713085.0 0.0 -1918.2786885245903

        array(0)

- Indexes: (0)
- Attributes: (0)

### Zarr

Read from an asset that references data stored in zarr

    [6]:

    daymet_collection = pystac.Collection.from_file(
        "https://planetarycomputer.microsoft.com/api/stac/v1/collections/daymet-daily-hi"
    )
    daymet_asset = daymet_collection.assets["zarr-abfs"]
    daymet_asset_signed = planetary_computer.sign(daymet_asset)

    ds = xr.open_dataset(daymet_asset_signed, chunks={})
    ds

    [6]:

    <xarray.Dataset> Size: 69GB
    Dimensions:                  (time: 14965, y: 584, x: 284, nv: 2)
    Coordinates:
        lat                      (y, x) float32 663kB dask.array<chunksize=(584, 284), meta=np.ndarray>
        lon                      (y, x) float32 663kB dask.array<chunksize=(584, 284), meta=np.ndarray>
      * time                     (time) datetime64[ns] 120kB 1980-01-01T12:00:00 ...
      * x                        (x) float32 1kB -5.802e+06 ... -5.519e+06
      * y                        (y) float32 2kB -3.9e+04 -4e+04 ... -6.22e+05
    Dimensions without coordinates: nv
    Data variables:
        dayl                     (time, y, x) float32 10GB dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
        lambert_conformal_conic  int16 2B ...
        prcp                     (time, y, x) float32 10GB dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
        srad                     (time, y, x) float32 10GB dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
        swe                      (time, y, x) float32 10GB dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
        time_bnds                (time, nv) datetime64[ns] 239kB dask.array<chunksize=(365, 2), meta=np.ndarray>
        tmax                     (time, y, x) float32 10GB dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
        tmin                     (time, y, x) float32 10GB dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
        vp                       (time, y, x) float32 10GB dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
        yearday                  (time) int16 30kB dask.array<chunksize=(365,), meta=np.ndarray>
    Attributes:
        Conventions:       CF-1.6
        Version_data:      Daymet Data Version 4.0
        Version_software:  Daymet Software Version 4.0
        citation:          Please see http://daymet.ornl.gov/ for current Daymet ...
        references:        Please see http://daymet.ornl.gov/ for current informa...
        source:            Daymet Software Version 4.0
        start_year:        1980

xarray.Dataset

- Dimensions:
  - time: 14965
  - y: 584
  - x: 284
  - nv: 2
- Coordinates: (5)
  - lat
    (y, x)
    float32
    dask.array<chunksize=(584, 284), meta=np.ndarray>
    long_name :
      latitude coordinate
    standard_name :
      latitude
    units :
      degrees_north

    | Array | Chunk
    Bytes | 647.88 kiB | 647.88 kiB
    Shape | (584, 284) | (584, 284)
    Dask graph | 1 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - lon
    (y, x)
    float32
    dask.array<chunksize=(584, 284), meta=np.ndarray>
    long_name :
      longitude coordinate
    standard_name :
      longitude
    units :
      degrees_east

    | Array | Chunk
    Bytes | 647.88 kiB | 647.88 kiB
    Shape | (584, 284) | (584, 284)
    Dask graph | 1 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - time
    (time)
    datetime64[ns]
    1980-01-01T12:00:00 ... 2020-12-...
    bounds :
      time_bnds
    long_name :
      24-hour day based on local time
    standard_name :
      time

        array(['1980-01-01T12:00:00.000000000', '1980-01-02T12:00:00.000000000',
               '1980-01-03T12:00:00.000000000', ..., '2020-12-28T12:00:00.000000000',
               '2020-12-29T12:00:00.000000000', '2020-12-30T12:00:00.000000000'],
              shape=(14965,), dtype='datetime64[ns]')

  - x
    (x)
    float32
    -5.802e+06 ... -5.519e+06
    long_name :
      x coordinate of projection
    standard_name :
      projection_x_coordinate
    units :
      m

        array([-5802250., -5801250., -5800250., ..., -5521250., -5520250., -5519250.],
              shape=(284,), dtype=float32)

  - y
    (y)
    float32
    -3.9e+04 -4e+04 ... -6.22e+05
    long_name :
      y coordinate of projection
    standard_name :
      projection_y_coordinate
    units :
      m

        array([ -39000.,  -40000.,  -41000., ..., -620000., -621000., -622000.],
              shape=(584,), dtype=float32)

- Data variables: (10)
  - dayl
    (time, y, x)
    float32
    dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
    cell_methods :
      area: mean
    grid_mapping :
      lambert_conformal_conic
    long_name :
      daylength
    units :
      s

    | Array | Chunk
    Bytes | 9.25 GiB | 230.93 MiB
    Shape | (14965, 584, 284) | (365, 584, 284)
    Dask graph | 41 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - lambert_conformal_conic
    ()
    int16
    ...
    false_easting :
      0.0
    false_northing :
      0.0
    grid_mapping_name :
      lambert_conformal_conic
    inverse_flattening :
      298.257223563
    latitude_of_projection_origin :
      42.5
    longitude_of_central_meridian :
      -100.0
    semi_major_axis :
      6378137.0
    standard_parallel :
      [25.0, 60.0]

        [1 values with dtype=int16]

  - prcp
    (time, y, x)
    float32
    dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
    cell_methods :
      area: mean time: sum
    grid_mapping :
      lambert_conformal_conic
    long_name :
      daily total precipitation
    units :
      mm/day

    | Array | Chunk
    Bytes | 9.25 GiB | 230.93 MiB
    Shape | (14965, 584, 284) | (365, 584, 284)
    Dask graph | 41 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - srad
    (time, y, x)
    float32
    dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
    cell_methods :
      area: mean time: mean
    grid_mapping :
      lambert_conformal_conic
    long_name :
      daylight average incident shortwave radiation
    units :
      W/m2

    | Array | Chunk
    Bytes | 9.25 GiB | 230.93 MiB
    Shape | (14965, 584, 284) | (365, 584, 284)
    Dask graph | 41 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - swe
    (time, y, x)
    float32
    dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
    cell_methods :
      area: mean time: mean
    grid_mapping :
      lambert_conformal_conic
    long_name :
      snow water equivalent
    units :
      kg/m2

    | Array | Chunk
    Bytes | 9.25 GiB | 230.93 MiB
    Shape | (14965, 584, 284) | (365, 584, 284)
    Dask graph | 41 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - time_bnds
    (time, nv)
    datetime64[ns]
    dask.array<chunksize=(365, 2), meta=np.ndarray>

    | Array | Chunk
    Bytes | 233.83 kiB | 5.70 kiB
    Shape | (14965, 2) | (365, 2)
    Dask graph | 41 chunks in 2 graph layers
    Data type | datetime64[ns] numpy.ndarray

  - tmax
    (time, y, x)
    float32
    dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
    cell_methods :
      area: mean time: maximum
    grid_mapping :
      lambert_conformal_conic
    long_name :
      daily maximum temperature
    units :
      degrees C

    | Array | Chunk
    Bytes | 9.25 GiB | 230.93 MiB
    Shape | (14965, 584, 284) | (365, 584, 284)
    Dask graph | 41 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - tmin
    (time, y, x)
    float32
    dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
    cell_methods :
      area: mean time: minimum
    grid_mapping :
      lambert_conformal_conic
    long_name :
      daily minimum temperature
    units :
      degrees C

    | Array | Chunk
    Bytes | 9.25 GiB | 230.93 MiB
    Shape | (14965, 584, 284) | (365, 584, 284)
    Dask graph | 41 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - vp
    (time, y, x)
    float32
    dask.array<chunksize=(365, 584, 284), meta=np.ndarray>
    cell_methods :
      area: mean time: mean
    grid_mapping :
      lambert_conformal_conic
    long_name :
      daily average vapor pressure
    units :
      Pa

    | Array | Chunk
    Bytes | 9.25 GiB | 230.93 MiB
    Shape | (14965, 584, 284) | (365, 584, 284)
    Dask graph | 41 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - yearday
    (time)
    int16
    dask.array<chunksize=(365,), meta=np.ndarray>
    long_name :
      day of year (DOY) starting with day 1 on Januaray 1st

    | Array | Chunk
    Bytes | 29.23 kiB | 730 B
    Shape | (14965,) | (365,)
    Dask graph | 41 chunks in 2 graph layers
    Data type | int16 numpy.ndarray

- Indexes: (3)
  - time
    PandasIndex

        PandasIndex(DatetimeIndex(['1980-01-01 12:00:00', '1980-01-02 12:00:00',
                       '1980-01-03 12:00:00', '1980-01-04 12:00:00',
                       '1980-01-05 12:00:00', '1980-01-06 12:00:00',
                       '1980-01-07 12:00:00', '1980-01-08 12:00:00',
                       '1980-01-09 12:00:00', '1980-01-10 12:00:00',
                       ...
                       '2020-12-21 12:00:00', '2020-12-22 12:00:00',
                       '2020-12-23 12:00:00', '2020-12-24 12:00:00',
                       '2020-12-25 12:00:00', '2020-12-26 12:00:00',
                       '2020-12-27 12:00:00', '2020-12-28 12:00:00',
                       '2020-12-29 12:00:00', '2020-12-30 12:00:00'],
                      dtype='datetime64[ns]', name='time', length=14965, freq=None))

  - x
    PandasIndex

        PandasIndex(Index([-5802250.0, -5801250.0, -5800250.0, -5799250.0, -5798250.0, -5797250.0,
               -5796250.0, -5795250.0, -5794250.0, -5793250.0,
               ...
               -5528250.0, -5527250.0, -5526250.0, -5525250.0, -5524250.0, -5523250.0,
               -5522250.0, -5521250.0, -5520250.0, -5519250.0],
              dtype='float32', name='x', length=284))

  - y
    PandasIndex

        PandasIndex(Index([ -39000.0,  -40000.0,  -41000.0,  -42000.0,  -43000.0,  -44000.0,
                -45000.0,  -46000.0,  -47000.0,  -48000.0,
               ...
               -613000.0, -614000.0, -615000.0, -616000.0, -617000.0, -618000.0,
               -619000.0, -620000.0, -621000.0, -622000.0],
              dtype='float32', name='y', length=584))

- Attributes: (7)
  Conventions :
    CF-1.6
  Version_data :
    Daymet Data Version 4.0
  Version_software :
    Daymet Software Version 4.0
  citation :
    Please see http://daymet.ornl.gov/ for current Daymet data citation information
  references :
    Please see http://daymet.ornl.gov/ for current information on Daymet references
  source :
    Daymet Software Version 4.0
  start_year :
    1980

### Reference file

If the collection has a reference file we can use that.

This will not work for kerchunk>=0.2.8 and xpystac<=0.2.0. Track the xpystac ticket here: xpystac #48

    [7]:

    cmip6_collection = pystac.Collection.from_file(
        "https://planetarycomputer.microsoft.com/api/stac/v1/collections/nasa-nex-gddp-cmip6"
    )
    cmip6_asset = cmip6_collection.assets["ACCESS-CM2.historical"]
    cmip6_asset_signed = planetary_computer.sign(cmip6_asset)

    ds = xr.open_dataset(cmip6_asset_signed, chunks={}, patch_url=planetary_computer.sign)
    ds

    [7]:

    <xarray.Dataset> Size: 738GB
    Dimensions:  (time: 23741, lat: 600, lon: 1440)
    Coordinates:
      * lat      (lat) float64 5kB -59.88 -59.62 -59.38 -59.12 ... 89.38 89.62 89.88
      * lon      (lon) float64 12kB 0.125 0.375 0.625 0.875 ... 359.4 359.6 359.9
      * time     (time) datetime64[us] 190kB 1950-01-01T12:00:00 ... 2014-12-31T1...
    Data variables:
        hurs     (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        huss     (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        pr       (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        rlds     (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        rsds     (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        sfcWind  (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        tas      (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        tasmax   (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
        tasmin   (time, lat, lon) float32 82GB dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    Attributes: (12/22)
        Conventions:           CF-1.7
        activity:              NEX-GDDP-CMIP6
        cmip6_institution_id:  CSIRO-ARCCSS
        cmip6_license:         CC-BY-SA 4.0
        cmip6_source_id:       ACCESS-CM2
        contact:               Dr. Rama Nemani: rama.nemani@nasa.gov, Dr. Bridget...
        ...                    ...
        scenario:              historical
        source:                BCSD
        title:                 ACCESS-CM2, r1i1p1f1, historical, global downscale...
        tracking_id:           16d27564-470f-41ea-8077-f4cc3efa5bfe
        variant_label:         r1i1p1f1
        version:               1.0

xarray.Dataset

- Dimensions:
  - time: 23741
  - lat: 600
  - lon: 1440
- Coordinates: (3)
  - lat
    (lat)
    float64
    -59.88 -59.62 ... 89.62 89.88
    axis :
      Y
    long_name :
      latitude
    standard_name :
      latitude
    units :
      degrees_north

        array([-59.875, -59.625, -59.375, ...,  89.375,  89.625,  89.875], shape=(600,))

  - lon
    (lon)
    float64
    0.125 0.375 0.625 ... 359.6 359.9
    axis :
      X
    long_name :
      longitude
    standard_name :
      longitude
    units :
      degrees_east

        array([1.25000e-01, 3.75000e-01, 6.25000e-01, ..., 3.59375e+02, 3.59625e+02,
               3.59875e+02], shape=(1440,))

  - time
    (time)
    datetime64[us]
    1950-01-01T12:00:00 ... 2014-12-...
    axis :
      T
    long_name :
      time
    standard_name :
      time
    _FillValue :
      1970-01-01T00:00:00.000000

        array(['1950-01-01T12:00:00.000000', '1950-01-02T12:00:00.000000',
               '1950-01-03T12:00:00.000000', ..., '2014-12-29T12:00:00.000000',
               '2014-12-30T12:00:00.000000', '2014-12-31T12:00:00.000000'],
              shape=(23741,), dtype='datetime64[us]')

- Data variables: (9)
  - hurs
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: time: mean
    comment :
      The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.
    long_name :
      Near-Surface Relative Humidity
    standard_name :
      relative_humidity
    units :
      %

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - huss
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: time: mean
    comment :
      Near-surface (usually, 2 meter) specific humidity.
    long_name :
      Near-Surface Specific Humidity
    standard_name :
      specific_humidity
    units :
      1

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - pr
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: time: mean
    comment :
      includes both liquid and solid phases
    long_name :
      Precipitation
    standard_name :
      precipitation_flux
    units :
      kg m-2 s-1

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - rlds
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: time: mean
    comment :
      The surface called 'surface' means the lower boundary of the atmosphere. 'longwave' means longwave radiation. Downwelling radiation is radiation from above. It does not mean 'net downward'. When thought of as being incident on a surface, a radiative flux is sometimes called 'irradiance'. In addition, it is identical with the quantity measured by a cosine-collector light-meter and sometimes called 'vector irradiance'. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.
    long_name :
      Surface Downwelling Longwave Radiation
    standard_name :
      surface_downwelling_longwave_flux_in_air
    units :
      W m-2

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - rsds
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: time: mean
    comment :
      Surface solar irradiance for UV calculations.
    long_name :
      Surface Downwelling Shortwave Radiation
    standard_name :
      surface_downwelling_shortwave_flux_in_air
    units :
      W m-2

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - sfcWind
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: time: mean
    comment :
      near-surface (usually, 10 meters) wind speed.
    long_name :
      Daily-Mean Near-Surface Wind Speed
    standard_name :
      wind_speed
    units :
      m s-1

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - tas
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: mean time: maximum
    comment :
      near-surface (usually, 2 meter) air temperature; derived from downscaled tasmax & tasmin
    long_name :
      Daily Near-Surface Air Temperature
    standard_name :
      air_temperature
    units :
      K

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - tasmax
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: mean time: maximum
    comment :
      maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')
    long_name :
      Daily Maximum Near-Surface Air Temperature
    standard_name :
      air_temperature
    units :
      K

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

  - tasmin
    (time, lat, lon)
    float32
    dask.array<chunksize=(1, 600, 1440), meta=np.ndarray>
    cell_measures :
      area: areacella
    cell_methods :
      area: mean time: minimum
    comment :
      minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')
    long_name :
      Daily Minimum Near-Surface Air Temperature
    standard_name :
      air_temperature
    units :
      K

    | Array | Chunk
    Bytes | 76.41 GiB | 3.30 MiB
    Shape | (23741, 600, 1440) | (1, 600, 1440)
    Dask graph | 23741 chunks in 2 graph layers
    Data type | float32 numpy.ndarray

- Indexes: (3)
  - lat
    PandasIndex

        PandasIndex(Index([-59.875, -59.625, -59.375, -59.125, -58.875, -58.625, -58.375, -58.125,
               -57.875, -57.625,
               ...
                87.625,  87.875,  88.125,  88.375,  88.625,  88.875,  89.125,  89.375,
                89.625,  89.875],
              dtype='float64', name='lat', length=600))

  - lon
    PandasIndex

        PandasIndex(Index([  0.125,   0.375,   0.625,   0.875,   1.125,   1.375,   1.625,   1.875,
                 2.125,   2.375,
               ...
               357.625, 357.875, 358.125, 358.375, 358.625, 358.875, 359.125, 359.375,
               359.625, 359.875],
              dtype='float64', name='lon', length=1440))

  - time
    PandasIndex

        PandasIndex(DatetimeIndex(['1950-01-01 12:00:00', '1950-01-02 12:00:00',
                       '1950-01-03 12:00:00', '1950-01-04 12:00:00',
                       '1950-01-05 12:00:00', '1950-01-06 12:00:00',
                       '1950-01-07 12:00:00', '1950-01-08 12:00:00',
                       '1950-01-09 12:00:00', '1950-01-10 12:00:00',
                       ...
                       '2014-12-22 12:00:00', '2014-12-23 12:00:00',
                       '2014-12-24 12:00:00', '2014-12-25 12:00:00',
                       '2014-12-26 12:00:00', '2014-12-27 12:00:00',
                       '2014-12-28 12:00:00', '2014-12-29 12:00:00',
                       '2014-12-30 12:00:00', '2014-12-31 12:00:00'],
                      dtype='datetime64[us]', name='time', length=23741, freq=None))

- Attributes: (22)
  Conventions :
    CF-1.7
  activity :
    NEX-GDDP-CMIP6
  cmip6_institution_id :
    CSIRO-ARCCSS
  cmip6_license :
    CC-BY-SA 4.0
  cmip6_source_id :
    ACCESS-CM2
  contact :
    Dr. Rama Nemani: rama.nemani@nasa.gov, Dr. Bridget Thrasher: bridget@climateanalyticsgroup.org
  creation_date :
    2021-10-04T13:59:21.654137+00:00
  disclaimer :
    This data is considered provisional and subject to change. This data is provided as is without any warranty of any kind, either express or implied, arising by law or otherwise, including but not limited to warranties of completeness, non-infringement, accuracy, merchantability, or fitness for a particular purpose. The user assumes all risk associated with the use of, or inability to use, this data.
  external_variables :
    areacella
  frequency :
    day
  history :
    2021-10-04T13:59:21.654137+00:00: install global attributes
  institution :
    NASA Earth Exchange, NASA Ames Research Center, Moffett Field, CA 94035
  product :
    output
  realm :
    atmos
  references :
    BCSD method: Thrasher et al., 2012, Hydrol. Earth Syst. Sci.,16, 3309-3314. Ref period obs: latest version of the Princeton Global Meteorological Forcings (http://hydrology.princeton.edu/data.php), based on Sheffield et al., 2006, J. Climate, 19 (13), 3088-3111.
  resolution_id :
    0.25 degree
  scenario :
    historical
  source :
    BCSD
  title :
    ACCESS-CM2, r1i1p1f1, historical, global downscaled CMIP6 climate projection data
  tracking_id :
    16d27564-470f-41ea-8077-f4cc3efa5bfe
  variant_label :
    r1i1p1f1
  version :
    1.0