From d713e7047d59b0eb7f40ebae808ca2f756c2c5e7 Mon Sep 17 00:00:00 2001 From: Felix Kleinert <f.kleinert@fz-juelich.de> Date: Mon, 29 Mar 2021 15:14:14 +0200 Subject: [PATCH] get windsector names from winddir --- mlair/helpers/geofunctions.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/mlair/helpers/geofunctions.py b/mlair/helpers/geofunctions.py index 17923cd2..1546d2be 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. -- GitLab