API reference

xsar.open_dataset(*args, **kwargs)
Parameters:
  • *args – Passed to xsar.SentinelDataset

  • **kwargs – Passed to xsar.SentinelDataset

Return type:

xarray.Dataset

Notes

xsar.open_dataset` is a simple wrapper to xsar.SentinelDataset that directly returns the xarray.Dataset object.

>>> xsar.Sentinel1Dataset(*args, **kwargs).dataset
>>> xsar.RadarSat2Dataset(*args, **kwargs).dataset
>>> xsar.RcmDataset(*args, **kwargs).dataset
xsar.product_info(path, columns='minimal', include_multi=False)
Parameters:
  • path (str or iterable of str) – path or gdal url.

  • columns (list of str or str, optional) – ‘minimal’ by default: only include columns from attributes found in manifest.safe. Use ‘spatial’ to have ‘time_range’ and ‘geometry’. Might be a list of properties from xsar.Sentinel1Meta

  • include_multi (bool, optional) – False by default: don’t include multi datasets

Returns:

One dataset per lines, with info as columns

Return type:

geopandas.GeoDataFrame

Base classes

class xsar.BaseMeta

Abstract class that defines necessary common functions for the computation of different SAR metadata (Radarsat2, Sentinel1, RCM…). This also permit a better maintenance, because these functions aren’t redefined many times.

classmethod set_mask_feature(name, feature)

Set a named mask from a shapefile or a cartopy feature.

Parameters:
  • name (str) – mask name

  • feature (str or cartopy.feature.Feature) – if str, feature is a path to a shapefile or whatever file readable with fiona. It is recommended to use str, as the serialization of cartopy feature might be big.

Examples

Add an ‘ocean’ mask at class level (ie as default mask): ` >>> xsar.RadarSat2Meta.set_mask_feature('ocean', cartopy.feature.OCEAN) >>> xsar.Sentinel1Meta.set_mask_feature('ocean', cartopy.feature.OCEAN) `

Add an ‘ocean’ mask at instance level (ie only for this self Sentinel1Meta (or RadarSat2Meta instance): ` >>> xsar.RadarSat2Meta.set_mask_feature('ocean', cartopy.feature.OCEAN) >>> xsar.Sentinel1Meta.set_mask_feature('ocean', cartopy.feature.OCEAN) `

High resoltion shapefiles can be found from openstreetmap. It is recommended to use WGS84 with large polygons split from https://osmdata.openstreetmap.de/

get_mask(name, describe=False)

Get mask from name (e.g. ‘land’) as a shapely Polygon. The resulting polygon is contained in the footprint.

Parameters:

name (str) –

Return type:

shapely.geometry.Polygon

abstract property footprint

alias for xsar.BaseDataset.geometry

property cross_antemeridian

True if footprint cross antemeridian

property swath

string like ‘EW’, ‘IW’, ‘WV’, etc …

property mask_names

returns: mask names :rtype: list of str

coords2ll(*args, to_grid=False, approx=False)

convert lines, samples arrays to longitude and latitude arrays. or a shapely object in lines, samples coordinates to longitude and latitude.

Parameters:
  • *args (lines, samples or a shapely geometry) – lines, samples are iterables or scalar

  • to_grid (bool, default False) – If True, lines and samples must be 1D arrays. The results will be 2D array of shape (lines.size, samples.size).

Returns:

(longitude, latitude) , with shape depending on to_grid keyword.

Return type:

tuple of np.array or tuple of float

ll2coords(*args)

Get (lines, samples) from (lon, lat), or convert a lon/lat shapely object to line/sample coordinates.

Parameters:

*args (lon, lat or shapely object) – lon and lat might be iterables or scalars

Return type:

tuple of np.array or tuple of float (lines, samples) , or a shapely object

Examples

get nearest (line,sample) from (lon,lat) = (84.81, 21.32) in ds, without bounds checks

>>> (line, sample) = self.ll2coords(84.81, 21.32) # (lon, lat)
>>> (line, sample)
(9752.766349989339, 17852.571322887554)
coords2heading(lines, samples, to_grid=False, approx=True)

Get image heading (lines increasing direction) at coords lines, samples.

Parameters:
  • lines (np.array or scalar) –

  • samples (np.array or scalar) –

  • to_grid (bool) – If True, lines and samples must be 1D arrays. The results will be 2D array of shape (lines.size, samples.size).

Returns:

heading , with shape depending on to_grid keyword.

Return type:

np.array or float

property time_range

time range as pd.Interval

property start_date

start date, as datetime.datetime

property stop_date

stop date, as datetime.datetime

class xsar.BaseDataset

Abstract class that defines necessary common functions for the computation of different SAR dataset variables (Radarsat2, Sentinel1, RCM…). This also permit a better maintenance, because these functions aren’t redefined many times.

property len_line_m

line length, in meters

property len_sample_m

sample length, in meters

property coverage

coverage string

property geometry

geometry of this dataset, as a shapely.geometry.Polygon (lon/lat coordinates)

load_ground_heading()

Load ground heading as delayed thanks to BaseMeta.coords2heading.

Returns:

Contains the ground heading

Return type:

xarray.Dataset

add_rasterized_masks()

add rasterized masks only (included in add_high_resolution_variables() for Sentinel-1) :return:

recompute_attrs()

Recompute dataset attributes. It’s automaticaly called if you assign a new dataset, for example

>>> xsar_obj.dataset = xsar_obj.dataset.isel(line=slice(1000,5000))
>>> #xsar_obj.recompute_attrs() # not needed

This function must be manually called before using the .rio accessor of a variable

>>> xsar_obj.recompute_attrs()
>>> xsar_obj.dataset['sigma0'].rio.reproject(...)
coords2ll(*args, **kwargs)

Alias for xsar.BaseMeta.coords2ll .. seealso:: xsar.BaseMeta.coords2ll

ll2coords(*args)

Get (lines, samples) from (lon, lat), or convert a lon/lat shapely object to line/sample coordinates.

Parameters:

*args (lon, lat or shapely object) – lon and lat might be iterables or scalars

Return type:

tuple of np.array or tuple of float (lines, samples) , or a shapely object

Notes

The difference with xsar.BaseMeta.ll2coords is that coordinates are rounded to the nearest dataset coordinates.

get_burst_valid_location()

add a field ‘valid_location’ in the bursts sub-group of the datatree

Returns:

get_bursts_polygons(only_valid_location=True)

get the polygons of radar bursts in the image geometry

Parameters:

only_valid_location (bool) – [True] -> polygons of the TOPS SLC bursts are cropped using valid location index False -> polygons of the TOPS SLC bursts are aligned with azimuth time start/stop index

Returns:

polygons of the burst in the image (ie line/sample) geometry ‘geometry’ is the polygon

Return type:

geopandas.GeoDataframe

load_rasterized_masks()

Load rasterized masks

Returns:

Contains rasterized masks dataset

Return type:

xarray.Dataset

ll2coords_SLC(*args)

for SLC product with irregular projected pixel spacing in range Affine transformation are not relevant :return:

coords2ll_SLC(*args)

for SLC product with irregular projected pixel spacing in range Affine transformation are not relevant

land_mask_slc_per_bursts(lazy_loading=True)
  1. loop on burst polygons to get rasterized landmask

  2. merge the landmask pieces into a single Dataset to replace existing ‘land_mask’ is any

Parameters:

bool (lazy_loading) –

property footprint

alias for xsar.BaseDataset.geometry

map_raster(raster_ds)

Map a raster onto xsar grid

Parameters:

raster_ds (xarray.Dataset or xarray.DataArray) – The dataset we want to project onto xsar grid. The raster_ds.rio accessor must be valid.

Returns:

The projected dataset, with ‘line’ and ‘sample’ coordinate (same size as xsar dataset), and with valid .rio accessor.

Return type:

xarray.Dataset or xarray.DataArray

XSAR Meta classes

class xsar.Sentinel1Meta(name)

Handle dataset metadata. A xsar.Sentinel1Meta object can be used with xsar.open_dataset, but it can be used as itself: it contains usefull attributes and methods.

Parameters:

name (str) – path or gdal identifier like ‘SENTINEL1_DS:%s:WV_001’ % path

platform

Mission platform

have_child(name)

Check if dataset name belong to this Sentinel1Meta object.

Parameters:

name (str) – dataset name

Return type:

bool

annotation_angle(line, sample, angle)

Interpolate angle with RectBivariateSpline

property orbit_pass

Orbit pass, i.e ‘Ascending’ or ‘Descending’

property platform_heading

Platform heading, relative to north

property footprint

footprint, as a shapely polygon or multi polygon

property geometry

alias for footprint

property geoloc

xarray.Dataset with [‘longitude’, ‘latitude’, ‘altitude’, ‘azimuth_time’, ‘slant_range_time’,’incidence’,’elevation’ ] variables and [‘line’, ‘sample’] coordinates, at the geolocation grid

property coverage

coverage, as a string like ‘251km * 170km (sample * line )’

property pixel_line_m

pixel line spacing, in meters (at sensor level)

property pixel_sample_m

pixel sample spacing, in meters (at sensor level)

property denoised

dict with pol as key, and bool as values (True is DN is predenoised at L1 level)

property ipf

ipf version

property pols

polarisations strings, separated by spaces

property orbit
orbit, as a geopandas.GeoDataFrame, with columns:
  • ‘velocity’ : shapely.geometry.Point with velocity in x, y, z direction

  • ‘geometry’ : shapely.geometry.Point with position in x, y, z direction

crs is set to ‘geocentric’

attrs keys:
  • ‘orbit_pass’: ‘Ascending’ or ‘Descending’

  • ‘platform_heading’: in degrees, relative to north

Notes

orbit is longer than the SAFE, because it belongs to all datatakes, not only this slice

property azimuth_fmrate

xarray.Dataset Frequency Modulation rate annotations such as t0 (azimuth time reference) and polynomial coefficients: Azimuth FM rate = c0 + c1(tSR - t0) + c2(tSR - t0)^2

property approx_transform

Affine transfom from geoloc.

This is an inaccurate transform, with errors up to 600 meters. But it’s fast, and may fit some needs, because the error is stable localy. See xsar.BaseMeta.coords2ll xsar.BaseMeta.ll2coords for accurate methods.

Examples

get longitude and latitude from tuple (line, sample):

>>> longitude, latitude = self.approx_transform * (line, sample)

get line and sample from tuple (longitude, latitude)

>>> line, sample = ~self.approx_transform * (longitude, latitude)
property get_calibration_luts

get original (ie not interpolation) xr.Dataset sigma0 and gamma0 Look Up Tables to apply calibration

class xsar.RadarSat2Meta(name)

Handle dataset metadata. A xsar.RadarSat2Meta object can be used with xsar.open_dataset, but it can be used as itself: it contains usefull attributes and methods.

Parameters:

name (str) – path or gdal identifier

property approx_transform

Affine transfom from geoloc.

This is an inaccurate transform, with errors up to 600 meters. But it’s fast, and may fit some needs, because the error is stable localy. See xsar.BaseMeta.coords2ll xsar.BaseMeta.ll2coords for accurate methods.

Examples

get longitude and latitude from tuple (line, sample):

>>> longitude, latitude = self.approx_transform * (line, sample)

get line and sample from tuple (longitude, latitude)

>>> line, sample = ~self.approx_transform * (longitude, latitude)
property pols

polarisations strings, separated by spaces

property footprint

footprint, as a shapely polygon or multi polygon

property pixel_line_m

pixel line spacing, in meters (at sensor level)

property pixel_sample_m

pixel sample spacing, in meters (at sensor level)

property get_azitime

Get time at low resolution

Returns:

times

Return type:

array[datetime64[ns]]

flip_sample_da()

When a product is flipped, flip back data arrays (from the reader datatree) sample dimensions to respect the xsar convention (increasing incidence values)

flip_line_da()

Flip dataArrays (from the reader datatree) that depend on line dimension when a product is ascending, in order to respect the xsar convention (increasing time along line axis, whatever ascending or descending product). Reference : schemas/rs2prod_burstAttributes.xsd:This corresponds to the top-left pixel in a coordinate system where the range increases to the right and the zero-Doppler time increases downward. Note that this is not necessarily the top-left pixel of the image block in the final product.

class xsar.RcmMeta(name)

Handle dataset metadata. A xsar.RadarSat2Meta object can be used with xsar.open_dataset, but it can be used as itself: it contains usefull attributes and methods.

Parameters:

name (str) – path or gdal identifier

flip_sample_da()

When a product is flipped, flip back data arrays (from the reader datatree) sample dimensions to respect the xsar convention (increasing incidence values). Documentation reference : RCM Image Product Format Definition (4.2.1)

flip_line_da()

Flip dataArrays (from the reader datatree) that depend on line dimension when a product is ascending, in order to respect the xsar convention (increasing time along line axis, whatever ascending or descending product). Documentation reference : RCM Image Product Format Definition (4.2.1)

assign_index(ds_list)

Generate a list of increasing indexes as a dataset coord. The change is made directly in the reader’s datatree to all the datasets given in ds_list. The list of indexes is built thanks to a firstPixelValue, a step and a number of values. Documentation reference : RCM Image Product Format Definition (7.5.1)

Parameters:

ds_list (List[str]) – List of dataset that don’t have the samples list built. The list can contain these values : [‘lut’, ‘noise_lut’, ‘incidence’].

property approx_transform

Affine transfom from geoloc.

This is an inaccurate transform, with errors up to 600 meters. But it’s fast, and may fit some needs, because the error is stable localy. See xsar.BaseMeta.coords2ll xsar.BaseMeta.ll2coords for accurate methods.

Examples

get longitude and latitude from tuple (line, sample):

>>> longitude, latitude = self.approx_transform * (line, sample)

get line and sample from tuple (longitude, latitude)

>>> line, sample = ~self.approx_transform * (longitude, latitude)
property footprint

footprint, as a shapely polygon or multi polygon

property pixel_line_m

pixel line spacing, in meters (at sensor level)

property pixel_sample_m

pixel sample spacing, in meters (at sensor level)

property get_azitime

Get time at low resolution

Returns:

times

Return type:

array[datetime64[ns]]

property pols

polarisations strings, separated by spaces

XSAR Dataset classes

class xsar.Sentinel1Dataset(dataset_id, resolution=None, resampling=Resampling.rms, luts=False, chunks={'line': 5000, 'sample': 5000}, dtypes=None, patch_variable=True, lazyloading=True)

Handle a SAFE subdataset. A dataset might contain several tiff files (multiples polarizations), but all tiff files must share the same footprint.

The main attribute useful to the end-user is self.dataset (xarray.Dataset , with all variables parsed from xml and tiff files.)

Parameters:
  • dataset_id (str or Sentinel1Meta object) – if str, it can be a path, or a gdal dataset identifier like ‘SENTINEL1_DS:%s:WV_001’ % filename)

  • resolution (dict, number or string, optional) –

    resampling dict like {‘line’: 20, ‘sample’: 20} where 20 is in pixels.

    if a number, dict will be constructed from {‘line’: number, ‘sample’: number}

    if str, it must end with ‘m’ (meters), like ‘100m’. dict will be computed from sensor pixel size.

  • resampling (rasterio.enums.Resampling or str, optional) –

    Only used if resolution is not None.

    ` rasterio.enums.Resampling.rms` by default. rasterio.enums.Resampling.nearest (decimation) is fastest.

  • luts (bool, optional) – if True return also luts as variables (ie sigma0_lut, gamma0_lut, etc…). False by default.

  • chunks (dict, optional) – dict with keys [‘pol’,’line’,’sample’] (dask chunks).

  • dtypes (None or dict, optional) – Specify the data type for each variable.

  • patch_variable (bool, optional) – activate or not variable pathching ( currently noise lut correction for IPF2.9X)

  • lazyloading (bool, optional) – activate or not the lazy loading of the high resolution fields

interpolation_func_slc

xsar.Sentinel1Meta object

resampled

True if dataset is not a sensor resolution

add_high_resolution_variables(luts=False, patch_variable=True, skip_variables=None, load_luts=True, lazy_loading=True)
Parameters:
  • luts (bool, optional) – if True return also luts as variables (ie sigma0_lut, gamma0_lut, etc…). False by default.

  • patch_variable (bool, optional) – activate or not variable pathching ( currently noise lut correction for IPF2.9X)

  • skip_variables (list, optional) – list of strings eg [‘land_mask’,’longitude’] to skip at rasterisation step

  • load_luts (bool) – True -> load hiddens luts sigma0 beta0 gamma0, False -> no luts reading

  • lazy_loading (bool) – True -> use map_blocks_coords() to have delayed rasterization on variables such as longitude, latitude, incidence,…, False -> directly compute RectBivariateSpline with memory usage (Currently the lazy_loading generate a memory leak)

apply_calibration_and_denoising()

apply calibration and denoising functions to get high resolution sigma0 , beta0 and gamma0 + variables *_raw

Returns:

property dataset

xarray.Dataset representation of this xsar.Sentinel1Dataset object. This property can be set with a new dataset, if the dataset was computed from the original dataset.

get_ll_from_SLC_geoloc(line, sample, varname)
Parameters:
  • (np.ndarray) (sample) –

  • (np.ndarray)

  • (str) (varname) –

Return type:

z_interp_value (np.ndarray)

reverse_calibration_lut(ds_var)

TODO: replace ds_var by var_name Inverse of _apply_calibration_lut : from var_name, reverse apply lut, to get digital_number. See official ESA documentation . > Level-1 products provide four calibration Look Up Tables (LUTs) to produce ß0i, σ0i and γi > or to return to the Digital Number (DN)

A warning message may be issued if original complex ‘digital_number’ is converted to module during this operation.

Parameters:

ds_var (xarray.Dataset) – with only one variable name that must exist in self._map_var_lut to be able to reverse the lut to get digital_number

Returns:

with one variable named ‘digital_number’.

Return type:

xarray.Dataset

property get_burst_azitime

Get azimuth time at high resolution.

Returns:

the high resolution azimuth time vector interpolated at the middle of the sub-swath

Return type:

xarray.DataArray

get_sensor_velocity()

Interpolated sensor velocity :returns: containing a single variable velocity :rtype: xarray.Dataset()

class xsar.RadarSat2Dataset(dataset_id, resolution=None, resampling=Resampling.rms, chunks={'line': 5000, 'sample': 5000}, dtypes=None, lazyloading=True, skip_variables=None)

Handle a SAFE subdataset. A dataset might contain several tiff files (multiples polarizations), but all tiff files must share the same footprint.

The main attribute useful to the end-user is self.dataset (xarray.Dataset , with all variables parsed from xml and tiff files.)

Parameters:
  • dataset_id (str or RadarSat2Meta object) – if str, it can be a path, or a gdal dataset identifier)

  • resolution (dict, number or string, optional) –

    resampling dict like {‘line’: 20, ‘sample’: 20} where 20 is in pixels.

    if a number, dict will be constructed from {‘line’: number, ‘sample’: number}

    if str, it must end with ‘m’ (meters), like ‘100m’. dict will be computed from sensor pixel size.

  • resampling (rasterio.enums.Resampling or str, optional) –

    Only used if resolution is not None.

    ` rasterio.enums.Resampling.rms` by default. rasterio.enums.Resampling.nearest (decimation) is fastest.

  • chunks (dict, optional) – dict with keys [‘pol’,’line’,’sample’] (dask chunks).

  • dtypes (None or dict, optional) – Specify the data type for each variable.

  • lazyloading (bool, optional) – activate or not the lazy loading of the high resolution fields

lazy_load_luts()

Lazy load luts from the reader as delayed

Returns:

Contains delayed dataArrays of luts

Return type:

xarray.Dataset

load_from_geoloc(varnames, lazy_loading=True)

Interpolate (with RectBiVariateSpline) variables from self.sar_meta.geoloc to self._dataset

Parameters:

varnames (list of str) – subset of variables names in self.sar_meta.geoloc

Returns:

With interpolated variables

Return type:

xarray.Dataset

apply_calibration_and_denoising()

apply calibration and denoising functions to get high resolution sigma0 , beta0 and gamma0 + variables *_raw

Returns:

flip_sample_da(ds)

When a product is flipped, flip back data arrays (from a dataset) sample dimensions to respect the xsar convention (increasing incidence values)

Parameters:

ds (xarray.Dataset) – Contains dataArrays which depends on sample dimension

Returns:

Flipped back, respecting the xsar convention

Return type:

xarray.Dataset

flip_line_da(ds)

Flip dataArrays (from a dataset) that depend on line dimension when a product is ascending, in order to respect the xsar convention (increasing time along line axis, whatever ascending or descending product). Reference : schemas/rs2prod_burstAttributes.xsd:This corresponds to the top-left pixel in a coordinate system where the range increases to the right and the zero-Doppler time increases downward. Note that this is not necessarily the top-left pixel of the image block in the final product.

Parameters:

ds (xarray.Dataset) – Contains dataArrays which depends on line dimension

Returns:

Flipped back, respecting the xsar convention

Return type:

xarray.Dataset

property interpolate_times

Apply interpolation with RectBivariateSpline to the azimuth time extracted from self.sar_meta.geoloc

Returns:

Contains the time as delayed at the good resolution and expressed as type datetime64[ns]

Return type:

xarray.Dataset

get_sensor_velocity()

Interpolated sensor velocity :returns: containing a single variable velocity :rtype: xarray.Dataset()

property dataset

xarray.Dataset representation of this xsar.RadarSat2Dataset object. This property can be set with a new dataset, if the dataset was computed from the original dataset.

class xsar.RcmDataset(dataset_id, resolution=None, resampling=Resampling.rms, chunks={'line': 5000, 'sample': 5000}, dtypes=None, lazyloading=True, skip_variables=None)

Handle a SAFE subdataset. A dataset might contain several tiff files (multiples polarizations), but all tiff files must share the same footprint.

The main attribute useful to the end-user is self.dataset (xarray.Dataset , with all variables parsed from xml and tiff files.)

Parameters:
  • dataset_id (str or RadarSat2Meta object) – if str, it can be a path, or a gdal dataset identifier)

  • resolution (dict, number or string, optional) –

    resampling dict like {‘line’: 20, ‘sample’: 20} where 20 is in pixels.

    if a number, dict will be constructed from {‘line’: number, ‘sample’: number}

    if str, it must end with ‘m’ (meters), like ‘100m’. dict will be computed from sensor pixel size.

  • resampling (rasterio.enums.Resampling or str, optional) –

    Only used if resolution is not None.

    ` rasterio.enums.Resampling.rms` by default. rasterio.enums.Resampling.nearest (decimation) is fastest.

  • chunks (dict, optional) – dict with keys [‘pol’,’line’,’sample’] (dask chunks).

  • dtypes (None or dict, optional) – Specify the data type for each variable.

  • lazyloading (bool, optional) – activate or not the lazy loading of the high resolution fields

lazy_load_luts()

Lazy load luts from the reader as delayed

Returns:

Contains delayed dataArrays of luts

Return type:

xarray.Dataset

lazy_load_noise_luts()

Lazy load noise luts from the reader as delayed

Returns:

Contains delayed dataArrays of luts

Return type:

xarray.Dataset

apply_calibration_and_denoising()

apply calibration and denoising functions to get high resolution sigma0 , beta0 and gamma0 + variables *_raw

Returns:

load_from_geoloc(varnames, lazy_loading=True)

Interpolate (with RectBiVariateSpline) variables from self.sar_meta.geoloc to self._dataset

Parameters:

varnames (list of str) – subset of variables names in self.sar_meta.geoloc

Returns:

With interpolated variables

Return type:

xarray.Dataset

property interpolate_times

Apply interpolation with RectBivariateSpline to the azimuth time extracted from self.sar_meta.geoloc

Returns:

Contains the time as delayed at the good resolution and expressed as type datetime64[ns]

Return type:

xarray.Dataset

get_sensor_velocity()

Interpolated sensor velocity :returns: containing a single variable velocity :rtype: xarray.Dataset()

load_digital_number(resolution=None, chunks=None, resampling=Resampling.rms)

load digital_number from tiff files, as an xarray.Dataset.

Parameters:
  • resolution (None, number, str or dict) – see xsar.open_dataset

  • resampling (rasterio.enums.Resampling) – see xsar.open_dataset

Returns:

dataset (possibly dual-pol), with basic coords/dims naming convention

Return type:

xarray.Dataset

flip_sample_da(ds)

When a product is flipped, flip back data arrays (from a dataset) sample dimensions to respect the xsar convention (increasing incidence values). Documentation reference : RCM Image Product Format Definition (4.2.1)

Parameters:

ds (xarray.Dataset) – Contains dataArrays which depends on sample dimension

Returns:

Flipped back, respecting the xsar convention

Return type:

xarray.Dataset

flip_line_da(ds)

Flip dataArrays (from a dataset) that depend on line dimension when a product is ascending, in order to respect the xsar convention (increasing time along line axis, whatever ascending or descending product). Documentation reference : RCM Image Product Format Definition (4.2.1)

Parameters:

ds (xarray.Dataset) – Contains dataArrays which depends on line dimension

Returns:

Flipped back, respecting the xsar convention

Return type:

xarray.Dataset

reconfigure_reader_datatree()

Merge self.datatree with the reader’s one. Merge attributes of the reader’s datatree in the attributes of self.datatree

property dataset

xarray.Dataset representation of this xsar.RcmDataset object. This property can be set with a new dataset, if the dataset was computed from the original dataset.