diff --git a/mlair/helpers/geofunctions.py b/mlair/helpers/geofunctions.py index 17923cd273f983a2c40f4833acaf395c7a4d8132..1546d2be2651c8d0c862da0a564454a2ecae0d9e 100644 --- a/mlair/helpers/geofunctions.py +++ b/mlair/helpers/geofunctions.py @@ -4,6 +4,7 @@ __date__ = '2021-02-16' import dask.array as da import numpy as np +import pandas as pd import xarray as xr from mlair.helpers.helpers import convert2xrda @@ -156,6 +157,16 @@ class WindSector: self.edges_per_sector = edges_per_sector self.wind_sectore_edges = wind_sector_edges + def wind_sector_edges_data(self, return_as="xr"): + data = pd.DataFrame.from_dict(self.wind_sectore_edges, orient="index", + columns=["left_edge", "right_edge"]) + if return_as == "pd": + return data + elif return_as == "xr": + return data.to_xarray() + else: + raise ValueError(f"`return_as' must be 'pd' or 'xr'. But is {return_as}") + @staticmethod def _is_value_in_sector(value, left_edge, right_edge) -> bool: @@ -173,6 +184,13 @@ class WindSector: left_edge, right_edge = self.wind_sectore_edges[sector] return self._is_value_in_sector(value, left_edge, right_edge) + def get_sect_of_value(self, value): + sec_collector = xr.ones_like(value) + for sect in self.wind_sectore_edges.keys(): + sec_collector = xr.where(self.is_in_sector(sect, value), sect, sec_collector) + + return sec_collector + class VectorRotate: RAD_PER_DEG = np.pi / 180.