Source code for spyndex.datasets

from typing import Any

import pandas as pd
import xarray as xr

from .utils import _load_JSON


[docs]def open(dataset: str) -> Any: """Opens a dataset. Parameters ---------- dataset : str One of "sentinel" or "spectral". The sentinel dataset is loaded as a :code:`xarray.DataArray` with a sample image of the Sentinel-2 satellite (10 m bands). The spectral dataset is loaded as a :code:`pandas.DataFrame` with Landsat 8 reflectance samples of three different land covers. Returns ------- Any Loaded dataset. Examples -------- Open the :code:`sentinel` dataset: >>> import spyndex >>> spyndex.datasets.open("sentinel") <xarray.DataArray (band: 4, x: 300, y: 300)> Coordinates: * band (band) <U3 'B02' 'B03' 'B04' 'B08' Dimensions without coordinates: x, y Open the :code:`spectral` dataset: >>> spt = spyndex.datasets.open("spectral") >>> spt.dtypes SR_B1 float64 SR_B2 float64 SR_B3 float64 SR_B4 float64 SR_B5 float64 SR_B6 float64 SR_B7 float64 ST_B10 float64 class object dtype: object >>> spt.shape (120, 9) """ datasets = {"sentinel": "S2_10m.json", "spectral": "spectral.json"} if dataset not in list(datasets.keys()): raise Exception( f"{dataset} is not a valid dataset. Please use one of ['sentinel','spectral']" ) ds = _load_JSON(datasets[dataset]) if dataset == "sentinel": ds = xr.DataArray( ds, dims=("band", "x", "y"), coords={"band": ["B02", "B03", "B04", "B08"]} ) elif dataset == "spectral": ds = pd.DataFrame(ds) return ds