Reading NetCDF data from OPEnDAP services¶
In this example we read NetCDF data from an OPEnDAP service using the :ref:`data-sources-opendap` source.[1]:
import earthkit.data as ekd
url = "https://psl.noaa.gov/thredds/dodsC/Datasets/noaa.oisst.v2/sst.mnmean.nc"
d = ekd.from_source("opendap", url)
d
[1]:
NetCDF file
| path | https://psl.noaa.gov/thredds/dodsC/Datasets/noaa.oisst.v2/sst.mnmean.nc |
| types | xarray, pandas, fieldlist, numpy, array |
We can load the data into Xarray.
[2]:
d.to_xarray()
[2]:
<xarray.Dataset> Size: 128MB
Dimensions: (time: 494, nbnds: 2, lat: 180, lon: 360)
Coordinates:
* time (time) datetime64[ns] 4kB 1981-12-01 1982-01-01 ... 2023-01-01
* 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
Dimensions without coordinates: nbnds
Data variables:
time_bnds (time, nbnds) datetime64[ns] 8kB ...
sst (time, lat, lon) float32 128MB ...
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: timeWe can also convert the data into a fieldlist.
[3]:
fl = d.to_fieldlist()
fl.ls()
[3]:
| parameter.variable | time.valid_datetime | time.base_datetime | time.step | vertical.level | vertical.level_type | ensemble.member | geography.grid_type | |
|---|---|---|---|---|---|---|---|---|
| 0 | sst | 1981-12-01 | 1981-12-01 | 0 days | None | unknown | 0 | None |
| 1 | sst | 1982-01-01 | 1982-01-01 | 0 days | None | unknown | 0 | None |
| 2 | sst | 1982-02-01 | 1982-02-01 | 0 days | None | unknown | 0 | None |
| 3 | sst | 1982-03-01 | 1982-03-01 | 0 days | None | unknown | 0 | None |
| 4 | sst | 1982-04-01 | 1982-04-01 | 0 days | None | unknown | 0 | None |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 489 | sst | 2022-09-01 | 2022-09-01 | 0 days | None | unknown | 0 | None |
| 490 | sst | 2022-10-01 | 2022-10-01 | 0 days | None | unknown | 0 | None |
| 491 | sst | 2022-11-01 | 2022-11-01 | 0 days | None | unknown | 0 | None |
| 492 | sst | 2022-12-01 | 2022-12-01 | 0 days | None | unknown | 0 | None |
| 493 | sst | 2023-01-01 | 2023-01-01 | 0 days | None | unknown | 0 | None |
494 rows × 8 columns
[4]:
v = fl[2].to_numpy()
v.shape
[4]:
(180, 360)
[5]:
fl.to_xarray()
[5]:
<xarray.Dataset> Size: 128MB
Dimensions: (time: 494, nbnds: 2, lat: 180, lon: 360)
Coordinates:
* time (time) datetime64[ns] 4kB 1981-12-01 1982-01-01 ... 2023-01-01
* 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
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[ ]: