geopic-tag-reader 1.3.2__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.
Files changed (30) hide show
  1. geopic_tag_reader/__init__.py +1 -1
  2. geopic_tag_reader/camera.py +118 -30
  3. geopic_tag_reader/cameras.csv +3775 -0
  4. geopic_tag_reader/main.py +3 -0
  5. geopic_tag_reader/reader.py +89 -8
  6. geopic_tag_reader/translations/da/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  7. geopic_tag_reader/translations/da/LC_MESSAGES/geopic_tag_reader.po +209 -0
  8. geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  9. geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.po +44 -1
  10. geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  11. geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.po +77 -34
  12. geopic_tag_reader/translations/eo/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  13. geopic_tag_reader/translations/eo/LC_MESSAGES/geopic_tag_reader.po +207 -0
  14. geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  15. geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.po +152 -119
  16. geopic_tag_reader/translations/geopic_tag_reader.pot +68 -30
  17. geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  18. geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.po +4 -4
  19. geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  20. geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.po +212 -0
  21. geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  22. geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.po +213 -0
  23. geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  24. geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.po +203 -0
  25. {geopic_tag_reader-1.3.2.dist-info → geopic_tag_reader-1.4.0.dist-info}/METADATA +2 -2
  26. geopic_tag_reader-1.4.0.dist-info/RECORD +40 -0
  27. {geopic_tag_reader-1.3.2.dist-info → geopic_tag_reader-1.4.0.dist-info}/WHEEL +1 -1
  28. geopic_tag_reader-1.3.2.dist-info/RECORD +0 -29
  29. {geopic_tag_reader-1.3.2.dist-info → geopic_tag_reader-1.4.0.dist-info}/LICENSE +0 -0
  30. {geopic_tag_reader-1.3.2.dist-info → geopic_tag_reader-1.4.0.dist-info}/entry_points.txt +0 -0
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):
@@ -274,6 +284,9 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
274
284
  elif "MAPCompassHeading" in data and isExifTagUsable(data["MAPCompassHeading"], "TrueHeading", float):
275
285
  heading = int(round(float(data["MAPCompassHeading"]["TrueHeading"])))
276
286
 
287
+ if heading is None:
288
+ warnings.append(_("No heading value was found, this reduces usability of picture"))
289
+
277
290
  # Yaw / Pitch / roll
278
291
  yaw = None
279
292
  pitch = None
@@ -314,12 +327,10 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
314
327
  if make is not None and model is not None and model.startswith(make) and len(model) > len(make):
315
328
  model = model.replace(make, "").strip()
316
329
 
317
- # Focal length
318
- focalLength = None
319
- if isExifTagUsable(data, "Exif.Image.FocalLength", Fraction):
320
- focalLength = float(Fraction(data["Exif.Image.FocalLength"]))
321
- elif isExifTagUsable(data, "Exif.Photo.FocalLength", Fraction):
322
- focalLength = float(Fraction(data["Exif.Photo.FocalLength"]))
330
+ if make is None and model is None:
331
+ warnings.append(_("No make and model value found, no assumption on focal length or GPS precision can be made"))
332
+
333
+ cameraMetadata = camera.find_camera(make, model)
323
334
 
324
335
  # Cropped pano data
325
336
  crop = None
@@ -361,6 +372,27 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
361
372
  else:
362
373
  pic_type = "flat"
363
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
+
364
396
  # Altitude
365
397
  altitude = None
366
398
  if isExifTagUsable(data, "Exif.GPSInfo.GPSAltitude", Fraction):
@@ -368,9 +400,52 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
368
400
  ref = -1 if data.get("Exif.GPSInfo.GPSAltitudeRef") == "1" else 1
369
401
  altitude = altitude_raw * ref
370
402
 
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
371
445
  errors = []
372
446
  missing_fields = set()
373
- if not lat or not lon:
447
+ if lat is None or lon is None or (lat == 0 and lon == 0):
448
+ # Note: we consider that null island is not a valid position
374
449
  errors.append(_("No GPS coordinates or broken coordinates in picture EXIF tags"))
375
450
  if not lat:
376
451
  missing_fields.add("lat")
@@ -408,10 +483,13 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
408
483
  roll=roll,
409
484
  yaw=yaw,
410
485
  ts_by_source=tsSources,
486
+ sensor_width=sensorWidth,
487
+ field_of_view=fieldOfView,
488
+ gps_accuracy=gpshpos,
411
489
  ),
412
490
  )
413
491
 
414
- assert lon and lat and d # at this point all those fields cannot be null
492
+ assert lon is not None and lat is not None and d is not None # at this point all those fields cannot be null
415
493
  return GeoPicTags(
416
494
  lat,
417
495
  lon,
@@ -429,6 +507,9 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
429
507
  roll=roll,
430
508
  yaw=yaw,
431
509
  ts_by_source=tsSources,
510
+ sensor_width=sensorWidth,
511
+ field_of_view=fieldOfView,
512
+ gps_accuracy=gpshpos,
432
513
  )
433
514
 
434
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})"
@@ -8,7 +8,7 @@ msgstr ""
8
8
  "Project-Id-Version: PACKAGE VERSION\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
10
  "POT-Creation-Date: 2024-07-10 13:05+0200\n"
11
- "PO-Revision-Date: 2024-08-07 13:42+0000\n"
11
+ "PO-Revision-Date: 2024-11-23 22:10+0000\n"
12
12
  "Last-Translator: Bastian Greshake Tzovaras <bastian@gedankenstuecke.de>\n"
13
13
  "Language-Team: German <http://weblate.panoramax.xyz/projects/panoramax/"
14
14
  "tag-reader/de/>\n"
@@ -167,3 +167,46 @@ msgstr "Nicht unterstützter Schlüssel in den zusätzlichen Attributen ({k})"
167
167
  #: geopic_tag_reader/main.py:37
168
168
  msgid "Yaw:"
169
169
  msgstr "Gierwinkel:"
170
+
171
+ #: geopic_tag_reader/main.py:30
172
+ msgid "(GPS)"
173
+ msgstr "(GPS)"
174
+
175
+ #: geopic_tag_reader/main.py:31
176
+ msgid "(Camera)"
177
+ msgstr "(Kamera)"
178
+
179
+ #: geopic_tag_reader/main.py:30 geopic_tag_reader/main.py:31
180
+ msgid "not set"
181
+ msgstr "nicht gesetzt"
182
+
183
+ #: geopic_tag_reader/reader.py:330
184
+ msgid ""
185
+ "No focal length value was found, this prevents calculating field of view"
186
+ msgstr "Keine Brennweite gefunden, dies verhindert den Blickwinkel zu berechnen"
187
+
188
+ #: geopic_tag_reader/reader.py:388
189
+ msgid ""
190
+ "No GPS horizontal positioning error value found, GPS accuracy can only be "
191
+ "estimated"
192
+ msgstr ""
193
+ "Kein horizontaler GPS-Positionierungsfehlerwert gefunden, GPS-Genauigkeit "
194
+ "kann nur geschätzt werden"
195
+
196
+ #: geopic_tag_reader/reader.py:278
197
+ msgid "No heading value was found, this reduces usability of picture"
198
+ msgstr "Kein Kompasskurs gefunden, dies reduziert die Nutzbarkeit des Fotos"
199
+
200
+ #: geopic_tag_reader/reader.py:386
201
+ msgid "No GPS accuracy value found, this prevents computing a quality score"
202
+ msgstr ""
203
+ "Keine GPS-Genauigkeit gefunden, dies verhindert das Berechnen eines "
204
+ "Qualitätswerts"
205
+
206
+ #: geopic_tag_reader/reader.py:321
207
+ msgid ""
208
+ "No make and model value found, no assumption on focal length or GPS "
209
+ "precision can be made"
210
+ msgstr ""
211
+ "Kein Hersteller und Modell gefunden, keine Annahmen zu Brennweite oder GPS-"
212
+ "Genauigkeit können angestellt werden"
@@ -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-10-22 15:05+0200\n"
11
- "PO-Revision-Date: 2024-10-22 15:05+0200\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,103 +26,146 @@ 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:374
110
+ #: geopic_tag_reader/reader.py:288
111
+ msgid "No heading value was found, this reduces usability of picture"
112
+ msgstr "No heading value was found, this reduces usability of picture"
113
+
114
+ #: geopic_tag_reader/reader.py:331
115
+ msgid ""
116
+ "No make and model value found, no assumption on focal length or GPS "
117
+ "precision can be made"
118
+ msgstr ""
119
+ "No make and model value found, no assumption on focal length or GPS "
120
+ "precision can be made"
121
+
122
+ #: geopic_tag_reader/reader.py:382
123
+ msgid ""
124
+ "No focal length value was found, this prevents calculating field of view"
125
+ msgstr ""
126
+ "No focal length value was found, this prevents calculating field of view"
127
+
128
+ #: geopic_tag_reader/reader.py:440
129
+ msgid "No GPS accuracy value found, this prevents computing a quality score"
130
+ msgstr "No GPS accuracy value found, this prevents computing a quality score"
131
+
132
+ #: geopic_tag_reader/reader.py:442
133
+ msgid ""
134
+ "No GPS horizontal positioning error value found, GPS accuracy can only be "
135
+ "estimated"
136
+ msgstr ""
137
+ "No GPS horizontal positioning error value found, GPS accuracy can only be "
138
+ "estimated"
139
+
140
+ #: geopic_tag_reader/reader.py:449
98
141
  msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
