Passed
Push — master ( 9b4d36...ed671d )
by Oleg
46s
created

geovectorslib.utils.wrap90deg()   A

Complexity

Conditions 1

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nop 1
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
"""A sample module."""
2
3
import log
4
import numpy as np
5
6
def wrap90deg(deg: 'np.ndarray') -> 'np.ndarray':
7
    """
8
    Make sure that degrees (e.g. lats) is within -90;90 range.
9
10
    Ref: https://www.movable-type.co.uk/scripts/latlong-vincenty.html
11
    """
12
    mask = (deg < -90) | (deg > 90)
13
    deg[mask] = np.abs((deg[mask] % 360 + 270) % 360 - 180) - 90
14
    return deg
15
16
17
def wrap180deg(deg: 'np.ndarray') -> 'np.ndarray':
18
    """
19
    Make sure that degrees (e.g. lon) is within +/-(0-180) range.
20
21
    Ref: https://www.movable-type.co.uk/scripts/latlong-vincenty.html
22
    """
23
    mask = (deg <= -180) | (deg >= 180)
24
    deg[mask] = (deg[mask] + 540) % 360 - 180
25
    return deg
26
27
28
def wrap360deg(deg: 'np.ndarray') -> 'np.ndarray':
29
    """
30
    Make sure that degrees (e.g. heading) is within 360 range.
31
32
    Ref: https://www.movable-type.co.uk/scripts/latlong-vincenty.html
33
    """
34
    mask = (deg < 0) | (deg > 360)
35
    deg[mask] = (deg[mask] % 360 + 360) % 360
36
    return deg
37