EBAS home

Thredds Server 

The EBAS Thredds Data Server (TDS) is a web server that provides metadata and data access for the data in EBAS either through data streaming using the OPeNDAP protocol or direct download of data through HTTP. The EBAS Thredds Server provides data in the netCDF format following the NetCDF Climate and Forecast (CF) Metadata Conventions. 

The Thredds catalog for quality controlled EBAS data can be accessed here: https://thredds.nilu.no/thredds/catalog/ebas/catalog.html 

The EBAS catalog on the Thredds server is a flat directory of files, and therefore crawling the directory is the most appropriate way to access data. 

There are multiple clients that could be used for accessing and crawling a Thredds catalog. 

 

Python 

R 

  • https://github.com/BigelowLab/thredds 

It is also possible to access ACTRIS NRT using the EBAS Thredds Server (https://thredds.nilu.no/thredds/catalog/actris_nrt/catalog.html), but this catalog is restricted, and you will have to contact the EBAS Team in order to request access to this catalog. 

Below is a simple example of how you can access the data in Thredds using a python client for Thredds. 

import netCDF4
from netCDF4 import num2date
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import threddsclient
# get all OPeNDAP urls at EBAS Thredds server
all_opendap_urls = threddsclient.opendap_urls(
'https://thredds.nilu.no/thredds/catalog/ebas/catalog.xml')

# get all data urls for one station, e.g., Zeppelin NO0042G
zep_opendap_urls = [x for x in all_opendap_urls if 'NO0042G' in x]

# get all scattering data urls
neph_opendap_urls = [x for x in all_opendap_urls if 'nephelometer' in x]

# plot scattering data for one arctic station (eg. Alert 2004-2019, pm10)
dataset = netCDF4.Dataset(
'https://thredds.nilu.no/thredds/dodsC/ebas/CA0420G.20040101000000.20201112154612.nephelometer..pm10.16y.1h.CA01L_TSI_3563_ALT_pm10.CA01L_scat_coef.lev2.nc')

y1 = dataset.variables['aerosol_light_scattering_coefficient_amean'][0][:]
y2 = dataset.variables['aerosol_light_backscattering_coefficient_amean'][0][:]
x = num2date(
dataset.variables['time'][:],
units='days since 1900-01-01 00:00:00',
calendar='gregorian')

fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(
go.Scatter(
x=x,
y=y1,
name='Sca. coeff. amean'),
secondary_y=False,
)
fig.add_trace(
go.Scatter(
x=x,
y=y2,
name='Bsc. coeff. amean'),
secondary_y=True,
)
fig.update_layout(title_text=dataset.title)

fig.show()