Data selection using pyfesom2’s xarray-accesor.¶
1. Introduction¶
A key feature of pyfesom2 is to facilitate spatial selections on its unstructured triangular grid, that is currently not supported by commonly used python libraries. Xarray provides a powerful label based selection on datasets and variables (dataarray). A similar interface is provided (with additional convinient features) for FESOM data through pyfesom2
accessor.
Xarray’s sel method takes dimension names of a dataset or datarray as arguments for selection. For rectiliner grids this provides easy interface to select arbitary points and rectangular regions (using slices) in latitudes and longitudes. In case of FESOM unstructured grid, latitudes, longitudes are not orthogonal to each other and are not part of dataset’s dimensions, insted they are coordinates of a common dimension nod2
. This means the convinent spatial selection in xarray using latitude
and longitude as indexers is not possible for FESOM data using regular sel(lat=..., lon=...)
method. The dataset.pyfesom2.select(lat=..., lon=...)
method of pyfesom2
provides alternative to do such selections on FESOM data. Being in a constrained data environment also allows us to more add convinient features such as selecting arbitarary polygons.
Because of differences in functionality, arguments, and to minimize confusion with xarray’s sel
method, accessor’s selection methods are prefixed with select
.
Load a tutorial dataset¶
While examples in this notebook use a remote version of FESOM2 data to make the notebook self-contained, one may choose to load a local raw-dataset or download a raw dataset as indicated in pyfesom2_overview.ipynb notebook.
To load such local data into a Xarray dataset (to be able to use the accessor) replace the cell below with:
from pyfesom2.datasets import open_dataset
mesh_path = "/Users/nkolduno/PYTHON/DATA/core2/"
data_path = "/Users/nkolduno/PYTHON/DATA/LCORE2/[temp,salt,a_ice,m_ice]*"
fesom_ds = open_dataset(data_path, mesh_path)
Of course one should replace paths to the ones located on your machine. The open_dataset
function takes a parameter abg
to support specifying rotations for a rotated grid, which might be needed if you work with legacy rotated meshes.
For other available remote datasets see remote datasets.ipynb notebook.
[1]:
from pyfesom2.datasets import core
fesom_ds = core.load()
fesom_ds
[1]:
<xarray.Dataset> Dimensions: (nelem: 243899, nod2: 126858, nz: 48, nz1: 47, three: 3, time: 144) Coordinates: * time (time) datetime64[ns] 1948-01-31T23:15:00 ... 1959-12-31T23:15:00 lat (nod2) float64 dask.array<chunksize=(31715,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(31715,), meta=np.ndarray> * nz1 (nz1) float64 -2.5 -7.5 -15.0 ... -5.525e+03 -5.825e+03 -6.125e+03 faces (nelem, three) uint32 dask.array<chunksize=(60975, 2), meta=np.ndarray> * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 Dimensions without coordinates: nelem, nod2, three Data variables: temp (time, nod2, nz1) float32 dask.array<chunksize=(1, 126858, 47), meta=np.ndarray> salt (time, nod2, nz1) float32 dask.array<chunksize=(1, 126858, 47), meta=np.ndarray> a_ice (time, nod2) float32 dask.array<chunksize=(1, 126858), meta=np.ndarray> m_ice (time, nod2) float32 dask.array<chunksize=(1, 126858), meta=np.ndarray> ssh (time, nod2) float32 dask.array<chunksize=(1, 126858), meta=np.ndarray> sst (time, nod2) float32 dask.array<chunksize=(1, 126858), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- nelem: 243899
- nod2: 126858
- nz: 48
- nz1: 47
- three: 3
- time: 144
- time(time)datetime64[ns]1948-01-31T23:15:00 ... 1959-12-...
- long_name :
- time
array(['1948-01-31T23:15:00.000000000', '1948-02-28T23:15:00.000000000', '1948-03-30T23:15:00.000000000', '1948-04-29T23:15:00.000000000', '1948-05-30T23:15:00.000000000', '1948-06-29T23:15:00.000000000', '1948-07-30T23:15:00.000000000', '1948-08-30T23:15:00.000000000', '1948-09-29T23:15:00.000000000', '1948-10-30T23:15:00.000000000', '1948-11-29T23:15:00.000000000', '1948-12-30T23:15:00.000000000', '1949-01-31T23:15:00.000000000', '1949-02-28T23:15:00.000000000', '1949-03-31T23:15:00.000000000', '1949-04-30T23:15:00.000000000', '1949-05-31T23:15:00.000000000', '1949-06-30T23:15:00.000000000', '1949-07-31T23:15:00.000000000', '1949-08-31T23:15:00.000000000', '1949-09-30T23:15:00.000000000', '1949-10-31T23:15:00.000000000', '1949-11-30T23:15:00.000000000', '1949-12-31T23:15:00.000000000', '1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000', '1950-06-30T23:15:00.000000000', '1950-07-31T23:15:00.000000000', '1950-08-31T23:15:00.000000000', '1950-09-30T23:15:00.000000000', '1950-10-31T23:15:00.000000000', '1950-11-30T23:15:00.000000000', '1950-12-31T23:15:00.000000000', '1951-01-31T23:15:00.000000000', '1951-02-28T23:15:00.000000000', '1951-03-31T23:15:00.000000000', '1951-04-30T23:15:00.000000000', '1951-05-31T23:15:00.000000000', '1951-06-30T23:15:00.000000000', '1951-07-31T23:15:00.000000000', '1951-08-31T23:15:00.000000000', '1951-09-30T23:15:00.000000000', '1951-10-31T23:15:00.000000000', '1951-11-30T23:15:00.000000000', '1951-12-31T23:15:00.000000000', '1952-01-31T23:15:00.000000000', '1952-02-28T23:15:00.000000000', '1952-03-30T23:15:00.000000000', '1952-04-29T23:15:00.000000000', '1952-05-30T23:15:00.000000000', '1952-06-29T23:15:00.000000000', '1952-07-30T23:15:00.000000000', '1952-08-30T23:15:00.000000000', '1952-09-29T23:15:00.000000000', '1952-10-30T23:15:00.000000000', '1952-11-29T23:15:00.000000000', '1952-12-30T23:15:00.000000000', '1953-01-31T23:15:00.000000000', '1953-02-28T23:15:00.000000000', '1953-03-31T23:15:00.000000000', '1953-04-30T23:15:00.000000000', '1953-05-31T23:15:00.000000000', '1953-06-30T23:15:00.000000000', '1953-07-31T23:15:00.000000000', '1953-08-31T23:15:00.000000000', '1953-09-30T23:15:00.000000000', '1953-10-31T23:15:00.000000000', '1953-11-30T23:15:00.000000000', '1953-12-31T23:15:00.000000000', '1954-01-31T23:15:00.000000000', '1954-02-28T23:15:00.000000000', '1954-03-31T23:15:00.000000000', '1954-04-30T23:15:00.000000000', '1954-05-31T23:15:00.000000000', '1954-06-30T23:15:00.000000000', '1954-07-31T23:15:00.000000000', '1954-08-31T23:15:00.000000000', '1954-09-30T23:15:00.000000000', '1954-10-31T23:15:00.000000000', '1954-11-30T23:15:00.000000000', '1954-12-31T23:15:00.000000000', '1955-01-31T23:15:00.000000000', '1955-02-28T23:15:00.000000000', '1955-03-31T23:15:00.000000000', '1955-04-30T23:15:00.000000000', '1955-05-31T23:15:00.000000000', '1955-06-30T23:15:00.000000000', '1955-07-31T23:15:00.000000000', '1955-08-31T23:15:00.000000000', '1955-09-30T23:15:00.000000000', '1955-10-31T23:15:00.000000000', '1955-11-30T23:15:00.000000000', '1955-12-31T23:15:00.000000000', '1956-01-31T23:15:00.000000000', '1956-02-28T23:15:00.000000000', '1956-03-30T23:15:00.000000000', '1956-04-29T23:15:00.000000000', '1956-05-30T23:15:00.000000000', '1956-06-29T23:15:00.000000000', '1956-07-30T23:15:00.000000000', '1956-08-30T23:15:00.000000000', '1956-09-29T23:15:00.000000000', '1956-10-30T23:15:00.000000000', '1956-11-29T23:15:00.000000000', '1956-12-30T23:15:00.000000000', '1957-01-31T23:15:00.000000000', '1957-02-28T23:15:00.000000000', '1957-03-31T23:15:00.000000000', '1957-04-30T23:15:00.000000000', '1957-05-31T23:15:00.000000000', '1957-06-30T23:15:00.000000000', '1957-07-31T23:15:00.000000000', '1957-08-31T23:15:00.000000000', '1957-09-30T23:15:00.000000000', '1957-10-31T23:15:00.000000000', '1957-11-30T23:15:00.000000000', '1957-12-31T23:15:00.000000000', '1958-01-31T23:15:00.000000000', '1958-02-28T23:15:00.000000000', '1958-03-31T23:15:00.000000000', '1958-04-30T23:15:00.000000000', '1958-05-31T23:15:00.000000000', '1958-06-30T23:15:00.000000000', '1958-07-31T23:15:00.000000000', '1958-08-31T23:15:00.000000000', '1958-09-30T23:15:00.000000000', '1958-10-31T23:15:00.000000000', '1958-11-30T23:15:00.000000000', '1958-12-31T23:15:00.000000000', '1959-01-31T23:15:00.000000000', '1959-02-28T23:15:00.000000000', '1959-03-31T23:15:00.000000000', '1959-04-30T23:15:00.000000000', '1959-05-31T23:15:00.000000000', '1959-06-30T23:15:00.000000000', '1959-07-31T23:15:00.000000000', '1959-08-31T23:15:00.000000000', '1959-09-30T23:15:00.000000000', '1959-10-31T23:15:00.000000000', '1959-11-30T23:15:00.000000000', '1959-12-31T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(31715,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 1.01 MB 253.72 kB Shape (126858,) (31715,) Count 52 Tasks 4 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(31715,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 1.01 MB 253.72 kB Shape (126858,) (31715,) Count 52 Tasks 4 Chunks Type float64 numpy.ndarray - nz1(nz1)float64-2.5 -7.5 ... -5.825e+03 -6.125e+03
- long_name :
- depth at half level
- units :
- m
array([-2.500e+00, -7.500e+00, -1.500e+01, -2.500e+01, -3.500e+01, -4.500e+01, -5.500e+01, -6.500e+01, -7.500e+01, -8.500e+01, -9.500e+01, -1.075e+02, -1.250e+02, -1.475e+02, -1.750e+02, -2.100e+02, -2.550e+02, -3.100e+02, -3.750e+02, -4.500e+02, -5.350e+02, -6.300e+02, -7.350e+02, -8.500e+02, -9.750e+02, -1.110e+03, -1.255e+03, -1.415e+03, -1.600e+03, -1.810e+03, -2.035e+03, -2.275e+03, -2.525e+03, -2.775e+03, -3.025e+03, -3.275e+03, -3.525e+03, -3.775e+03, -4.025e+03, -4.275e+03, -4.525e+03, -4.775e+03, -5.025e+03, -5.275e+03, -5.525e+03, -5.825e+03, -6.125e+03])
- faces(nelem, three)uint32dask.array<chunksize=(60975, 2), meta=np.ndarray>
Array Chunk Bytes 2.93 MB 487.80 kB Shape (243899, 3) (60975, 2) Count 9 Tasks 8 Chunks Type uint32 numpy.ndarray - nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- temp(time, nod2, nz1)float32dask.array<chunksize=(1, 126858, 47), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 3.43 GB 23.85 MB Shape (144, 126858, 47) (1, 126858, 47) Count 145 Tasks 144 Chunks Type float32 numpy.ndarray - salt(time, nod2, nz1)float32dask.array<chunksize=(1, 126858, 47), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 3.43 GB 23.85 MB Shape (144, 126858, 47) (1, 126858, 47) Count 145 Tasks 144 Chunks Type float32 numpy.ndarray - a_ice(time, nod2)float32dask.array<chunksize=(1, 126858), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 73.07 MB 507.43 kB Shape (144, 126858) (1, 126858) Count 145 Tasks 144 Chunks Type float32 numpy.ndarray - m_ice(time, nod2)float32dask.array<chunksize=(1, 126858), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 73.07 MB 507.43 kB Shape (144, 126858) (1, 126858) Count 145 Tasks 144 Chunks Type float32 numpy.ndarray - ssh(time, nod2)float32dask.array<chunksize=(1, 126858), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 73.07 MB 507.43 kB Shape (144, 126858) (1, 126858) Count 145 Tasks 144 Chunks Type float32 numpy.ndarray - sst(time, nod2)float32dask.array<chunksize=(1, 126858), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 73.07 MB 507.43 kB Shape (144, 126858) (1, 126858) Count 145 Tasks 144 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
2. Region selection¶
To select a rectangular region, bounds of bounding rectangle defined as (minlon, minlat, maxlon, maxlat)
can be passed to region
argument. To select arbitary polygons, Shapely’s Polygon object can be used as an argument to region
. The region selection returns reindexed faces corresponding to selected points. This subsetted data may be saved to disk using regular xarray saving methods such as .to_netcdf(path_to_file.nc)
.
Select a rectangular region.
[2]:
fesom_ds.pyfesom2.select(region=(-20, 60, 50, 80))
[2]:
<xarray.Dataset> Dimensions: (nelem: 12737, nod2: 6699, nz: 48, nz1: 47, three: 3, time: 144) Coordinates: * time (time) datetime64[ns] 1948-01-31T23:15:00 ... 1959-12-31T23:15:00 lat (nod2) float64 dask.array<chunksize=(276,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(276,), meta=np.ndarray> * nz1 (nz1) float64 -2.5 -7.5 -15.0 ... -5.525e+03 -5.825e+03 -6.125e+03 * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 faces (nelem, three) int64 3462 3464 66 59 3041 ... 2775 235 6698 2773 Dimensions without coordinates: nelem, nod2, three Data variables: temp (time, nod2, nz1) float32 dask.array<chunksize=(1, 6699, 47), meta=np.ndarray> salt (time, nod2, nz1) float32 dask.array<chunksize=(1, 6699, 47), meta=np.ndarray> a_ice (time, nod2) float32 dask.array<chunksize=(1, 6699), meta=np.ndarray> m_ice (time, nod2) float32 dask.array<chunksize=(1, 6699), meta=np.ndarray> ssh (time, nod2) float32 dask.array<chunksize=(1, 6699), meta=np.ndarray> sst (time, nod2) float32 dask.array<chunksize=(1, 6699), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- nelem: 12737
- nod2: 6699
- nz: 48
- nz1: 47
- three: 3
- time: 144
- time(time)datetime64[ns]1948-01-31T23:15:00 ... 1959-12-...
- long_name :
- time
array(['1948-01-31T23:15:00.000000000', '1948-02-28T23:15:00.000000000', '1948-03-30T23:15:00.000000000', '1948-04-29T23:15:00.000000000', '1948-05-30T23:15:00.000000000', '1948-06-29T23:15:00.000000000', '1948-07-30T23:15:00.000000000', '1948-08-30T23:15:00.000000000', '1948-09-29T23:15:00.000000000', '1948-10-30T23:15:00.000000000', '1948-11-29T23:15:00.000000000', '1948-12-30T23:15:00.000000000', '1949-01-31T23:15:00.000000000', '1949-02-28T23:15:00.000000000', '1949-03-31T23:15:00.000000000', '1949-04-30T23:15:00.000000000', '1949-05-31T23:15:00.000000000', '1949-06-30T23:15:00.000000000', '1949-07-31T23:15:00.000000000', '1949-08-31T23:15:00.000000000', '1949-09-30T23:15:00.000000000', '1949-10-31T23:15:00.000000000', '1949-11-30T23:15:00.000000000', '1949-12-31T23:15:00.000000000', '1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000', '1950-06-30T23:15:00.000000000', '1950-07-31T23:15:00.000000000', '1950-08-31T23:15:00.000000000', '1950-09-30T23:15:00.000000000', '1950-10-31T23:15:00.000000000', '1950-11-30T23:15:00.000000000', '1950-12-31T23:15:00.000000000', '1951-01-31T23:15:00.000000000', '1951-02-28T23:15:00.000000000', '1951-03-31T23:15:00.000000000', '1951-04-30T23:15:00.000000000', '1951-05-31T23:15:00.000000000', '1951-06-30T23:15:00.000000000', '1951-07-31T23:15:00.000000000', '1951-08-31T23:15:00.000000000', '1951-09-30T23:15:00.000000000', '1951-10-31T23:15:00.000000000', '1951-11-30T23:15:00.000000000', '1951-12-31T23:15:00.000000000', '1952-01-31T23:15:00.000000000', '1952-02-28T23:15:00.000000000', '1952-03-30T23:15:00.000000000', '1952-04-29T23:15:00.000000000', '1952-05-30T23:15:00.000000000', '1952-06-29T23:15:00.000000000', '1952-07-30T23:15:00.000000000', '1952-08-30T23:15:00.000000000', '1952-09-29T23:15:00.000000000', '1952-10-30T23:15:00.000000000', '1952-11-29T23:15:00.000000000', '1952-12-30T23:15:00.000000000', '1953-01-31T23:15:00.000000000', '1953-02-28T23:15:00.000000000', '1953-03-31T23:15:00.000000000', '1953-04-30T23:15:00.000000000', '1953-05-31T23:15:00.000000000', '1953-06-30T23:15:00.000000000', '1953-07-31T23:15:00.000000000', '1953-08-31T23:15:00.000000000', '1953-09-30T23:15:00.000000000', '1953-10-31T23:15:00.000000000', '1953-11-30T23:15:00.000000000', '1953-12-31T23:15:00.000000000', '1954-01-31T23:15:00.000000000', '1954-02-28T23:15:00.000000000', '1954-03-31T23:15:00.000000000', '1954-04-30T23:15:00.000000000', '1954-05-31T23:15:00.000000000', '1954-06-30T23:15:00.000000000', '1954-07-31T23:15:00.000000000', '1954-08-31T23:15:00.000000000', '1954-09-30T23:15:00.000000000', '1954-10-31T23:15:00.000000000', '1954-11-30T23:15:00.000000000', '1954-12-31T23:15:00.000000000', '1955-01-31T23:15:00.000000000', '1955-02-28T23:15:00.000000000', '1955-03-31T23:15:00.000000000', '1955-04-30T23:15:00.000000000', '1955-05-31T23:15:00.000000000', '1955-06-30T23:15:00.000000000', '1955-07-31T23:15:00.000000000', '1955-08-31T23:15:00.000000000', '1955-09-30T23:15:00.000000000', '1955-10-31T23:15:00.000000000', '1955-11-30T23:15:00.000000000', '1955-12-31T23:15:00.000000000', '1956-01-31T23:15:00.000000000', '1956-02-28T23:15:00.000000000', '1956-03-30T23:15:00.000000000', '1956-04-29T23:15:00.000000000', '1956-05-30T23:15:00.000000000', '1956-06-29T23:15:00.000000000', '1956-07-30T23:15:00.000000000', '1956-08-30T23:15:00.000000000', '1956-09-29T23:15:00.000000000', '1956-10-30T23:15:00.000000000', '1956-11-29T23:15:00.000000000', '1956-12-30T23:15:00.000000000', '1957-01-31T23:15:00.000000000', '1957-02-28T23:15:00.000000000', '1957-03-31T23:15:00.000000000', '1957-04-30T23:15:00.000000000', '1957-05-31T23:15:00.000000000', '1957-06-30T23:15:00.000000000', '1957-07-31T23:15:00.000000000', '1957-08-31T23:15:00.000000000', '1957-09-30T23:15:00.000000000', '1957-10-31T23:15:00.000000000', '1957-11-30T23:15:00.000000000', '1957-12-31T23:15:00.000000000', '1958-01-31T23:15:00.000000000', '1958-02-28T23:15:00.000000000', '1958-03-31T23:15:00.000000000', '1958-04-30T23:15:00.000000000', '1958-05-31T23:15:00.000000000', '1958-06-30T23:15:00.000000000', '1958-07-31T23:15:00.000000000', '1958-08-31T23:15:00.000000000', '1958-09-30T23:15:00.000000000', '1958-10-31T23:15:00.000000000', '1958-11-30T23:15:00.000000000', '1958-12-31T23:15:00.000000000', '1959-01-31T23:15:00.000000000', '1959-02-28T23:15:00.000000000', '1959-03-31T23:15:00.000000000', '1959-04-30T23:15:00.000000000', '1959-05-31T23:15:00.000000000', '1959-06-30T23:15:00.000000000', '1959-07-31T23:15:00.000000000', '1959-08-31T23:15:00.000000000', '1959-09-30T23:15:00.000000000', '1959-10-31T23:15:00.000000000', '1959-11-30T23:15:00.000000000', '1959-12-31T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(276,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 53.59 kB 24.38 kB Shape (6699,) (3048,) Count 56 Tasks 4 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(276,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 53.59 kB 24.38 kB Shape (6699,) (3048,) Count 56 Tasks 4 Chunks Type float64 numpy.ndarray - nz1(nz1)float64-2.5 -7.5 ... -5.825e+03 -6.125e+03
- long_name :
- depth at half level
- units :
- m
array([-2.500e+00, -7.500e+00, -1.500e+01, -2.500e+01, -3.500e+01, -4.500e+01, -5.500e+01, -6.500e+01, -7.500e+01, -8.500e+01, -9.500e+01, -1.075e+02, -1.250e+02, -1.475e+02, -1.750e+02, -2.100e+02, -2.550e+02, -3.100e+02, -3.750e+02, -4.500e+02, -5.350e+02, -6.300e+02, -7.350e+02, -8.500e+02, -9.750e+02, -1.110e+03, -1.255e+03, -1.415e+03, -1.600e+03, -1.810e+03, -2.035e+03, -2.275e+03, -2.525e+03, -2.775e+03, -3.025e+03, -3.275e+03, -3.525e+03, -3.775e+03, -4.025e+03, -4.275e+03, -4.525e+03, -4.775e+03, -5.025e+03, -5.275e+03, -5.525e+03, -5.825e+03, -6.125e+03])
- nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- faces(nelem, three)int643462 3464 66 59 ... 235 6698 2773
array([[3462, 3464, 66], [ 59, 3041, 3042], [2417, 1146, 731], ..., [6697, 6696, 2776], [5662, 6698, 2775], [ 235, 6698, 2773]])
- temp(time, nod2, nz1)float32dask.array<chunksize=(1, 6699, 47), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 181.36 MB 1.26 MB Shape (144, 6699, 47) (1, 6699, 47) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - salt(time, nod2, nz1)float32dask.array<chunksize=(1, 6699, 47), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 181.36 MB 1.26 MB Shape (144, 6699, 47) (1, 6699, 47) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - a_ice(time, nod2)float32dask.array<chunksize=(1, 6699), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 3.86 MB 26.80 kB Shape (144, 6699) (1, 6699) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - m_ice(time, nod2)float32dask.array<chunksize=(1, 6699), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 3.86 MB 26.80 kB Shape (144, 6699) (1, 6699) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - ssh(time, nod2)float32dask.array<chunksize=(1, 6699), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 3.86 MB 26.80 kB Shape (144, 6699) (1, 6699) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - sst(time, nod2)float32dask.array<chunksize=(1, 6699), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 3.86 MB 26.80 kB Shape (144, 6699) (1, 6699) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
Select a triangular region defined by Shapely’s Polygon
[3]:
from shapely.geometry import Polygon
polygon_region = Polygon([(-70, 30), (-10, 0), (-10, 60)]) # a triangle in atlantic
fesom_ds.pyfesom2.select(region=polygon_region)
[3]:
<xarray.Dataset> Dimensions: (nelem: 7387, nod2: 3887, nz: 48, nz1: 47, three: 3, time: 144) Coordinates: * time (time) datetime64[ns] 1948-01-31T23:15:00 ... 1959-12-31T23:15:00 lat (nod2) float64 dask.array<chunksize=(711,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(711,), meta=np.ndarray> * nz1 (nz1) float64 -2.5 -7.5 -15.0 ... -5.525e+03 -5.825e+03 -6.125e+03 * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 faces (nelem, three) int64 2088 2089 2090 3065 154 ... 3886 3013 617 3886 Dimensions without coordinates: nelem, nod2, three Data variables: temp (time, nod2, nz1) float32 dask.array<chunksize=(1, 3887, 47), meta=np.ndarray> salt (time, nod2, nz1) float32 dask.array<chunksize=(1, 3887, 47), meta=np.ndarray> a_ice (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> m_ice (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> ssh (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> sst (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- nelem: 7387
- nod2: 3887
- nz: 48
- nz1: 47
- three: 3
- time: 144
- time(time)datetime64[ns]1948-01-31T23:15:00 ... 1959-12-...
- long_name :
- time
array(['1948-01-31T23:15:00.000000000', '1948-02-28T23:15:00.000000000', '1948-03-30T23:15:00.000000000', '1948-04-29T23:15:00.000000000', '1948-05-30T23:15:00.000000000', '1948-06-29T23:15:00.000000000', '1948-07-30T23:15:00.000000000', '1948-08-30T23:15:00.000000000', '1948-09-29T23:15:00.000000000', '1948-10-30T23:15:00.000000000', '1948-11-29T23:15:00.000000000', '1948-12-30T23:15:00.000000000', '1949-01-31T23:15:00.000000000', '1949-02-28T23:15:00.000000000', '1949-03-31T23:15:00.000000000', '1949-04-30T23:15:00.000000000', '1949-05-31T23:15:00.000000000', '1949-06-30T23:15:00.000000000', '1949-07-31T23:15:00.000000000', '1949-08-31T23:15:00.000000000', '1949-09-30T23:15:00.000000000', '1949-10-31T23:15:00.000000000', '1949-11-30T23:15:00.000000000', '1949-12-31T23:15:00.000000000', '1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000', '1950-06-30T23:15:00.000000000', '1950-07-31T23:15:00.000000000', '1950-08-31T23:15:00.000000000', '1950-09-30T23:15:00.000000000', '1950-10-31T23:15:00.000000000', '1950-11-30T23:15:00.000000000', '1950-12-31T23:15:00.000000000', '1951-01-31T23:15:00.000000000', '1951-02-28T23:15:00.000000000', '1951-03-31T23:15:00.000000000', '1951-04-30T23:15:00.000000000', '1951-05-31T23:15:00.000000000', '1951-06-30T23:15:00.000000000', '1951-07-31T23:15:00.000000000', '1951-08-31T23:15:00.000000000', '1951-09-30T23:15:00.000000000', '1951-10-31T23:15:00.000000000', '1951-11-30T23:15:00.000000000', '1951-12-31T23:15:00.000000000', '1952-01-31T23:15:00.000000000', '1952-02-28T23:15:00.000000000', '1952-03-30T23:15:00.000000000', '1952-04-29T23:15:00.000000000', '1952-05-30T23:15:00.000000000', '1952-06-29T23:15:00.000000000', '1952-07-30T23:15:00.000000000', '1952-08-30T23:15:00.000000000', '1952-09-29T23:15:00.000000000', '1952-10-30T23:15:00.000000000', '1952-11-29T23:15:00.000000000', '1952-12-30T23:15:00.000000000', '1953-01-31T23:15:00.000000000', '1953-02-28T23:15:00.000000000', '1953-03-31T23:15:00.000000000', '1953-04-30T23:15:00.000000000', '1953-05-31T23:15:00.000000000', '1953-06-30T23:15:00.000000000', '1953-07-31T23:15:00.000000000', '1953-08-31T23:15:00.000000000', '1953-09-30T23:15:00.000000000', '1953-10-31T23:15:00.000000000', '1953-11-30T23:15:00.000000000', '1953-12-31T23:15:00.000000000', '1954-01-31T23:15:00.000000000', '1954-02-28T23:15:00.000000000', '1954-03-31T23:15:00.000000000', '1954-04-30T23:15:00.000000000', '1954-05-31T23:15:00.000000000', '1954-06-30T23:15:00.000000000', '1954-07-31T23:15:00.000000000', '1954-08-31T23:15:00.000000000', '1954-09-30T23:15:00.000000000', '1954-10-31T23:15:00.000000000', '1954-11-30T23:15:00.000000000', '1954-12-31T23:15:00.000000000', '1955-01-31T23:15:00.000000000', '1955-02-28T23:15:00.000000000', '1955-03-31T23:15:00.000000000', '1955-04-30T23:15:00.000000000', '1955-05-31T23:15:00.000000000', '1955-06-30T23:15:00.000000000', '1955-07-31T23:15:00.000000000', '1955-08-31T23:15:00.000000000', '1955-09-30T23:15:00.000000000', '1955-10-31T23:15:00.000000000', '1955-11-30T23:15:00.000000000', '1955-12-31T23:15:00.000000000', '1956-01-31T23:15:00.000000000', '1956-02-28T23:15:00.000000000', '1956-03-30T23:15:00.000000000', '1956-04-29T23:15:00.000000000', '1956-05-30T23:15:00.000000000', '1956-06-29T23:15:00.000000000', '1956-07-30T23:15:00.000000000', '1956-08-30T23:15:00.000000000', '1956-09-29T23:15:00.000000000', '1956-10-30T23:15:00.000000000', '1956-11-29T23:15:00.000000000', '1956-12-30T23:15:00.000000000', '1957-01-31T23:15:00.000000000', '1957-02-28T23:15:00.000000000', '1957-03-31T23:15:00.000000000', '1957-04-30T23:15:00.000000000', '1957-05-31T23:15:00.000000000', '1957-06-30T23:15:00.000000000', '1957-07-31T23:15:00.000000000', '1957-08-31T23:15:00.000000000', '1957-09-30T23:15:00.000000000', '1957-10-31T23:15:00.000000000', '1957-11-30T23:15:00.000000000', '1957-12-31T23:15:00.000000000', '1958-01-31T23:15:00.000000000', '1958-02-28T23:15:00.000000000', '1958-03-31T23:15:00.000000000', '1958-04-30T23:15:00.000000000', '1958-05-31T23:15:00.000000000', '1958-06-30T23:15:00.000000000', '1958-07-31T23:15:00.000000000', '1958-08-31T23:15:00.000000000', '1958-09-30T23:15:00.000000000', '1958-10-31T23:15:00.000000000', '1958-11-30T23:15:00.000000000', '1958-12-31T23:15:00.000000000', '1959-01-31T23:15:00.000000000', '1959-02-28T23:15:00.000000000', '1959-03-31T23:15:00.000000000', '1959-04-30T23:15:00.000000000', '1959-05-31T23:15:00.000000000', '1959-06-30T23:15:00.000000000', '1959-07-31T23:15:00.000000000', '1959-08-31T23:15:00.000000000', '1959-09-30T23:15:00.000000000', '1959-10-31T23:15:00.000000000', '1959-11-30T23:15:00.000000000', '1959-12-31T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(711,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 31.10 kB 10.21 kB Shape (3887,) (1276,) Count 56 Tasks 4 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(711,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 31.10 kB 10.21 kB Shape (3887,) (1276,) Count 56 Tasks 4 Chunks Type float64 numpy.ndarray - nz1(nz1)float64-2.5 -7.5 ... -5.825e+03 -6.125e+03
- long_name :
- depth at half level
- units :
- m
array([-2.500e+00, -7.500e+00, -1.500e+01, -2.500e+01, -3.500e+01, -4.500e+01, -5.500e+01, -6.500e+01, -7.500e+01, -8.500e+01, -9.500e+01, -1.075e+02, -1.250e+02, -1.475e+02, -1.750e+02, -2.100e+02, -2.550e+02, -3.100e+02, -3.750e+02, -4.500e+02, -5.350e+02, -6.300e+02, -7.350e+02, -8.500e+02, -9.750e+02, -1.110e+03, -1.255e+03, -1.415e+03, -1.600e+03, -1.810e+03, -2.035e+03, -2.275e+03, -2.525e+03, -2.775e+03, -3.025e+03, -3.275e+03, -3.525e+03, -3.775e+03, -4.025e+03, -4.275e+03, -4.525e+03, -4.775e+03, -5.025e+03, -5.275e+03, -5.525e+03, -5.825e+03, -6.125e+03])
- nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- faces(nelem, three)int642088 2089 2090 ... 3013 617 3886
array([[2088, 2089, 2090], [3065, 154, 458], [1939, 160, 1938], ..., [3801, 3885, 2259], [3011, 3013, 3886], [3013, 617, 3886]])
- temp(time, nod2, nz1)float32dask.array<chunksize=(1, 3887, 47), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 105.23 MB 730.76 kB Shape (144, 3887, 47) (1, 3887, 47) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - salt(time, nod2, nz1)float32dask.array<chunksize=(1, 3887, 47), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 105.23 MB 730.76 kB Shape (144, 3887, 47) (1, 3887, 47) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - a_ice(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 2.24 MB 15.55 kB Shape (144, 3887) (1, 3887) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - m_ice(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 2.24 MB 15.55 kB Shape (144, 3887) (1, 3887) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - ssh(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 2.24 MB 15.55 kB Shape (144, 3887) (1, 3887) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - sst(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 2.24 MB 15.55 kB Shape (144, 3887) (1, 3887) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
Other orthogonal dimensions to lat,lon such as time, nz1, may also be used similar to xarray’s sel
method. Note that select
method allows mixing of arrays for lat, lon as indexer and slices for other dimensions unlike Xarray for convinience.
[4]:
fesom_ds.pyfesom2.select(region=polygon_region, time=slice('1950-01-01', '1950-05-02'))
[4]:
<xarray.Dataset> Dimensions: (nelem: 7387, nod2: 3887, nz: 48, nz1: 47, three: 3, time: 4) Coordinates: * time (time) datetime64[ns] 1950-01-31T23:15:00 ... 1950-04-30T23:15:00 lat (nod2) float64 dask.array<chunksize=(711,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(711,), meta=np.ndarray> * nz1 (nz1) float64 -2.5 -7.5 -15.0 ... -5.525e+03 -5.825e+03 -6.125e+03 * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 faces (nelem, three) int64 2088 2089 2090 3065 154 ... 3886 3013 617 3886 Dimensions without coordinates: nelem, nod2, three Data variables: temp (time, nod2, nz1) float32 dask.array<chunksize=(1, 3887, 47), meta=np.ndarray> salt (time, nod2, nz1) float32 dask.array<chunksize=(1, 3887, 47), meta=np.ndarray> a_ice (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> m_ice (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> ssh (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> sst (time, nod2) float32 dask.array<chunksize=(1, 3887), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- nelem: 7387
- nod2: 3887
- nz: 48
- nz1: 47
- three: 3
- time: 4
- time(time)datetime64[ns]1950-01-31T23:15:00 ... 1950-04-...
- long_name :
- time
array(['1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(711,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 31.10 kB 10.21 kB Shape (3887,) (1276,) Count 56 Tasks 4 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(711,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 31.10 kB 10.21 kB Shape (3887,) (1276,) Count 56 Tasks 4 Chunks Type float64 numpy.ndarray - nz1(nz1)float64-2.5 -7.5 ... -5.825e+03 -6.125e+03
- long_name :
- depth at half level
- units :
- m
array([-2.500e+00, -7.500e+00, -1.500e+01, -2.500e+01, -3.500e+01, -4.500e+01, -5.500e+01, -6.500e+01, -7.500e+01, -8.500e+01, -9.500e+01, -1.075e+02, -1.250e+02, -1.475e+02, -1.750e+02, -2.100e+02, -2.550e+02, -3.100e+02, -3.750e+02, -4.500e+02, -5.350e+02, -6.300e+02, -7.350e+02, -8.500e+02, -9.750e+02, -1.110e+03, -1.255e+03, -1.415e+03, -1.600e+03, -1.810e+03, -2.035e+03, -2.275e+03, -2.525e+03, -2.775e+03, -3.025e+03, -3.275e+03, -3.525e+03, -3.775e+03, -4.025e+03, -4.275e+03, -4.525e+03, -4.775e+03, -5.025e+03, -5.275e+03, -5.525e+03, -5.825e+03, -6.125e+03])
- nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- faces(nelem, three)int642088 2089 2090 ... 3013 617 3886
array([[2088, 2089, 2090], [3065, 154, 458], [1939, 160, 1938], ..., [3801, 3885, 2259], [3011, 3013, 3886], [3013, 617, 3886]])
- temp(time, nod2, nz1)float32dask.array<chunksize=(1, 3887, 47), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 2.92 MB 730.76 kB Shape (4, 3887, 47) (1, 3887, 47) Count 293 Tasks 4 Chunks Type float32 numpy.ndarray - salt(time, nod2, nz1)float32dask.array<chunksize=(1, 3887, 47), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 2.92 MB 730.76 kB Shape (4, 3887, 47) (1, 3887, 47) Count 293 Tasks 4 Chunks Type float32 numpy.ndarray - a_ice(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 62.19 kB 15.55 kB Shape (4, 3887) (1, 3887) Count 293 Tasks 4 Chunks Type float32 numpy.ndarray - m_ice(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 62.19 kB 15.55 kB Shape (4, 3887) (1, 3887) Count 293 Tasks 4 Chunks Type float32 numpy.ndarray - ssh(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 62.19 kB 15.55 kB Shape (4, 3887) (1, 3887) Count 293 Tasks 4 Chunks Type float32 numpy.ndarray - sst(time, nod2)float32dask.array<chunksize=(1, 3887), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 62.19 kB 15.55 kB Shape (4, 3887) (1, 3887) Count 293 Tasks 4 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
2. Point selection¶
To select a data closest to a single point in latitude and longitude, select
method can be supplied with lat, lon values as indexers such as:
fesom_ds.select(lon=-20, lat=10)
To select more points, that may define a transect in latitude and longitude, they can be provided as lat and lon arguments (and have to be of same size) containing sequence of values.
Note that point selection defaults to nearest neighbor selection on geocentric projection. This is equivalent to using tunnel distance for evaluating nearest neighbor.
Define points in latitude and longitude as numpy arrays and select closest data.
[5]:
import numpy as np
sel_lats = np.linspace(-90,90,10)
sel_lons = np.linspace(-180,180,10)
fesom_ds.pyfesom2.select(lat= sel_lats, lon= sel_lons)
[5]:
<xarray.Dataset> Dimensions: (nod2: 10, nz: 48, nz1: 47, time: 144) Coordinates: * time (time) datetime64[ns] 1948-01-31T23:15:00 ... 1959-12-31T23:15:00 lat (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> * nz1 (nz1) float64 -2.5 -7.5 -15.0 ... -5.525e+03 -5.825e+03 -6.125e+03 * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 Dimensions without coordinates: nod2 Data variables: temp (time, nod2, nz1) float32 dask.array<chunksize=(1, 10, 47), meta=np.ndarray> salt (time, nod2, nz1) float32 dask.array<chunksize=(1, 10, 47), meta=np.ndarray> a_ice (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> m_ice (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> ssh (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> sst (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- nod2: 10
- nz: 48
- nz1: 47
- time: 144
- time(time)datetime64[ns]1948-01-31T23:15:00 ... 1959-12-...
- long_name :
- time
array(['1948-01-31T23:15:00.000000000', '1948-02-28T23:15:00.000000000', '1948-03-30T23:15:00.000000000', '1948-04-29T23:15:00.000000000', '1948-05-30T23:15:00.000000000', '1948-06-29T23:15:00.000000000', '1948-07-30T23:15:00.000000000', '1948-08-30T23:15:00.000000000', '1948-09-29T23:15:00.000000000', '1948-10-30T23:15:00.000000000', '1948-11-29T23:15:00.000000000', '1948-12-30T23:15:00.000000000', '1949-01-31T23:15:00.000000000', '1949-02-28T23:15:00.000000000', '1949-03-31T23:15:00.000000000', '1949-04-30T23:15:00.000000000', '1949-05-31T23:15:00.000000000', '1949-06-30T23:15:00.000000000', '1949-07-31T23:15:00.000000000', '1949-08-31T23:15:00.000000000', '1949-09-30T23:15:00.000000000', '1949-10-31T23:15:00.000000000', '1949-11-30T23:15:00.000000000', '1949-12-31T23:15:00.000000000', '1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000', '1950-06-30T23:15:00.000000000', '1950-07-31T23:15:00.000000000', '1950-08-31T23:15:00.000000000', '1950-09-30T23:15:00.000000000', '1950-10-31T23:15:00.000000000', '1950-11-30T23:15:00.000000000', '1950-12-31T23:15:00.000000000', '1951-01-31T23:15:00.000000000', '1951-02-28T23:15:00.000000000', '1951-03-31T23:15:00.000000000', '1951-04-30T23:15:00.000000000', '1951-05-31T23:15:00.000000000', '1951-06-30T23:15:00.000000000', '1951-07-31T23:15:00.000000000', '1951-08-31T23:15:00.000000000', '1951-09-30T23:15:00.000000000', '1951-10-31T23:15:00.000000000', '1951-11-30T23:15:00.000000000', '1951-12-31T23:15:00.000000000', '1952-01-31T23:15:00.000000000', '1952-02-28T23:15:00.000000000', '1952-03-30T23:15:00.000000000', '1952-04-29T23:15:00.000000000', '1952-05-30T23:15:00.000000000', '1952-06-29T23:15:00.000000000', '1952-07-30T23:15:00.000000000', '1952-08-30T23:15:00.000000000', '1952-09-29T23:15:00.000000000', '1952-10-30T23:15:00.000000000', '1952-11-29T23:15:00.000000000', '1952-12-30T23:15:00.000000000', '1953-01-31T23:15:00.000000000', '1953-02-28T23:15:00.000000000', '1953-03-31T23:15:00.000000000', '1953-04-30T23:15:00.000000000', '1953-05-31T23:15:00.000000000', '1953-06-30T23:15:00.000000000', '1953-07-31T23:15:00.000000000', '1953-08-31T23:15:00.000000000', '1953-09-30T23:15:00.000000000', '1953-10-31T23:15:00.000000000', '1953-11-30T23:15:00.000000000', '1953-12-31T23:15:00.000000000', '1954-01-31T23:15:00.000000000', '1954-02-28T23:15:00.000000000', '1954-03-31T23:15:00.000000000', '1954-04-30T23:15:00.000000000', '1954-05-31T23:15:00.000000000', '1954-06-30T23:15:00.000000000', '1954-07-31T23:15:00.000000000', '1954-08-31T23:15:00.000000000', '1954-09-30T23:15:00.000000000', '1954-10-31T23:15:00.000000000', '1954-11-30T23:15:00.000000000', '1954-12-31T23:15:00.000000000', '1955-01-31T23:15:00.000000000', '1955-02-28T23:15:00.000000000', '1955-03-31T23:15:00.000000000', '1955-04-30T23:15:00.000000000', '1955-05-31T23:15:00.000000000', '1955-06-30T23:15:00.000000000', '1955-07-31T23:15:00.000000000', '1955-08-31T23:15:00.000000000', '1955-09-30T23:15:00.000000000', '1955-10-31T23:15:00.000000000', '1955-11-30T23:15:00.000000000', '1955-12-31T23:15:00.000000000', '1956-01-31T23:15:00.000000000', '1956-02-28T23:15:00.000000000', '1956-03-30T23:15:00.000000000', '1956-04-29T23:15:00.000000000', '1956-05-30T23:15:00.000000000', '1956-06-29T23:15:00.000000000', '1956-07-30T23:15:00.000000000', '1956-08-30T23:15:00.000000000', '1956-09-29T23:15:00.000000000', '1956-10-30T23:15:00.000000000', '1956-11-29T23:15:00.000000000', '1956-12-30T23:15:00.000000000', '1957-01-31T23:15:00.000000000', '1957-02-28T23:15:00.000000000', '1957-03-31T23:15:00.000000000', '1957-04-30T23:15:00.000000000', '1957-05-31T23:15:00.000000000', '1957-06-30T23:15:00.000000000', '1957-07-31T23:15:00.000000000', '1957-08-31T23:15:00.000000000', '1957-09-30T23:15:00.000000000', '1957-10-31T23:15:00.000000000', '1957-11-30T23:15:00.000000000', '1957-12-31T23:15:00.000000000', '1958-01-31T23:15:00.000000000', '1958-02-28T23:15:00.000000000', '1958-03-31T23:15:00.000000000', '1958-04-30T23:15:00.000000000', '1958-05-31T23:15:00.000000000', '1958-06-30T23:15:00.000000000', '1958-07-31T23:15:00.000000000', '1958-08-31T23:15:00.000000000', '1958-09-30T23:15:00.000000000', '1958-10-31T23:15:00.000000000', '1958-11-30T23:15:00.000000000', '1958-12-31T23:15:00.000000000', '1959-01-31T23:15:00.000000000', '1959-02-28T23:15:00.000000000', '1959-03-31T23:15:00.000000000', '1959-04-30T23:15:00.000000000', '1959-05-31T23:15:00.000000000', '1959-06-30T23:15:00.000000000', '1959-07-31T23:15:00.000000000', '1959-08-31T23:15:00.000000000', '1959-09-30T23:15:00.000000000', '1959-10-31T23:15:00.000000000', '1959-11-30T23:15:00.000000000', '1959-12-31T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 80 B 24 B Shape (10,) (3,) Count 59 Tasks 7 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 80 B 24 B Shape (10,) (3,) Count 59 Tasks 7 Chunks Type float64 numpy.ndarray - nz1(nz1)float64-2.5 -7.5 ... -5.825e+03 -6.125e+03
- long_name :
- depth at half level
- units :
- m
array([-2.500e+00, -7.500e+00, -1.500e+01, -2.500e+01, -3.500e+01, -4.500e+01, -5.500e+01, -6.500e+01, -7.500e+01, -8.500e+01, -9.500e+01, -1.075e+02, -1.250e+02, -1.475e+02, -1.750e+02, -2.100e+02, -2.550e+02, -3.100e+02, -3.750e+02, -4.500e+02, -5.350e+02, -6.300e+02, -7.350e+02, -8.500e+02, -9.750e+02, -1.110e+03, -1.255e+03, -1.415e+03, -1.600e+03, -1.810e+03, -2.035e+03, -2.275e+03, -2.525e+03, -2.775e+03, -3.025e+03, -3.275e+03, -3.525e+03, -3.775e+03, -4.025e+03, -4.275e+03, -4.525e+03, -4.775e+03, -5.025e+03, -5.275e+03, -5.525e+03, -5.825e+03, -6.125e+03])
- nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- temp(time, nod2, nz1)float32dask.array<chunksize=(1, 10, 47), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 270.72 kB 1.88 kB Shape (144, 10, 47) (1, 10, 47) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - salt(time, nod2, nz1)float32dask.array<chunksize=(1, 10, 47), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 270.72 kB 1.88 kB Shape (144, 10, 47) (1, 10, 47) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - a_ice(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - m_ice(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - ssh(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - sst(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
Note that point selection does not return faces in coordinates, because faces contains indices and after selection they have no relavence, in future we may return lat and lon bnds
Additionally other dimensions can also be passed as indexers similar to Xarray’s sel method, in that case an orthogonal selection, ie., transect at selected times and levels is made.
[6]:
fesom_ds.pyfesom2.select(lat= sel_lats, lon= sel_lons, nz1=slice(0, -1000))
[6]:
<xarray.Dataset> Dimensions: (nod2: 10, nz: 48, nz1: 25, time: 144) Coordinates: * time (time) datetime64[ns] 1948-01-31T23:15:00 ... 1959-12-31T23:15:00 lat (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> * nz1 (nz1) float64 -2.5 -7.5 -15.0 -25.0 ... -630.0 -735.0 -850.0 -975.0 * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 Dimensions without coordinates: nod2 Data variables: temp (time, nod2, nz1) float32 dask.array<chunksize=(1, 10, 25), meta=np.ndarray> salt (time, nod2, nz1) float32 dask.array<chunksize=(1, 10, 25), meta=np.ndarray> a_ice (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> m_ice (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> ssh (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> sst (time, nod2) float32 dask.array<chunksize=(1, 10), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- nod2: 10
- nz: 48
- nz1: 25
- time: 144
- time(time)datetime64[ns]1948-01-31T23:15:00 ... 1959-12-...
- long_name :
- time
array(['1948-01-31T23:15:00.000000000', '1948-02-28T23:15:00.000000000', '1948-03-30T23:15:00.000000000', '1948-04-29T23:15:00.000000000', '1948-05-30T23:15:00.000000000', '1948-06-29T23:15:00.000000000', '1948-07-30T23:15:00.000000000', '1948-08-30T23:15:00.000000000', '1948-09-29T23:15:00.000000000', '1948-10-30T23:15:00.000000000', '1948-11-29T23:15:00.000000000', '1948-12-30T23:15:00.000000000', '1949-01-31T23:15:00.000000000', '1949-02-28T23:15:00.000000000', '1949-03-31T23:15:00.000000000', '1949-04-30T23:15:00.000000000', '1949-05-31T23:15:00.000000000', '1949-06-30T23:15:00.000000000', '1949-07-31T23:15:00.000000000', '1949-08-31T23:15:00.000000000', '1949-09-30T23:15:00.000000000', '1949-10-31T23:15:00.000000000', '1949-11-30T23:15:00.000000000', '1949-12-31T23:15:00.000000000', '1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000', '1950-06-30T23:15:00.000000000', '1950-07-31T23:15:00.000000000', '1950-08-31T23:15:00.000000000', '1950-09-30T23:15:00.000000000', '1950-10-31T23:15:00.000000000', '1950-11-30T23:15:00.000000000', '1950-12-31T23:15:00.000000000', '1951-01-31T23:15:00.000000000', '1951-02-28T23:15:00.000000000', '1951-03-31T23:15:00.000000000', '1951-04-30T23:15:00.000000000', '1951-05-31T23:15:00.000000000', '1951-06-30T23:15:00.000000000', '1951-07-31T23:15:00.000000000', '1951-08-31T23:15:00.000000000', '1951-09-30T23:15:00.000000000', '1951-10-31T23:15:00.000000000', '1951-11-30T23:15:00.000000000', '1951-12-31T23:15:00.000000000', '1952-01-31T23:15:00.000000000', '1952-02-28T23:15:00.000000000', '1952-03-30T23:15:00.000000000', '1952-04-29T23:15:00.000000000', '1952-05-30T23:15:00.000000000', '1952-06-29T23:15:00.000000000', '1952-07-30T23:15:00.000000000', '1952-08-30T23:15:00.000000000', '1952-09-29T23:15:00.000000000', '1952-10-30T23:15:00.000000000', '1952-11-29T23:15:00.000000000', '1952-12-30T23:15:00.000000000', '1953-01-31T23:15:00.000000000', '1953-02-28T23:15:00.000000000', '1953-03-31T23:15:00.000000000', '1953-04-30T23:15:00.000000000', '1953-05-31T23:15:00.000000000', '1953-06-30T23:15:00.000000000', '1953-07-31T23:15:00.000000000', '1953-08-31T23:15:00.000000000', '1953-09-30T23:15:00.000000000', '1953-10-31T23:15:00.000000000', '1953-11-30T23:15:00.000000000', '1953-12-31T23:15:00.000000000', '1954-01-31T23:15:00.000000000', '1954-02-28T23:15:00.000000000', '1954-03-31T23:15:00.000000000', '1954-04-30T23:15:00.000000000', '1954-05-31T23:15:00.000000000', '1954-06-30T23:15:00.000000000', '1954-07-31T23:15:00.000000000', '1954-08-31T23:15:00.000000000', '1954-09-30T23:15:00.000000000', '1954-10-31T23:15:00.000000000', '1954-11-30T23:15:00.000000000', '1954-12-31T23:15:00.000000000', '1955-01-31T23:15:00.000000000', '1955-02-28T23:15:00.000000000', '1955-03-31T23:15:00.000000000', '1955-04-30T23:15:00.000000000', '1955-05-31T23:15:00.000000000', '1955-06-30T23:15:00.000000000', '1955-07-31T23:15:00.000000000', '1955-08-31T23:15:00.000000000', '1955-09-30T23:15:00.000000000', '1955-10-31T23:15:00.000000000', '1955-11-30T23:15:00.000000000', '1955-12-31T23:15:00.000000000', '1956-01-31T23:15:00.000000000', '1956-02-28T23:15:00.000000000', '1956-03-30T23:15:00.000000000', '1956-04-29T23:15:00.000000000', '1956-05-30T23:15:00.000000000', '1956-06-29T23:15:00.000000000', '1956-07-30T23:15:00.000000000', '1956-08-30T23:15:00.000000000', '1956-09-29T23:15:00.000000000', '1956-10-30T23:15:00.000000000', '1956-11-29T23:15:00.000000000', '1956-12-30T23:15:00.000000000', '1957-01-31T23:15:00.000000000', '1957-02-28T23:15:00.000000000', '1957-03-31T23:15:00.000000000', '1957-04-30T23:15:00.000000000', '1957-05-31T23:15:00.000000000', '1957-06-30T23:15:00.000000000', '1957-07-31T23:15:00.000000000', '1957-08-31T23:15:00.000000000', '1957-09-30T23:15:00.000000000', '1957-10-31T23:15:00.000000000', '1957-11-30T23:15:00.000000000', '1957-12-31T23:15:00.000000000', '1958-01-31T23:15:00.000000000', '1958-02-28T23:15:00.000000000', '1958-03-31T23:15:00.000000000', '1958-04-30T23:15:00.000000000', '1958-05-31T23:15:00.000000000', '1958-06-30T23:15:00.000000000', '1958-07-31T23:15:00.000000000', '1958-08-31T23:15:00.000000000', '1958-09-30T23:15:00.000000000', '1958-10-31T23:15:00.000000000', '1958-11-30T23:15:00.000000000', '1958-12-31T23:15:00.000000000', '1959-01-31T23:15:00.000000000', '1959-02-28T23:15:00.000000000', '1959-03-31T23:15:00.000000000', '1959-04-30T23:15:00.000000000', '1959-05-31T23:15:00.000000000', '1959-06-30T23:15:00.000000000', '1959-07-31T23:15:00.000000000', '1959-08-31T23:15:00.000000000', '1959-09-30T23:15:00.000000000', '1959-10-31T23:15:00.000000000', '1959-11-30T23:15:00.000000000', '1959-12-31T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 80 B 24 B Shape (10,) (3,) Count 59 Tasks 7 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 80 B 24 B Shape (10,) (3,) Count 59 Tasks 7 Chunks Type float64 numpy.ndarray - nz1(nz1)float64-2.5 -7.5 -15.0 ... -850.0 -975.0
- long_name :
- depth at half level
- units :
- m
array([ -2.5, -7.5, -15. , -25. , -35. , -45. , -55. , -65. , -75. , -85. , -95. , -107.5, -125. , -147.5, -175. , -210. , -255. , -310. , -375. , -450. , -535. , -630. , -735. , -850. , -975. ])
- nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- temp(time, nod2, nz1)float32dask.array<chunksize=(1, 10, 25), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 144.00 kB 1000 B Shape (144, 10, 25) (1, 10, 25) Count 433 Tasks 144 Chunks Type float32 numpy.ndarray - salt(time, nod2, nz1)float32dask.array<chunksize=(1, 10, 25), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 144.00 kB 1000 B Shape (144, 10, 25) (1, 10, 25) Count 433 Tasks 144 Chunks Type float32 numpy.ndarray - a_ice(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - m_ice(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - ssh(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray - sst(time, nod2)float32dask.array<chunksize=(1, 10), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 5.76 kB 40 B Shape (144, 10) (1, 10) Count 289 Tasks 144 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
Note that mixing arrays and slices is allowed in select
method. For convinience, select method also takes path argument that can be a shapely’s LineString achieving same selection as above but also returns distance along path as an additional coordinate.
2.1 Trajectory selection¶
select_points
method. Arrays defining a trajectory can directly be passed as arguments to select_points
to make a trajectory like selection. However select
method may also be used by usingselect_points
also returns additional diagnostics related to point selection such as distance along the trajectory, that can be useful for plotting. In future we intend to add more diagnostics around selection like error estimates from selection.[7]:
import pandas as pd
# Define selection values in time, depth, lat, lon
sel_times = pd.date_range('1950-01-01', freq='M', periods=5)
sel_levels = [0, -10, -5, -30, -15]
sel_lats = np.linspace(-90,90,5)
sel_lons = np.linspace(-180,180,5)
[8]:
fesom_ds.pyfesom2.select_points(lon=sel_lons, lat=sel_lats, nz1=sel_levels, time=sel_times)
[8]:
<xarray.Dataset> Dimensions: (nod2: 5, nz: 48) Coordinates: time (nod2) datetime64[ns] 1950-01-31T23:15:00 ... 1950-05-31T23:15:00 lat (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> nz1 (nod2) float64 -2.5 -7.5 -2.5 -25.0 -15.0 * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 distance (nod2) float64 0.0 5.017e+03 1.503e+04 2.504e+04 3.005e+04 Dimensions without coordinates: nod2 Data variables: temp (nod2) float32 dask.array<chunksize=(5,), meta=np.ndarray> salt (nod2) float32 dask.array<chunksize=(5,), meta=np.ndarray> a_ice (nod2) float32 dask.array<chunksize=(5,), meta=np.ndarray> m_ice (nod2) float32 dask.array<chunksize=(5,), meta=np.ndarray> ssh (nod2) float32 dask.array<chunksize=(5,), meta=np.ndarray> sst (nod2) float32 dask.array<chunksize=(5,), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- nod2: 5
- nz: 48
- time(nod2)datetime64[ns]1950-01-31T23:15:00 ... 1950-05-...
- long_name :
- time
array(['1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 40 B 8 B Shape (5,) (1,) Count 57 Tasks 5 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 40 B 8 B Shape (5,) (1,) Count 57 Tasks 5 Chunks Type float64 numpy.ndarray - nz1(nod2)float64-2.5 -7.5 -2.5 -25.0 -15.0
- long_name :
- depth at half level
- units :
- m
array([ -2.5, -7.5, -2.5, -25. , -15. ])
- nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- distance(nod2)float640.0 5.017e+03 ... 3.005e+04
- units :
- km
- long_name :
- distance along trajectory
array([ 0. , 5017.02135133, 15027.40771237, 25037.79407341, 30054.81542475])
- temp(nod2)float32dask.array<chunksize=(5,), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 20 B 20 B Shape (5,) (5,) Count 295 Tasks 1 Chunks Type float32 numpy.ndarray - salt(nod2)float32dask.array<chunksize=(5,), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 20 B 20 B Shape (5,) (5,) Count 295 Tasks 1 Chunks Type float32 numpy.ndarray - a_ice(nod2)float32dask.array<chunksize=(5,), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 20 B 20 B Shape (5,) (5,) Count 295 Tasks 1 Chunks Type float32 numpy.ndarray - m_ice(nod2)float32dask.array<chunksize=(5,), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 20 B 20 B Shape (5,) (5,) Count 295 Tasks 1 Chunks Type float32 numpy.ndarray - ssh(nod2)float32dask.array<chunksize=(5,), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 20 B 20 B Shape (5,) (5,) Count 295 Tasks 1 Chunks Type float32 numpy.ndarray - sst(nod2)float32dask.array<chunksize=(5,), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 20 B 20 B Shape (5,) (5,) Count 295 Tasks 1 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
Note in such trajectory selection, all the dimensions used as indexers need to be of same size. The return dataset has these selected indexers on a common dimentions nod2
. See accessor_plotting.ipynb example for opinionated ploting such transect.
3. Advanced selections¶
Both select
and select_points
methods support Xarray’s advanced indexing, this can be leveraged to select multiple trajectories at once. To use Xarray’s advanced indexing, indexers have to be defined as dataarrays with a common dimentions.
Define three sample trajectories in lat, lon, time and depth.
[9]:
import xarray as xr
lons_ref = np.array([-25., -33., -36., -37., -45])
lons = xr.DataArray([lons_ref, lons_ref-5., lons_ref+5.], dims=('ntraj', 'trajectory'))
lats_ref = [ 2., 7., 11. , 16., 20.]
lats = xr.DataArray([lats_ref, lats_ref, lats_ref], dims=('ntraj', 'trajectory'))
levs = np.array([[-800., -700., -750., -900., -950.],
[-800., -500., -400., -600., -700.],
[-800., -900., -750., -600., -700.]])
levs = xr.DataArray(levs, dims=('ntraj', 'trajectory'))
times_ref = pd.date_range('1950-01-01', freq='M', periods=5)
times = xr.DataArray([times_ref, times_ref, times_ref], dims=('ntraj', 'trajectory'))
Select the trajectories at once. Dimension ntraj
can be used to identify the trajectory.
[10]:
fesom_ds.pyfesom2.select_points(lon=lons, lat=lats, time =times, nz1=levs)
[10]:
<xarray.Dataset> Dimensions: (ntraj: 3, nz: 48, trajectory: 5) Coordinates: time (ntraj, trajectory) datetime64[ns] 1950-01-31T23:15:00 ... 1950... lat (ntraj, trajectory) float64 dask.array<chunksize=(3, 5), meta=np.ndarray> lon (ntraj, trajectory) float64 dask.array<chunksize=(3, 5), meta=np.ndarray> nz1 (ntraj, trajectory) float64 -850.0 -735.0 -735.0 ... -630.0 -735.0 * nz (nz) float64 0.0 -5.0 -10.0 -20.0 ... -5.65e+03 -6e+03 -6.25e+03 distance (ntraj, trajectory) float64 0.0 1.046e+06 ... 2.161e+06 3.117e+06 Dimensions without coordinates: ntraj, trajectory Data variables: temp (ntraj, trajectory) float32 dask.array<chunksize=(3, 5), meta=np.ndarray> salt (ntraj, trajectory) float32 dask.array<chunksize=(3, 5), meta=np.ndarray> a_ice (ntraj, trajectory) float32 dask.array<chunksize=(3, 5), meta=np.ndarray> m_ice (ntraj, trajectory) float32 dask.array<chunksize=(3, 5), meta=np.ndarray> ssh (ntraj, trajectory) float32 dask.array<chunksize=(3, 5), meta=np.ndarray> sst (ntraj, trajectory) float32 dask.array<chunksize=(3, 5), meta=np.ndarray> Attributes: Dataset URL: https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3...
- ntraj: 3
- nz: 48
- trajectory: 5
- time(ntraj, trajectory)datetime64[ns]1950-01-31T23:15:00 ... 1950-05-...
- long_name :
- time
array([['1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000'], ['1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000'], ['1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000']], dtype='datetime64[ns]')
- lat(ntraj, trajectory)float64dask.array<chunksize=(3, 5), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 120 B 120 B Shape (3, 5) (3, 5) Count 57 Tasks 1 Chunks Type float64 numpy.ndarray - lon(ntraj, trajectory)float64dask.array<chunksize=(3, 5), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 120 B 120 B Shape (3, 5) (3, 5) Count 57 Tasks 1 Chunks Type float64 numpy.ndarray - nz1(ntraj, trajectory)float64-850.0 -735.0 ... -630.0 -735.0
- long_name :
- depth at half level
- units :
- m
array([[-850., -735., -735., -850., -975.], [-850., -535., -375., -630., -735.], [-850., -850., -735., -630., -735.]])
- nz(nz)float640.0 -5.0 -10.0 ... -6e+03 -6.25e+03
- long_name :
- depth
- units :
- m
array([ 0.00e+00, -5.00e+00, -1.00e+01, -2.00e+01, -3.00e+01, -4.00e+01, -5.00e+01, -6.00e+01, -7.00e+01, -8.00e+01, -9.00e+01, -1.00e+02, -1.15e+02, -1.35e+02, -1.60e+02, -1.90e+02, -2.30e+02, -2.80e+02, -3.40e+02, -4.10e+02, -4.90e+02, -5.80e+02, -6.80e+02, -7.90e+02, -9.10e+02, -1.04e+03, -1.18e+03, -1.33e+03, -1.50e+03, -1.70e+03, -1.92e+03, -2.15e+03, -2.40e+03, -2.65e+03, -2.90e+03, -3.15e+03, -3.40e+03, -3.65e+03, -3.90e+03, -4.15e+03, -4.40e+03, -4.65e+03, -4.90e+03, -5.15e+03, -5.40e+03, -5.65e+03, -6.00e+03, -6.25e+03])
- distance(ntraj, trajectory)float640.0 1.046e+06 ... 3.117e+06
- units :
- m
- long_name :
- distance along trajectory
array([[ 0. , 1045674.04681721, 1597483.20642278, 2161147.38468702, 3116827.56669606], [ 0. , 1045674.04681721, 1597483.20642278, 2161147.38468702, 3116827.56669606], [ 0. , 1045674.04681721, 1597483.20642278, 2161147.38468702, 3116827.56669606]])
- temp(ntraj, trajectory)float32dask.array<chunksize=(3, 5), meta=np.ndarray>
- description :
- temperature
- units :
- C
Array Chunk Bytes 60 B 60 B Shape (3, 5) (3, 5) Count 728 Tasks 1 Chunks Type float32 numpy.ndarray - salt(ntraj, trajectory)float32dask.array<chunksize=(3, 5), meta=np.ndarray>
- description :
- salinity
- units :
- psu
Array Chunk Bytes 60 B 60 B Shape (3, 5) (3, 5) Count 728 Tasks 1 Chunks Type float32 numpy.ndarray - a_ice(ntraj, trajectory)float32dask.array<chunksize=(3, 5), meta=np.ndarray>
- description :
- ice concentration
- units :
- %
Array Chunk Bytes 60 B 60 B Shape (3, 5) (3, 5) Count 728 Tasks 1 Chunks Type float32 numpy.ndarray - m_ice(ntraj, trajectory)float32dask.array<chunksize=(3, 5), meta=np.ndarray>
- description :
- ice height
- units :
- m
Array Chunk Bytes 60 B 60 B Shape (3, 5) (3, 5) Count 728 Tasks 1 Chunks Type float32 numpy.ndarray - ssh(ntraj, trajectory)float32dask.array<chunksize=(3, 5), meta=np.ndarray>
- description :
- sea surface elevation
- units :
- m
Array Chunk Bytes 60 B 60 B Shape (3, 5) (3, 5) Count 728 Tasks 1 Chunks Type float32 numpy.ndarray - sst(ntraj, trajectory)float32dask.array<chunksize=(3, 5), meta=np.ndarray>
- description :
- sea surface temperature
- units :
- C
Array Chunk Bytes 60 B 60 B Shape (3, 5) (3, 5) Count 728 Tasks 1 Chunks Type float32 numpy.ndarray
- Dataset URL :
- https://swiftbrowser.dkrz.de/public/dkrz_02942825-0cab-44f3-ad37-80fd5d2e37e3/FESOM2_data/LCORE
4. Selection on variables¶
In above examples selections were performed on entire dataset, which is convininent to make selections on entire dataset but the .pyfesom2
accessor can also be used on individual data variables (dataarrays) of datasets.
[11]:
fesom_ds.pyfesom2.temp.select_points(lon=sel_lons, lat=sel_lats, nz1=sel_levels)
[11]:
<xarray.DataArray 'temp' (time: 144, nod2: 5)> dask.array<transpose, shape=(144, 5), dtype=float32, chunksize=(1, 5), chunktype=numpy.ndarray> Coordinates: * time (time) datetime64[ns] 1948-01-31T23:15:00 ... 1959-12-31T23:15:00 lat (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> lon (nod2) float64 dask.array<chunksize=(1,), meta=np.ndarray> nz1 (nod2) float64 -2.5 -7.5 -2.5 -25.0 -15.0 distance (nod2) float64 0.0 5.017e+03 1.503e+04 2.504e+04 3.005e+04 Dimensions without coordinates: nod2 Attributes: description: temperature units: C
- time: 144
- nod2: 5
- dask.array<chunksize=(1, 5), meta=np.ndarray>
Array Chunk Bytes 2.88 kB 20 B Shape (144, 5) (1, 5) Count 721 Tasks 144 Chunks Type float32 numpy.ndarray - time(time)datetime64[ns]1948-01-31T23:15:00 ... 1959-12-...
- long_name :
- time
array(['1948-01-31T23:15:00.000000000', '1948-02-28T23:15:00.000000000', '1948-03-30T23:15:00.000000000', '1948-04-29T23:15:00.000000000', '1948-05-30T23:15:00.000000000', '1948-06-29T23:15:00.000000000', '1948-07-30T23:15:00.000000000', '1948-08-30T23:15:00.000000000', '1948-09-29T23:15:00.000000000', '1948-10-30T23:15:00.000000000', '1948-11-29T23:15:00.000000000', '1948-12-30T23:15:00.000000000', '1949-01-31T23:15:00.000000000', '1949-02-28T23:15:00.000000000', '1949-03-31T23:15:00.000000000', '1949-04-30T23:15:00.000000000', '1949-05-31T23:15:00.000000000', '1949-06-30T23:15:00.000000000', '1949-07-31T23:15:00.000000000', '1949-08-31T23:15:00.000000000', '1949-09-30T23:15:00.000000000', '1949-10-31T23:15:00.000000000', '1949-11-30T23:15:00.000000000', '1949-12-31T23:15:00.000000000', '1950-01-31T23:15:00.000000000', '1950-02-28T23:15:00.000000000', '1950-03-31T23:15:00.000000000', '1950-04-30T23:15:00.000000000', '1950-05-31T23:15:00.000000000', '1950-06-30T23:15:00.000000000', '1950-07-31T23:15:00.000000000', '1950-08-31T23:15:00.000000000', '1950-09-30T23:15:00.000000000', '1950-10-31T23:15:00.000000000', '1950-11-30T23:15:00.000000000', '1950-12-31T23:15:00.000000000', '1951-01-31T23:15:00.000000000', '1951-02-28T23:15:00.000000000', '1951-03-31T23:15:00.000000000', '1951-04-30T23:15:00.000000000', '1951-05-31T23:15:00.000000000', '1951-06-30T23:15:00.000000000', '1951-07-31T23:15:00.000000000', '1951-08-31T23:15:00.000000000', '1951-09-30T23:15:00.000000000', '1951-10-31T23:15:00.000000000', '1951-11-30T23:15:00.000000000', '1951-12-31T23:15:00.000000000', '1952-01-31T23:15:00.000000000', '1952-02-28T23:15:00.000000000', '1952-03-30T23:15:00.000000000', '1952-04-29T23:15:00.000000000', '1952-05-30T23:15:00.000000000', '1952-06-29T23:15:00.000000000', '1952-07-30T23:15:00.000000000', '1952-08-30T23:15:00.000000000', '1952-09-29T23:15:00.000000000', '1952-10-30T23:15:00.000000000', '1952-11-29T23:15:00.000000000', '1952-12-30T23:15:00.000000000', '1953-01-31T23:15:00.000000000', '1953-02-28T23:15:00.000000000', '1953-03-31T23:15:00.000000000', '1953-04-30T23:15:00.000000000', '1953-05-31T23:15:00.000000000', '1953-06-30T23:15:00.000000000', '1953-07-31T23:15:00.000000000', '1953-08-31T23:15:00.000000000', '1953-09-30T23:15:00.000000000', '1953-10-31T23:15:00.000000000', '1953-11-30T23:15:00.000000000', '1953-12-31T23:15:00.000000000', '1954-01-31T23:15:00.000000000', '1954-02-28T23:15:00.000000000', '1954-03-31T23:15:00.000000000', '1954-04-30T23:15:00.000000000', '1954-05-31T23:15:00.000000000', '1954-06-30T23:15:00.000000000', '1954-07-31T23:15:00.000000000', '1954-08-31T23:15:00.000000000', '1954-09-30T23:15:00.000000000', '1954-10-31T23:15:00.000000000', '1954-11-30T23:15:00.000000000', '1954-12-31T23:15:00.000000000', '1955-01-31T23:15:00.000000000', '1955-02-28T23:15:00.000000000', '1955-03-31T23:15:00.000000000', '1955-04-30T23:15:00.000000000', '1955-05-31T23:15:00.000000000', '1955-06-30T23:15:00.000000000', '1955-07-31T23:15:00.000000000', '1955-08-31T23:15:00.000000000', '1955-09-30T23:15:00.000000000', '1955-10-31T23:15:00.000000000', '1955-11-30T23:15:00.000000000', '1955-12-31T23:15:00.000000000', '1956-01-31T23:15:00.000000000', '1956-02-28T23:15:00.000000000', '1956-03-30T23:15:00.000000000', '1956-04-29T23:15:00.000000000', '1956-05-30T23:15:00.000000000', '1956-06-29T23:15:00.000000000', '1956-07-30T23:15:00.000000000', '1956-08-30T23:15:00.000000000', '1956-09-29T23:15:00.000000000', '1956-10-30T23:15:00.000000000', '1956-11-29T23:15:00.000000000', '1956-12-30T23:15:00.000000000', '1957-01-31T23:15:00.000000000', '1957-02-28T23:15:00.000000000', '1957-03-31T23:15:00.000000000', '1957-04-30T23:15:00.000000000', '1957-05-31T23:15:00.000000000', '1957-06-30T23:15:00.000000000', '1957-07-31T23:15:00.000000000', '1957-08-31T23:15:00.000000000', '1957-09-30T23:15:00.000000000', '1957-10-31T23:15:00.000000000', '1957-11-30T23:15:00.000000000', '1957-12-31T23:15:00.000000000', '1958-01-31T23:15:00.000000000', '1958-02-28T23:15:00.000000000', '1958-03-31T23:15:00.000000000', '1958-04-30T23:15:00.000000000', '1958-05-31T23:15:00.000000000', '1958-06-30T23:15:00.000000000', '1958-07-31T23:15:00.000000000', '1958-08-31T23:15:00.000000000', '1958-09-30T23:15:00.000000000', '1958-10-31T23:15:00.000000000', '1958-11-30T23:15:00.000000000', '1958-12-31T23:15:00.000000000', '1959-01-31T23:15:00.000000000', '1959-02-28T23:15:00.000000000', '1959-03-31T23:15:00.000000000', '1959-04-30T23:15:00.000000000', '1959-05-31T23:15:00.000000000', '1959-06-30T23:15:00.000000000', '1959-07-31T23:15:00.000000000', '1959-08-31T23:15:00.000000000', '1959-09-30T23:15:00.000000000', '1959-10-31T23:15:00.000000000', '1959-11-30T23:15:00.000000000', '1959-12-31T23:15:00.000000000'], dtype='datetime64[ns]')
- lat(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 40 B 8 B Shape (5,) (1,) Count 57 Tasks 5 Chunks Type float64 numpy.ndarray - lon(nod2)float64dask.array<chunksize=(1,), meta=np.ndarray>
- long_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 40 B 8 B Shape (5,) (1,) Count 57 Tasks 5 Chunks Type float64 numpy.ndarray - nz1(nod2)float64-2.5 -7.5 -2.5 -25.0 -15.0
- long_name :
- depth at half level
- units :
- m
array([ -2.5, -7.5, -2.5, -25. , -15. ])
- distance(nod2)float640.0 5.017e+03 ... 3.005e+04
- units :
- km
- long_name :
- distance along trajectory
array([ 0. , 5017.02135133, 15027.40771237, 25037.79407341, 30054.81542475])
- description :
- temperature
- units :
- C
Here select_points is used on variable temp
to select a transect defined using sel_lons
, sel_lats
and sel_levs
.
Region selection on a data variable returns an Xarray dataset. This is unlike selection on data variables in Xarray, which always returns a dataarray. Returning dataset for region selection was necessary to retain faces
coordinate variable which otherwise would not be not possible to retain in a dataarray. The coordinate variable faces
is necessary for spatial plots and to be able to save the region subset as a standalone dataset.