import intake
import hvplot.pandas
import hvplot.xarray
import cook_inlet_catalogs as cic
import holoviews as hv

Moorings (KBNERR): Kachemak Bay, Homer stations

Moorings from Kachemak Bay National Estuarine Research Reserve (KBNERR)

Station mappings from AOOS/ERDDAP to KBNERR station list:

  • nerrs_kachdwq :: kachdwq

  • homer-dolphin-surface-water-q :: kachswq

  • nerrs_kach3wq :: kach3wq

More information: https://accs.uaa.alaska.edu/kbnerr/

cat = intake.open_catalog(cic.utils.cat_path("moorings_kbnerr_homer"))

Plot all datasets in catalog

dd, ddlabels = cic.utils.combine_datasets_for_map(cat)
dd.hvplot(**cat.metadata["map"]) * ddlabels.hvplot(**cat.metadata["maplabels"])

List available datasets in the catalog

dataset_ids = list(cat)
dataset_ids
['homer-dolphin-surface-water-q', 'nerrs_kach3wq', 'nerrs_kachdwq']

Select one dataset to investigate

try:
    dataset_id = dataset_ids[2]
except:
    dataset_id = dataset_ids[0]
print(dataset_id)

dd = cat[dataset_id].read()
dd
nerrs_kachdwq
---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
Cell In[5], line 7
      4     dataset_id = dataset_ids[0]
      5 print(dataset_id)
----> 7 dd = cat[dataset_id].read()
      8 dd

File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake/readers/readers.py:121, in BaseReader.read(self, *args, **kwargs)
    119 kw.update(kwargs)
    120 args = kw.pop("args", ()) or args
--> 121 return self._read(*args, **kw)

File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake_erddap/erddap.py:154, in TableDAPReader._read(self, server, dataset_id, variables, mask_failed_qartod, dropna, cache_kwargs, open_kwargs, constraints, **kw)
    151 protocol = kw.pop("protocol", "tabledap")
    153 # check for variables in user-input list that are not available for the dataset
--> 154 meta2 = self._get_dataset_metadata(server, dataset_id)
    155 variables_diff = set(variables) - set(meta2["variables"].keys())
    156 if len(variables_diff) > 0:

File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/intake_erddap/erddap.py:231, in TableDAPReader._get_dataset_metadata(self, server, dataset_id)
    229 url = f"{server}/info/{dataset_id}/index.json"
    230 resp = requests.get(url)
--> 231 resp.raise_for_status()
    232 metadata: dict = {"variables": {}}
    233 for rowtype, varname, attrname, dtype, value in resp.json()["table"]["rows"]:

File ~/checkouts/readthedocs.org/user_builds/cook-inlet-catalogs/conda/stable/lib/python3.11/site-packages/requests/models.py:1026, in Response.raise_for_status(self)
   1021     http_error_msg = (
   1022         f"{self.status_code} Server Error: {reason} for url: {self.url}"
   1023     )
   1025 if http_error_msg:
-> 1026     raise HTTPError(http_error_msg, response=self)

HTTPError: 502 Server Error: Bad Gateway for url: https://erddap.aoos.org/erddap/info/nerrs_kachdwq/index.json

Plot one dataset

keys = list(cat[dataset_id].metadata["plots"].keys())
print(keys)

plots = []
for key in keys:
    plot_kwargs = cat[dataset_id].metadata["plots"][key]
    if "clim" in plot_kwargs and isinstance(plot_kwargs["clim"], list):
        plot_kwargs["clim"] = tuple(plot_kwargs["clim"])
    if "dynamic" in plot_kwargs:
        plot_kwargs["dynamic"] = False
    plots.append(cat[dataset_id].ToHvPlot(**plot_kwargs).read())
hv.Layout(plots).cols(1)