Total Complexity | 6 |
Total Lines | 34 |
Duplicated Lines | 0 % |
Coverage | 89.47% |
Changes | 0 |
1 | """utils.parse |
||
2 | --- |
||
3 | Parse needed to make exifread dictionaries easier""" |
||
4 | |||
5 | |||
6 | 1 | def gps_parse(tags: dict): |
|
7 | """Returns GPS degrees""" |
||
8 | 1 | latitude = tags["GPS GPSLatitude"] |
|
9 | 1 | latitude_ref = tags["GPS GPSLatitudeRef"] |
|
10 | 1 | longitude = tags["GPS GPSLongitude"] |
|
11 | 1 | longitude_ref = tags["GPS GPSLongitudeRef"] |
|
12 | 1 | if latitude: |
|
13 | 1 | lat_value = _convert_to_degrees(latitude) |
|
14 | 1 | if latitude_ref.values != 'N': |
|
15 | lat_value = -lat_value |
||
16 | 1 | if longitude: |
|
17 | 1 | lon_value = _convert_to_degrees(longitude) |
|
18 | 1 | if longitude_ref.values != 'E': |
|
19 | lon_value = -lon_value |
||
20 | 1 | return {'latitude': lat_value, 'longitude': lon_value} |
|
21 | |||
22 | |||
23 | 1 | def _convert_to_degrees(value) -> float: |
|
24 | """ |
||
25 | Helper function to convert the GPS coordinates stored in the EXIF to degrees in float format |
||
26 | :param value: |
||
27 | :type value: exifread.utils.Ratio |
||
28 | """ |
||
29 | 1 | d = float(value.values[0].num) / float(value.values[0].den) |
|
30 | 1 | m = float(value.values[1].num) / float(value.values[1].den) |
|
31 | 1 | s = float(value.values[2].num) / float(value.values[2].den) |
|
32 | |||
33 | return d + (m / 60.0) + (s / 3600.0) |
||
34 |