geopic-tag-reader 1.3.3__py3-none-any.whl → 1.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
geopic_tag_reader/main.py CHANGED
@@ -25,6 +25,7 @@ def read(
25
25
  _ = i18n_init(lang)
26
26
  print(_("Latitude:"), metadata.lat)
27
27
  print(_("Longitude:"), metadata.lon)
28
+ print(_("GPS accuracy:"), str(metadata.gps_accuracy) + "m" if metadata.gps_accuracy is not None else _("not set"))
28
29
  print(_("Timestamp:"), metadata.ts)
29
30
  if metadata.ts_by_source is not None:
30
31
  print(" -", (metadata.ts_by_source.gps or _("not set")), _("(GPS)"))
@@ -34,6 +35,8 @@ def read(
34
35
  print(_("Make:"), metadata.make)
35
36
  print(_("Model:"), metadata.model)
36
37
  print(_("Focal length:"), metadata.focal_length)
38
+ print(_("Field of view:"), metadata.field_of_view)
39
+ print(_("Sensor width:"), metadata.sensor_width)
37
40
  print(_("Crop parameters:"), metadata.crop)
38
41
  print(_("Pitch:"), metadata.pitch)
39
42
  print(_("Roll:"), metadata.roll)
@@ -10,6 +10,7 @@ from geopic_tag_reader import camera
10
10
  import timezonefinder # type: ignore
11
11
  import pytz
12
12
  from geopic_tag_reader.i18n import init as i18n_init
13
+ import math
13
14
 
14
15
  # This is a fix for invalid MakerNotes leading to picture not read at all
15
16
  # https://github.com/LeoHsiao1/pyexiv2/issues/58
@@ -86,6 +87,9 @@ class GeoPicTags:
86
87
  roll (float): Picture roll angle, on a right/left axis (in degrees, left-arm down = -90°, flat = 0°, right-arm down = 90°)
87
88
  yaw (float): Picture yaw angle, on a vertical axis (in degrees, front = 0°, right = 90°, rear = 180°, left = 270°). This offsets the center image from GPS direction for a correct 360° sphere correction
88
89
  ts_by_source (TimeBySource): all read timestamps from image, for finer processing.
90
+ sensor_width (float): The camera sensor width, that can be used to compute field of view (combined with focal length)
91
+ field_of_view (int): How large picture is showing of horizon (in degrees)
92
+ gps_accuracy (float): How precise the GPS position is (in meters)
89
93
 
90
94
 
91
95
  Implementation note: this needs to be sync with the PartialGeoPicTags structure
@@ -107,6 +111,9 @@ class GeoPicTags:
107
111
  roll: Optional[float] = None
108
112
  yaw: Optional[float] = None
109
113
  ts_by_source: Optional[TimeBySource] = None
114
+ sensor_width: Optional[float] = None
115
+ field_of_view: Optional[int] = None
116
+ gps_accuracy: Optional[float] = None
110
117
 
111
118
 
112
119
  class InvalidExifException(Exception):
@@ -143,6 +150,9 @@ class PartialGeoPicTags:
143
150
  roll: Optional[float] = None
144
151
  yaw: Optional[float] = None
145
152
  ts_by_source: Optional[TimeBySource] = None
153
+ sensor_width: Optional[float] = None
154
+ field_of_view: Optional[int] = None
155
+ gps_accuracy: Optional[float] = None
146
156
 
147
157
 
148
158
  class PartialExifException(Exception):
@@ -320,14 +330,7 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
320
330
  if make is None and model is None:
321
331
  warnings.append(_("No make and model value found, no assumption on focal length or GPS precision can be made"))
322
332
 
323
- # Focal length
324
- focalLength = None
325
- if isExifTagUsable(data, "Exif.Image.FocalLength", Fraction):
326
- focalLength = float(Fraction(data["Exif.Image.FocalLength"]))
327
- elif isExifTagUsable(data, "Exif.Photo.FocalLength", Fraction):
328
- focalLength = float(Fraction(data["Exif.Photo.FocalLength"]))
329
- if focalLength is None:
330
- warnings.append(_("No focal length value was found, this prevents calculating field of view"))
333
+ cameraMetadata = camera.find_camera(make, model)
331
334
 
332
335
  # Cropped pano data
333
336
  crop = None
@@ -369,6 +372,27 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
369
372
  else:
370
373
  pic_type = "flat"
371
374
 
375
+ # Focal length
376
+ focalLength = None
377
+ if isExifTagUsable(data, "Exif.Image.FocalLength", Fraction):
378
+ focalLength = float(Fraction(data["Exif.Image.FocalLength"]))
379
+ elif isExifTagUsable(data, "Exif.Photo.FocalLength", Fraction):
380
+ focalLength = float(Fraction(data["Exif.Photo.FocalLength"]))
381
+ if focalLength is None and pic_type != "equirectangular":
382
+ warnings.append(_("No focal length value was found, this prevents calculating field of view"))
383
+
384
+ # Sensor width
385
+ sensorWidth = None
386
+ if cameraMetadata is not None:
387
+ sensorWidth = cameraMetadata.sensor_width
388
+
389
+ # Field of view
390
+ fieldOfView = None
391
+ if pic_type == "equirectangular":
392
+ fieldOfView = 360
393
+ elif sensorWidth is not None and focalLength is not None:
394
+ fieldOfView = round(math.degrees(2 * math.atan(sensorWidth / (2 * focalLength))))
395
+
372
396
  # Altitude
373
397
  altitude = None
374
398
  if isExifTagUsable(data, "Exif.GPSInfo.GPSAltitude", Fraction):
@@ -376,19 +400,48 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
376
400
  ref = -1 if data.get("Exif.GPSInfo.GPSAltitudeRef") == "1" else 1
377
401
  altitude = altitude_raw * ref
378
402
 
379
- # GPS accuracy (only for warning display)
380
- gpshpos = isExifTagUsable(data, "Exif.GPSInfo.GPSHPositioningError", float) or isExifTagUsable(
381
- data, "Xmp.exif.GPSHPositioningError", float
382
- )
383
- gpsdop = isExifTagUsable(data, "Exif.GPSInfo.GPSDOP", float) or isExifTagUsable(data, "Xmp.exif.GPSDOP", float)
384
- gpsdiff = isExifTagUsable(data, "Exif.GPSInfo.GPSDifferential", int) or isExifTagUsable(data, "Xmp.exif.GPSDifferential", int)
385
-
386
- if not gpshpos:
387
- if not gpsdop and not gpsdiff:
388
- warnings.append(_("No GPS accuracy value found, this prevents computing a quality score"))
389
- else:
390
- warnings.append(_("No GPS horizontal positioning error value found, GPS accuracy can only be estimated"))
391
-
403
+ # GPS accuracy
404
+ gpshpos = None
405
+ gpshposEstimated = False
406
+ if isExifTagUsable(data, "Exif.GPSInfo.GPSHPositioningError", float):
407
+ gpshpos = float(data["Exif.GPSInfo.GPSHPositioningError"])
408
+ elif isExifTagUsable(data, "Xmp.exif.GPSHPositioningError", float):
409
+ gpshpos = float(data["Xmp.exif.GPSHPositioningError"])
410
+
411
+ gpsdop = None
412
+ if isExifTagUsable(data, "Exif.GPSInfo.GPSDOP", float):
413
+ gpsdop = float(data["Exif.GPSInfo.GPSDOP"])
414
+ elif isExifTagUsable(data, "Xmp.exif.GPSDOP", float):
415
+ gpsdop = float(data["Xmp.exif.GPSDOP"])
416
+
417
+ gpsdiff = None
418
+ if isExifTagUsable(data, "Exif.GPSInfo.GPSDifferential", int):
419
+ gpsdiff = int(data["Exif.GPSInfo.GPSDifferential"])
420
+ elif isExifTagUsable(data, "Xmp.exif.GPSDifferential", int):
421
+ gpsdiff = int(data["Xmp.exif.GPSDifferential"])
422
+
423
+ if gpsdop is not None and gpsdop > 0:
424
+ gpshposEstimated = True
425
+ if gpsdiff == 1: # DOP with a DGPS -> consider GPS nominal error as 1 meter
426
+ gpshpos = gpsdop
427
+ else: # DOP without DGPS -> consider GPS nominal error as 3 meters in average
428
+ gpshpos = 3 * gpsdop
429
+ elif gpsdiff == 1: # DGPS only -> return 2 meters precision
430
+ gpshpos = 2
431
+ gpshposEstimated = True
432
+ elif cameraMetadata is not None and cameraMetadata.gps_accuracy is not None: # Estimate based on model
433
+ gpshpos = cameraMetadata.gps_accuracy
434
+ gpshposEstimated = True
435
+ elif make is not None and make.lower() in camera.GPS_ACCURACY_MAKE:
436
+ gpshpos = camera.GPS_ACCURACY_MAKE[make.lower()]
437
+ gpshposEstimated = True
438
+
439
+ if gpshpos is None:
440
+ warnings.append(_("No GPS accuracy value found, this prevents computing a quality score"))
441
+ elif gpshposEstimated:
442
+ warnings.append(_("No GPS horizontal positioning error value found, GPS accuracy can only be estimated"))
443
+
444
+ # Errors display
392
445
  errors = []
393
446
  missing_fields = set()
394
447
  if lat is None or lon is None or (lat == 0 and lon == 0):
@@ -430,6 +483,9 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
430
483
  roll=roll,
431
484
  yaw=yaw,
432
485
  ts_by_source=tsSources,
486
+ sensor_width=sensorWidth,
487
+ field_of_view=fieldOfView,
488
+ gps_accuracy=gpshpos,
433
489
  ),
434
490
  )
435
491
 
@@ -451,6 +507,9 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
451
507
  roll=roll,
452
508
  yaw=yaw,
453
509
  ts_by_source=tsSources,
510
+ sensor_width=sensorWidth,
511
+ field_of_view=fieldOfView,
512
+ gps_accuracy=gpshpos,
454
513
  )
455
514
 
456
515
 
@@ -0,0 +1,209 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: PACKAGE VERSION\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2024-11-24 15:36+0100\n"
11
+ "PO-Revision-Date: 2024-12-06 18:10+0000\n"
12
+ "Last-Translator: ERYpTION <eryption.ar9q2@slmail.me>\n"
13
+ "Language-Team: Danish <http://weblate.panoramax.xyz/projects/panoramax/"
14
+ "tag-reader/da/>\n"
15
+ "Language: da\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
20
+ "X-Generator: Weblate 5.4.3\n"
21
+
22
+ #: geopic_tag_reader/main.py:26
23
+ msgid "Latitude:"
24
+ msgstr "Breddegrad:"
25
+
26
+ #: geopic_tag_reader/main.py:27
27
+ msgid "Longitude:"
28
+ msgstr "Længdegrad:"
29
+
30
+ #: geopic_tag_reader/main.py:28
31
+ msgid "Timestamp:"
32
+ msgstr "Tidsstempel:"
33
+
34
+ #: geopic_tag_reader/main.py:30 geopic_tag_reader/main.py:31
35
+ msgid "not set"
36
+ msgstr "ikke indstillet"
37
+
38
+ #: geopic_tag_reader/main.py:30
39
+ msgid "(GPS)"
40
+ msgstr "(GPS)"
41
+
42
+ #: geopic_tag_reader/main.py:31
43
+ msgid "(Camera)"
44
+ msgstr "(Kamera)"
45
+
46
+ #: geopic_tag_reader/main.py:32
47
+ msgid "Heading:"
48
+ msgstr "Retning:"
49
+
50
+ #: geopic_tag_reader/main.py:33
51
+ msgid "Type:"
52
+ msgstr "Type:"
53
+
54
+ #: geopic_tag_reader/main.py:34
55
+ msgid "Make:"
56
+ msgstr "Fabrikat:"
57
+
58
+ #: geopic_tag_reader/main.py:35
59
+ msgid "Model:"
60
+ msgstr "Model:"
61
+
62
+ #: geopic_tag_reader/main.py:36
63
+ msgid "Focal length:"
64
+ msgstr "Brændvidde:"
65
+
66
+ #: geopic_tag_reader/main.py:37
67
+ msgid "Crop parameters:"
68
+ msgstr "Beskæringsparametre:"
69
+
70
+ #: geopic_tag_reader/main.py:38
71
+ msgid "Pitch:"
72
+ msgstr "Skråstilling:"
73
+
74
+ #: geopic_tag_reader/main.py:39
75
+ msgid "Roll:"
76
+ msgstr "Rul:"
77
+
78
+ #: geopic_tag_reader/main.py:40
79
+ msgid "Yaw:"
80
+ msgstr "Giring (rotation):"
81
+
82
+ #: geopic_tag_reader/main.py:43
83
+ msgid "Warnings raised by reader:"
84
+ msgstr "Advarsler fremsat af læser:"
85
+
86
+ #: geopic_tag_reader/reader.py:218
87
+ msgid "Read latitude is out of WGS84 bounds (should be in [-90, 90])"
88
+ msgstr ""
89
+ "Den læste breddegrad er uden for WGS84-grænserne (bør være inden for [-90, "
90
+ "90])"
91
+
92
+ #: geopic_tag_reader/reader.py:220
93
+ msgid "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
94
+ msgstr ""
95
+ "Den læste længdegrad er uden for WGS84-grænserne (bør være i [-180, 180])"
96
+
97
+ #: geopic_tag_reader/reader.py:248
98
+ #, python-brace-format
99
+ msgid "Skipping Mapillary date/time as it was not recognized: {v}"
100
+ msgstr "Mapillary-dato/tid springes over, da den ikke blev genkendt: {v}"
101
+
102
+ #: geopic_tag_reader/reader.py:278
103
+ msgid "No heading value was found, this reduces usability of picture"
104
+ msgstr ""
105
+ "Der blev ikke fundet nogen retningsværdi, hvilket reducerer billedets "
106
+ "anvendelighed"
107
+
108
+ #: geopic_tag_reader/reader.py:321
109
+ msgid ""
110
+ "No make and model value found, no assumption on focal length or GPS "
111
+ "precision can be made"
112
+ msgstr ""
113
+ "Ingen fabrikat- og modelværdi fundet, ingen antagelse om brændvidde eller "
114
+ "GPS-præcision kan foretages"
115
+
116
+ #: geopic_tag_reader/reader.py:330
117
+ msgid ""
118
+ "No focal length value was found, this prevents calculating field of view"
119
+ msgstr ""
120
+ "Der blev ikke fundet nogen brændviddeværdi, hvilket forhindrer beregning af "
121
+ "synsfelt"
122
+
123
+ #: geopic_tag_reader/reader.py:388
124
+ msgid "No GPS accuracy value found, this prevents computing a quality score"
125
+ msgstr ""
126
+ "Ingen GPS-nøjagtighedsværdi fundet, dette forhindrer beregning af en "
127
+ "kvalitetsscore"
128
+
129
+ #: geopic_tag_reader/reader.py:390
130
+ msgid ""
131
+ "No GPS horizontal positioning error value found, GPS accuracy can only be "
132
+ "estimated"
133
+ msgstr ""
134
+ "Ingen værdi for horisontal GPS-positioneringsfejl fundet, GPS-nøjagtighed "
135
+ "kan kun estimeres"
136
+
137
+ #: geopic_tag_reader/reader.py:396
138
+ msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
139
+ msgstr "Ingen GPS-koordinater eller defekte koordinater i billedets EXIF-tags"
140
+
141
+ #: geopic_tag_reader/reader.py:402
142
+ msgid "No valid date in picture EXIF tags"
143
+ msgstr "Ingen gyldig dato i billedets EXIF-tags"
144
+
145
+ #: geopic_tag_reader/reader.py:407
146
+ msgid "The picture is missing mandatory metadata:"
147
+ msgstr "Billedet mangler obligatoriske metadata:"
148
+
149
+ #: geopic_tag_reader/reader.py:498 geopic_tag_reader/reader.py:527
150
+ msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
151
+ msgstr "GPSLatitudeRef ikke fundet, antager at GPSLatitudeRef er nord"
152
+
153
+ #: geopic_tag_reader/reader.py:506
154
+ msgid "Broken GPS coordinates in picture EXIF tags"
155
+ msgstr "Defekte GPS-koordinater i billedets EXIF-tags"
156
+
157
+ #: geopic_tag_reader/reader.py:509 geopic_tag_reader/reader.py:533
158
+ msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
159
+ msgstr "GPSLongitudeRef ikke fundet, det antages, at GPSLongitudeRef er øst"
160
+
161
+ #: geopic_tag_reader/reader.py:594
162
+ msgid "Precise timezone information not found, fallback to UTC"
163
+ msgstr "Præcise tidszoneoplysninger ikke fundet, går tilbage til UTC"
164
+
165
+ #: geopic_tag_reader/reader.py:599
166
+ msgid ""
167
+ "Precise timezone information not found (and no GPS coordinates to help), "
168
+ "fallback to UTC"
169
+ msgstr ""
170
+ "Præcise tidszoneoplysninger ikke fundet (og ingen GPS-koordinater til at "
171
+ "hjælpe), går tilbage til UTC"
172
+
173
+ #: geopic_tag_reader/reader.py:603
174
+ #, python-brace-format
175
+ msgid ""
176
+ "Skipping original date/time (from {datefield}) as it was not recognized: {v}"
177
+ msgstr ""
178
+ "Springer original dato/tid (fra {datefield}) over, da den ikke blev genkendt:"
179
+ " {v}"
180
+
181
+ #: geopic_tag_reader/reader.py:635
182
+ #, python-brace-format
183
+ msgid ""
184
+ "GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
185
+ "group)"
186
+ msgstr ""
187
+ "GPSTimeStamp og GPSDateTime indeholder ikke understøttet tidsformat (i "
188
+ "{group}-gruppe)"
189
+
190
+ #: geopic_tag_reader/reader.py:666
191
+ #, python-brace-format
192
+ msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
193
+ msgstr ""
194
+ "GPS-dato/tid ({group} gruppe) springes over, da den ikke blev genkendt: {v}"
195
+
196
+ #: geopic_tag_reader/reader.py:692
197
+ #, python-brace-format
198
+ msgid ""
199
+ "Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "
200
+ "not matching value from EXIF field ({microseconds}). Max value will be kept."
201
+ msgstr ""
202
+ "Mikrosekunder læst fra decimalsekunders værdi ({microsecondsFromSeconds}) "
203
+ "svarer ikke til værdien fra EXIF-feltet ({microseconds}). Den maksimale "
204
+ "værdi bevares."
205
+
206
+ #: geopic_tag_reader/writer.py:132
207
+ #, python-brace-format
208
+ msgid "Unsupported key in additional tags ({k})"
209
+ msgstr "Ikke-understøttet nøgle i ekstra tags ({k})"
@@ -1,14 +1,14 @@
1
1
  # English translations for PACKAGE package.
2
- # Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
2
+ # Copyright (C) 2025 THE PACKAGE'S COPYRIGHT HOLDER
3
3
  # This file is distributed under the same license as the PACKAGE package.
4
- # Automatically generated, 2024.
4
+ # Automatically generated, 2025.
5
5
  #
6
6
  msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: PACKAGE VERSION\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2024-11-24 15:36+0100\n"
11
- "PO-Revision-Date: 2024-11-24 15:36+0100\n"
10
+ "POT-Creation-Date: 2025-01-06 15:31+0100\n"
11
+ "PO-Revision-Date: 2025-01-06 15:31+0100\n"
12
12
  "Last-Translator: Automatically generated\n"
13
13
  "Language-Team: none\n"
14
14
  "Language: en\n"
@@ -26,79 +26,92 @@ msgid "Longitude:"
26
26
  msgstr "Longitude:"
27
27
 
28
28
  #: geopic_tag_reader/main.py:28
29
- msgid "Timestamp:"
30
- msgstr "Timestamp:"
29
+ msgid "GPS accuracy:"
30
+ msgstr "GPS accuracy:"
31
31
 
32
- #: geopic_tag_reader/main.py:30 geopic_tag_reader/main.py:31
32
+ #: geopic_tag_reader/main.py:28 geopic_tag_reader/main.py:31
33
+ #: geopic_tag_reader/main.py:32
33
34
  msgid "not set"
34
35
  msgstr "not set"
35
36
 
36
- #: geopic_tag_reader/main.py:30
37
+ #: geopic_tag_reader/main.py:29
38
+ msgid "Timestamp:"
39
+ msgstr "Timestamp:"
40
+
41
+ #: geopic_tag_reader/main.py:31
37
42
  msgid "(GPS)"
38
43
  msgstr "(GPS)"
39
44
 
40
- #: geopic_tag_reader/main.py:31
45
+ #: geopic_tag_reader/main.py:32
41
46
  msgid "(Camera)"
42
47
  msgstr "(Camera)"
43
48
 
44
- #: geopic_tag_reader/main.py:32
49
+ #: geopic_tag_reader/main.py:33
45
50
  msgid "Heading:"
46
51
  msgstr "Heading:"
47
52
 
48
- #: geopic_tag_reader/main.py:33
53
+ #: geopic_tag_reader/main.py:34
49
54
  msgid "Type:"
50
55
  msgstr "Type:"
51
56
 
52
- #: geopic_tag_reader/main.py:34
57
+ #: geopic_tag_reader/main.py:35
53
58
  msgid "Make:"
54
59
  msgstr "Make:"
55
60
 
56
- #: geopic_tag_reader/main.py:35
61
+ #: geopic_tag_reader/main.py:36
57
62
  msgid "Model:"
58
63
  msgstr "Model:"
59
64
 
60
- #: geopic_tag_reader/main.py:36
65
+ #: geopic_tag_reader/main.py:37
61
66
  msgid "Focal length:"
62
67
  msgstr "Focal length:"
63
68
 
64
- #: geopic_tag_reader/main.py:37
69
+ #: geopic_tag_reader/main.py:38
70
+ msgid "Field of view:"
71
+ msgstr "Field of view:"
72
+
73
+ #: geopic_tag_reader/main.py:39
74
+ msgid "Sensor width:"
75
+ msgstr "Sensor width:"
76
+
77
+ #: geopic_tag_reader/main.py:40
65
78
  msgid "Crop parameters:"
66
79
  msgstr "Crop parameters:"
67
80
 
68
- #: geopic_tag_reader/main.py:38
81
+ #: geopic_tag_reader/main.py:41
69
82
  msgid "Pitch:"
70
83
  msgstr "Pitch:"
71
84
 
72
- #: geopic_tag_reader/main.py:39
85
+ #: geopic_tag_reader/main.py:42
73
86
  msgid "Roll:"
74
87
  msgstr "Roll:"
75
88
 
76
- #: geopic_tag_reader/main.py:40
89
+ #: geopic_tag_reader/main.py:43
77
90
  msgid "Yaw:"
78
91
  msgstr "Yaw:"
79
92
 
80
- #: geopic_tag_reader/main.py:43
93
+ #: geopic_tag_reader/main.py:46
81
94
  msgid "Warnings raised by reader:"
82
95
  msgstr "Warnings raised by reader:"
83
96
 
84
- #: geopic_tag_reader/reader.py:218
97
+ #: geopic_tag_reader/reader.py:228
85
98
  msgid "Read latitude is out of WGS84 bounds (should be in [-90, 90])"
86
99
  msgstr "Read latitude is out of WGS84 bounds (should be in [-90, 90])"
87
100
 
88
- #: geopic_tag_reader/reader.py:220
101
+ #: geopic_tag_reader/reader.py:230
89
102
  msgid "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
90
103
  msgstr "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
91
104
 
92
- #: geopic_tag_reader/reader.py:248
105
+ #: geopic_tag_reader/reader.py:258
93
106
  #, python-brace-format
94
107
  msgid "Skipping Mapillary date/time as it was not recognized: {v}"
95
108
  msgstr "Skipping Mapillary date/time as it was not recognized: {v}"
96
109
 
97
- #: geopic_tag_reader/reader.py:278
110
+ #: geopic_tag_reader/reader.py:288
98
111
  msgid "No heading value was found, this reduces usability of picture"
99
112
  msgstr "No heading value was found, this reduces usability of picture"
100
113
 
101
- #: geopic_tag_reader/reader.py:321
114
+ #: geopic_tag_reader/reader.py:331
102
115
  msgid ""
103
116
  "No make and model value found, no assumption on focal length or GPS "
104
117
  "precision can be made"
@@ -106,17 +119,17 @@ msgstr ""
106
119
  "No make and model value found, no assumption on focal length or GPS "
107
120
  "precision can be made"
108
121
 
109
- #: geopic_tag_reader/reader.py:330
122
+ #: geopic_tag_reader/reader.py:382
110
123
  msgid ""
111
124
  "No focal length value was found, this prevents calculating field of view"
112
125
  msgstr ""
113
126
  "No focal length value was found, this prevents calculating field of view"
114
127
 
115
- #: geopic_tag_reader/reader.py:388
128
+ #: geopic_tag_reader/reader.py:440
116
129
  msgid "No GPS accuracy value found, this prevents computing a quality score"
117
130
  msgstr "No GPS accuracy value found, this prevents computing a quality score"
118
131
 
119
- #: geopic_tag_reader/reader.py:390
132
+ #: geopic_tag_reader/reader.py:442
120
133
  msgid ""
121
134
  "No GPS horizontal positioning error value found, GPS accuracy can only be "
122
135
  "estimated"
@@ -124,35 +137,35 @@ msgstr ""
124
137
  "No GPS horizontal positioning error value found, GPS accuracy can only be "
125
138
  "estimated"
126
139
 
127
- #: geopic_tag_reader/reader.py:396
140
+ #: geopic_tag_reader/reader.py:449
128
141
  msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
129
142
  msgstr "No GPS coordinates or broken coordinates in picture EXIF tags"
130
143
 
131
- #: geopic_tag_reader/reader.py:402
144
+ #: geopic_tag_reader/reader.py:455
132
145
  msgid "No valid date in picture EXIF tags"
133
146
  msgstr "No valid date in picture EXIF tags"
134
147
 
135
- #: geopic_tag_reader/reader.py:407
148
+ #: geopic_tag_reader/reader.py:460
136
149
  msgid "The picture is missing mandatory metadata:"
137
150
  msgstr "The picture is missing mandatory metadata:"
138
151
 
139
- #: geopic_tag_reader/reader.py:498 geopic_tag_reader/reader.py:527
152
+ #: geopic_tag_reader/reader.py:557 geopic_tag_reader/reader.py:586
140
153
  msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
141
154
  msgstr "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
142
155
 
143
- #: geopic_tag_reader/reader.py:506
156
+ #: geopic_tag_reader/reader.py:565
144
157
  msgid "Broken GPS coordinates in picture EXIF tags"
145
158
  msgstr "Broken GPS coordinates in picture EXIF tags"
146
159
 
147
- #: geopic_tag_reader/reader.py:509 geopic_tag_reader/reader.py:533
160
+ #: geopic_tag_reader/reader.py:568 geopic_tag_reader/reader.py:592
148
161
  msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
149
162
  msgstr "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
150
163
 
151
- #: geopic_tag_reader/reader.py:594
164
+ #: geopic_tag_reader/reader.py:653
152
165
  msgid "Precise timezone information not found, fallback to UTC"
153
166
  msgstr "Precise timezone information not found, fallback to UTC"
154
167
 
155
- #: geopic_tag_reader/reader.py:599
168
+ #: geopic_tag_reader/reader.py:658
156
169
  msgid ""
157
170
  "Precise timezone information not found (and no GPS coordinates to help), "
158
171
  "fallback to UTC"
@@ -160,14 +173,14 @@ msgstr ""
160
173
  "Precise timezone information not found (and no GPS coordinates to help), "
161
174
  "fallback to UTC"
162
175
 
163
- #: geopic_tag_reader/reader.py:603
176
+ #: geopic_tag_reader/reader.py:662
164
177
  #, python-brace-format
165
178
  msgid ""
166
179
  "Skipping original date/time (from {datefield}) as it was not recognized: {v}"
167
180
  msgstr ""
168
181
  "Skipping original date/time (from {datefield}) as it was not recognized: {v}"
169
182
 
170
- #: geopic_tag_reader/reader.py:635
183
+ #: geopic_tag_reader/reader.py:694
171
184
  #, python-brace-format
172
185
  msgid ""
173
186
  "GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
@@ -176,12 +189,12 @@ msgstr ""
176
189
  "GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
177
190
  "group)"
178
191
 
179
- #: geopic_tag_reader/reader.py:666
192
+ #: geopic_tag_reader/reader.py:725
180
193
  #, python-brace-format
181
194
  msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
182
195
  msgstr "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
183
196
 
184
- #: geopic_tag_reader/reader.py:692
197
+ #: geopic_tag_reader/reader.py:751
185
198
  #, python-brace-format
186
199
  msgid ""
187
200
  "Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "