diff --git a/mlair/helpers/geofunctions.py b/mlair/helpers/geofunctions.py index 4bf1fcfc5d53fcd716c01d8fa1f311434f7dcf78..cf6313584f898304d1a646892accf7507ef75ed2 100644 --- a/mlair/helpers/geofunctions.py +++ b/mlair/helpers/geofunctions.py @@ -7,25 +7,27 @@ import numpy as np import xarray as xr from mlair.helpers.helpers import convert2xrda -from typing import Union +from typing import Union, Tuple xr_int_float = Union[xr.DataArray, xr.Dataset, np.ndarray, int, float] +tuple_of_2xr_int_float = Tuple[xr_int_float, xr_int_float] -def deg2rad_all_points(lat1, lon1, lat2, lon2): +def deg2rad_all_points(lat1: xr_int_float, lon1: xr_int_float, + lat2: xr_int_float, lon2: xr_int_float) -> Tuple[tuple_of_2xr_int_float, tuple_of_2xr_int_float]: """ Converts coordinates provided in lat1, lon1, lat2, and lon2 from deg to rad. In fact this method just calls dasks deg2rad method on all inputs and returns a tuple of tuples. - :param lat1: + :param lat1: Latitude(-s) of first location :type lat1: - :param lat2: - :type lat2: - :param lon1: + :param lon1: Longitude(-s) of first location :type lon1: - :param lon2: + :param lat2: Latitude(-s) of second location + :type lat2: + :param lon2: Longitude(-s) of second location :type lon2: - :return: + :return: Lats and lons in radians ((lat1, lon1), (lat2, lon2)) :rtype: """ lat1, lon1, lat2, lon2 = da.deg2rad(lat1), da.deg2rad(lon1), da.deg2rad(lat2), da.deg2rad(lon2) @@ -40,6 +42,7 @@ def haversine_dist(lat1: xr_int_float, lon1: xr_int_float, on the Earth (specified in decimal degrees or in radians) Reference: ToBeAdded + (First implementation provided by M. Langguth) :param lat1: Latitude(-s) of first location :param lon1: Longitude(-s) of first location diff --git a/mlair/helpers/helpers.py b/mlair/helpers/helpers.py index 7554e9e031bd656246c1da23df886935871be9fc..ee727ef59ff35334be0a52a4d78dbae814d6c205 100644 --- a/mlair/helpers/helpers.py +++ b/mlair/helpers/helpers.py @@ -7,6 +7,7 @@ import math import numpy as np import xarray as xr +import dask.array as da from typing import Dict, Callable, Union, List, Any @@ -146,7 +147,7 @@ def convert2xrda(arr: Union[xr.DataArray, xr.Dataset, np.ndarray, int, float], If a xarray.DataArray or xarray.Dataset is passed, returns that unchanged. :param arr: - :type arr: xr.DataArray, xr.Dataset,np.ndarray, int, float + :type arr: xr.DataArray, xr.Dataset, np.ndarray, int, float :param use_1d_default: :type use_1d_default: bool :param kwargs: Any additional kwargs which are accepted by xr.DataArray() @@ -158,6 +159,9 @@ def convert2xrda(arr: Union[xr.DataArray, xr.Dataset, np.ndarray, int, float], return arr else: if use_1d_default: + if isinstance(arr, da.core.Array): + raise TypeError(f"`use_1d_default=True' is used with `arr' of type da.array. For da.arrays please " + f"pass `use_1d_default=False' and specify keywords for xr.DataArray via kwargs.") dims = kwargs.pop('dims', 'points') coords = kwargs.pop('coords', None) try: