Reading NetCDF data from OPEnDAP services
In this example we read NetCDF data from an OPEnDAP service using the opendap source.
[1]:
import earthkit.data as ekd
url="https://psl.noaa.gov/thredds/dodsC/Datasets/noaa.oisst.v2/sst.mnmean.nc"
ds = ekd.from_source("opendap", url)
What we get is a NetCDF fieldlist.
[2]:
ds.ls()
[2]:
| variable | level | valid_datetime | units | |
|---|---|---|---|---|
| 0 | sst | None | 1981-12-01T00:00:00 | degC |
| 1 | sst | None | 1982-01-01T00:00:00 | degC |
| 2 | sst | None | 1982-02-01T00:00:00 | degC |
| 3 | sst | None | 1982-03-01T00:00:00 | degC |
| 4 | sst | None | 1982-04-01T00:00:00 | degC |
| ... | ... | ... | ... | ... |
| 489 | sst | None | 2022-09-01T00:00:00 | degC |
| 490 | sst | None | 2022-10-01T00:00:00 | degC |
| 491 | sst | None | 2022-11-01T00:00:00 | degC |
| 492 | sst | None | 2022-12-01T00:00:00 | degC |
| 493 | sst | None | 2023-01-01T00:00:00 | degC |
494 rows × 4 columns
[3]:
v = ds[2].to_numpy()
v.shape
[3]:
(180, 360)
[4]:
ds.to_xarray()
[4]:
<xarray.Dataset> Size: 128MB
Dimensions: (lat: 180, lon: 360, time: 494, nbnds: 2)
Coordinates:
* lat (lat) float32 720B 89.5 88.5 87.5 86.5 ... -87.5 -88.5 -89.5
* lon (lon) float32 1kB 0.5 1.5 2.5 3.5 4.5 ... 356.5 357.5 358.5 359.5
* time (time) datetime64[ns] 4kB 1981-12-01 1982-01-01 ... 2023-01-01
Dimensions without coordinates: nbnds
Data variables:
time_bnds (time, nbnds) datetime64[ns] 8kB dask.array<chunksize=(494, 2), meta=np.ndarray>
sst (time, lat, lon) float32 128MB dask.array<chunksize=(494, 180, 360), meta=np.ndarray>
Attributes:
title: NOAA Optimum Interpolation (OI) SST V2
Conventions: CF-1.0
history: Wed Apr 6 13:47:45 2005: ncks -d time,0...
comments: Data described in Reynolds, R.W., N.A. ...
platform: Model
source: NCEP Climate Modeling Branch
institution: National Centers for Environmental Predi...
References: https://www.psl.noaa.gov/data/gridded/da...
dataset_title: NOAA Optimum Interpolation (OI) SST V2
source_url: http://www.emc.ncep.noaa.gov/research/cm...
DODS_EXTRA.Unlimited_Dimension: time[ ]: