MetaStalk.utils.parse._convert_to_degrees()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 1
dl 0
loc 11
ccs 5
cts 5
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
"""utils.parse.
2
---
3
Parse needed to make exifread dictionaries easier
4
"""
5
6
7 1
def gps_parse(tags: dict) -> dict:
8
    """Returns GPS degrees."""
9 1
    latitude = tags["GPS GPSLatitude"]
10 1
    latitude_ref = tags["GPS GPSLatitudeRef"]
11 1
    longitude = tags["GPS GPSLongitude"]
12 1
    longitude_ref = tags["GPS GPSLongitudeRef"]
13 1
    if latitude:
14 1
        lat_value = _convert_to_degrees(latitude)
15 1
        if latitude_ref.values != "N":
16
            lat_value = -lat_value
17 1
    if longitude:
18 1
        lon_value = _convert_to_degrees(longitude)
19 1
        if longitude_ref.values != "E":
20 1
            lon_value = -lon_value
21 1
    return {"latitude": lat_value, "longitude": lon_value}
22
23
24 1
def _convert_to_degrees(value) -> float:
25
    """Degrees converter function.
26
    Helper function to convert the GPS coordinates stored in the EXIF to degrees in float format
27
    :param value:
28
    :type value: exifread.utils.Ratio
29
    """
30 1
    d = float(value.values[0].num) / float(value.values[0].den)
31 1
    m = float(value.values[1].num) / float(value.values[1].den)
32 1
    s = float(value.values[2].num) / float(value.values[2].den)
33
34
    return d + (m / 60.0) + (s / 3600.0)
35