99
142
  msgstr "No GPS coordinates or broken coordinates in picture EXIF tags"
100
143
 
101
- #: geopic_tag_reader/reader.py:380
144
+ #: geopic_tag_reader/reader.py:455
102
145
  msgid "No valid date in picture EXIF tags"
103
146
  msgstr "No valid date in picture EXIF tags"
104
147
 
105
- #: geopic_tag_reader/reader.py:385
148
+ #: geopic_tag_reader/reader.py:460
106
149
  msgid "The picture is missing mandatory metadata:"
107
150
  msgstr "The picture is missing mandatory metadata:"
108
151
 
109
- #: geopic_tag_reader/reader.py:476 geopic_tag_reader/reader.py:505
152
+ #: geopic_tag_reader/reader.py:557 geopic_tag_reader/reader.py:586
110
153
  msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
111
154
  msgstr "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
112
155
 
113
- #: geopic_tag_reader/reader.py:484
156
+ #: geopic_tag_reader/reader.py:565
114
157
  msgid "Broken GPS coordinates in picture EXIF tags"
115
158
  msgstr "Broken GPS coordinates in picture EXIF tags"
116
159
 
117
- #: geopic_tag_reader/reader.py:487 geopic_tag_reader/reader.py:511
160
+ #: geopic_tag_reader/reader.py:568 geopic_tag_reader/reader.py:592
118
161
  msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
119
162
  msgstr "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
120
163
 
121
- #: geopic_tag_reader/reader.py:572
164
+ #: geopic_tag_reader/reader.py:653
122
165
  msgid "Precise timezone information not found, fallback to UTC"
123
166
  msgstr "Precise timezone information not found, fallback to UTC"
124
167
 
125
- #: geopic_tag_reader/reader.py:577
168
+ #: geopic_tag_reader/reader.py:658
126
169
  msgid ""
127
170
  "Precise timezone information not found (and no GPS coordinates to help), "
128
171
  "fallback to UTC"
@@ -130,14 +173,14 @@ msgstr ""
130
173
  "Precise timezone information not found (and no GPS coordinates to help), "
131
174
  "fallback to UTC"
132
175
 
133
- #: geopic_tag_reader/reader.py:581
176
+ #: geopic_tag_reader/reader.py:662
134
177
  #, python-brace-format
135
178
  msgid ""
136
179
  "Skipping original date/time (from {datefield}) as it was not recognized: {v}"
137
180
  msgstr ""
138
181
  "Skipping original date/time (from {datefield}) as it was not recognized: {v}"
139
182
 
140
- #: geopic_tag_reader/reader.py:613
183
+ #: geopic_tag_reader/reader.py:694
141
184
  #, python-brace-format
142
185
  msgid ""
143
186
  "GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
@@ -146,12 +189,12 @@ msgstr ""
146
189
  "GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
147
190
  "group)"
148
191
 
149
- #: geopic_tag_reader/reader.py:644
192
+ #: geopic_tag_reader/reader.py:725
150
193
  #, python-brace-format
151
194
  msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
152
195
  msgstr "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
153
196
 
154
- #: geopic_tag_reader/reader.py:670
197
+ #: geopic_tag_reader/reader.py:751
155
198
  #, python-brace-format
156
199
  msgid ""
157
200
  "Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "