Source code for wradlib.xarray
#!/usr/bin/env python
# Copyright (c) 2011-2023, wradlib developers.
# Distributed under the MIT License. See LICENSE.txt for more info.
"""
wradlib Xarray Accessors
^^^^^^^^^^^^^^^^^^^^^^^^
Since version 2.0 wradlib makes increasing use of xarray Accessors.
Module `xarray` takes care of accessing wradlib functionality from
xarray DataArrays and Datasets.
.. currentmodule:: wradlib.xarray
.. autosummary::
:nosignatures:
:toctree: generated/
{}
"""
__all__ = ["WradlibXarrayAccessor"]
__doc__ = __doc__.format("\n ".join(__all__))
import re
import xarray as xr
import wradlib
[docs]
@xr.register_dataarray_accessor("wrl")
@xr.register_dataset_accessor("wrl")
class WradlibXarrayAccessor:
"""Xarray Accessor for wradlib module functions"""
__slots__ = [
"_obj",
"_atten",
"_classify",
"_comp",
"_dp",
"_georef",
"_ipol",
"_qual",
"_trafo",
"_util",
"_vis",
"_zr",
]
def __init__(self, xarray_obj):
for slot in self.__slots__:
setattr(self, slot, None)
self._obj = xarray_obj
def __getattr__(self, attr):
return getattr(self._obj, attr)
def __repr__(self):
return re.sub(r"<.+>", f"<{self.__class__.__name__}>", str(self._obj))
@property
def atten(self):
"""SubAccessor for :class:`wradlib.atten.AttenMethods`."""
if self._atten is None:
self._atten = wradlib.atten.AttenMethods(self._obj)
return self._atten
@property
def classify(self):
"""SubAccessor for :class:`wradlib.classify.ClassifyMethods`."""
if self._classify is None:
self._classify = wradlib.classify.ClassifyMethods(self._obj)
return self._classify
@property
def comp(self):
"""SubAccessor for :class:`wradlib.comp.CompMethods`."""
if self._comp is None:
self._comp = wradlib.comp.CompMethods(self._obj)
return self._comp
@property
def dp(self):
"""SubAccessor for :class:`wradlib.dp.DpMethods`."""
if self._dp is None:
self._dp = wradlib.dp.DpMethods(self._obj)
return self._dp
@property
def georef(self):
"""SubAccessor for :class:`wradlib.georef.GeorefMethods`."""
if self._georef is None:
self._georef = wradlib.georef.GeorefMethods(self._obj)
return self._georef
@property
def ipol(self):
"""SubAccessor for :class:`wradlib.ipol.IpolMethods`."""
if self._ipol is None:
self._ipol = wradlib.ipol.IpolMethods(self._obj)
return self._ipol
@property
def qual(self):
"""SubAccessor for :class:`wradlib.qual.QualMethods`."""
if self._qual is None:
self._qual = wradlib.qual.QualMethods(self._obj)
return self._qual
@property
def trafo(self):
"""SubAccessor for :class:`wradlib.trafo.TrafoMethods`."""
if self._trafo is None:
self._trafo = wradlib.trafo.TrafoMethods(self._obj)
return self._trafo
@property
def util(self):
"""SubAccessor for :class:`wradlib.util.UtilMethods`."""
if self._util is None:
self._util = wradlib.util.UtilMethods(self._obj)
return self._util
@property
def vis(self):
"""SubAccessor for :class:`wradlib.vis.VisMethods`."""
if self._vis is None:
self._vis = wradlib.vis.VisMethods(self._obj)
return self._vis
@property
def zr(self):
"""SubAccessor for :class:`wradlib.zr.ZRMethods`."""
if self._vis is None:
self._vis = wradlib.zr.ZRMethods(self._obj)
return self._vis
if __name__ == "__main__":
print("wradlib: Calling module <xarray> as main...")