geopic-tag-reader 1.3.1__tar.gz → 1.3.3__tar.gz

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 (53) hide show
  1. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/CHANGELOG.md +16 -1
  2. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/PKG-INFO +10 -10
  3. geopic_tag_reader-1.3.3/docs/images/quality_score.png +0 -0
  4. geopic_tag_reader-1.3.3/docs/images/quality_score_viewer.png +0 -0
  5. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/index.md +1 -1
  6. geopic_tag_reader-1.3.3/docs/quality_score.md +84 -0
  7. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/__init__.py +1 -1
  8. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/reader.py +24 -2
  9. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  10. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.po +44 -1
  11. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  12. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.po +44 -14
  13. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  14. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.po +152 -119
  15. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/geopic_tag_reader.pot +38 -13
  16. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  17. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.po +180 -0
  18. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  19. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.po +183 -0
  20. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  21. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.po +213 -0
  22. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  23. geopic_tag_reader-1.3.3/geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.po +203 -0
  24. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/mkdocs.yml +1 -0
  25. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/pyproject.toml +8 -8
  26. geopic_tag_reader-1.3.1/geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  27. geopic_tag_reader-1.3.1/geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  28. geopic_tag_reader-1.3.1/geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  29. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/.gitignore +0 -0
  30. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/.gitlab-ci.yml +0 -0
  31. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/.pre-commit-config.yaml +0 -0
  32. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/CODE_OF_CONDUCT.md +0 -0
  33. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/LICENSE +0 -0
  34. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/Makefile +0 -0
  35. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/README.md +0 -0
  36. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/develop.md +0 -0
  37. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/install.md +0 -0
  38. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/tech/api_reference.md +0 -0
  39. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/tech/cli.md +0 -0
  40. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/camera.py +0 -0
  41. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/i18n.py +0 -0
  42. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/main.py +0 -0
  43. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/model.py +0 -0
  44. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/py.typed +0 -0
  45. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/sequence.py +0 -0
  46. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/es/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  47. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/es/LC_MESSAGES/geopic_tag_reader.po +0 -0
  48. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/fi/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  49. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/fi/LC_MESSAGES/geopic_tag_reader.po +0 -0
  50. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/ko/LC_MESSAGES/geopic_tag_reader.mo +0 -0
  51. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/ko/LC_MESSAGES/geopic_tag_reader.po +0 -0
  52. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/writer.py +0 -0
  53. {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/pytest.ini +0 -0
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.3.3] - 2024-11-24
11
+
12
+ ### Added
13
+
14
+ - Warnings are shown if any useful metadata is missing for computing a quality score (make, model, GPS accuracy...).
15
+ - New languages : 🇵🇱, 🇳🇱, 🇭🇺, 🇪🇸, 🇩🇪 (thanks to all translators !)
16
+
17
+ ## [1.3.2] - 2024-10-22
18
+
19
+ ### Changed
20
+
21
+ - Update some dependencies and especially pyexiv2 that is now compatible with python 3.13
22
+
10
23
  ## [1.3.1] - 2024-10-09
11
24
 
12
25
  ### Changed
@@ -231,7 +244,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
231
244
 
232
245
  - EXIF tag reading methods extracted from [Panoramax/GeoVisio API](https://gitlab.com/panoramax/server/api)
233
246
 
234
- [Unreleased]: https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/compare/1.3.1...main
247
+ [Unreleased]: https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/compare/1.3.3...main
248
+ [1.3.3]: https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/compare/1.3.2...1.3.3
249
+ [1.3.2]: https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/compare/1.3.1...1.3.2
235
250
  [1.3.1]: https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/compare/1.3.0...1.3.1
236
251
  [1.3.0]: https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/compare/1.2.0...1.3.0
237
252
  [1.2.0]: https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/compare/1.1.5...1.2.0
@@ -1,29 +1,29 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: geopic-tag-reader
3
- Version: 1.3.1
3
+ Version: 1.3.3
4
4
  Summary: GeoPicTagReader
5
5
  Author-email: Adrien PAVIE <panieravide@riseup.net>
6
6
  Requires-Python: >=3.8
7
7
  Description-Content-Type: text/markdown
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  Requires-Dist: typer ~= 0.12
10
- Requires-Dist: xmltodict ~= 0.13
11
- Requires-Dist: pyexiv2 == 2.15.0
12
- Requires-Dist: timezonefinder == 6.2.0
13
- Requires-Dist: pytz ~= 2023.3
10
+ Requires-Dist: xmltodict ~= 0.14
11
+ Requires-Dist: pyexiv2 == 2.15.3
12
+ Requires-Dist: timezonefinder == 6.5.3
13
+ Requires-Dist: pytz ~= 2024.2
14
14
  Requires-Dist: types-pytz ~= 2023.3.0.1
15
15
  Requires-Dist: types-python-dateutil ~= 2.9.0
16
16
  Requires-Dist: flit ~= 3.8.0 ; extra == "build"
17
17
  Requires-Dist: black ~= 24.3 ; extra == "dev"
18
- Requires-Dist: mypy ~= 1.9 ; extra == "dev"
18
+ Requires-Dist: mypy ~= 1.12 ; extra == "dev"
19
19
  Requires-Dist: pytest ~= 7.2.0 ; extra == "dev"
20
20
  Requires-Dist: pytest-datafiles ~= 3.0 ; extra == "dev"
21
- Requires-Dist: types-xmltodict ~= 0.13 ; extra == "dev"
21
+ Requires-Dist: types-xmltodict ~= 0.14 ; extra == "dev"
22
22
  Requires-Dist: pre-commit ~= 3.3.3 ; extra == "dev"
23
23
  Requires-Dist: mkdocs-material ~= 9.5.21 ; extra == "docs"
24
24
  Requires-Dist: mkdocstrings[python] ~= 0.25.1 ; extra == "docs"
25
- Requires-Dist: python-dateutil ~= 2.8.2 ; extra == "write-exif"
26
- Requires-Dist: types-python-dateutil ~= 2.9.0.20240316 ; extra == "write-exif"
25
+ Requires-Dist: python-dateutil ~= 2.9.0 ; extra == "write-exif"
26
+ Requires-Dist: types-python-dateutil ~= 2.9.0.20241003 ; extra == "write-exif"
27
27
  Project-URL: Home, https://gitlab.com/panoramax/server/geo-picture-tag-reader
28
28
  Provides-Extra: build
29
29
  Provides-Extra: dev
@@ -54,7 +54,7 @@ Image orientation is read from
54
54
 
55
55
  #### :material-timer: Milliseconds in date
56
56
 
57
- Milliseconds in date is reade from `SubSecTimeOriginal`.
57
+ Milliseconds in date is read from `SubSecTimeOriginal`.
58
58
 
59
59
  #### :material-panorama-sphere-outline: 360° or flat
60
60
 
@@ -0,0 +1,84 @@
1
+ # :white_check_mark: Quality score
2
+
3
+ Panoramax offers a _Quality Score_ for each picture in its web viewer. It allows easy map filtering and comprehensive display of high-quality pictures availability.
4
+
5
+ The grade is shown to users as a A/B/C/D/E score (A is the best, E the worst), and shown graphically through this scale (inspired by [Nutri-Score](https://en.wikipedia.org/wiki/Nutri-Score)):
6
+
7
+ ![Quality score graphics](./images/quality_score.png)
8
+
9
+ ## :material-calculator: Score computation
10
+
11
+ Quality score is based on two indicators:
12
+
13
+ - :material-crosshairs-gps: __GPS position accuracy__: how precisely the GPS coordinates are set, in meters. This is 1/5 of the score.
14
+ - :material-camera-iris: __Horizontal pixel density__: how many pixels we have on horizon per _field of view_ degree. This is 4/5 of the score.
15
+
16
+ They are displayed through web viewer in picture metadata popup:
17
+
18
+ ![Metadata popup and score display](./images/quality_score_viewer.png)
19
+
20
+ !!! info
21
+
22
+ We know that this is a pretty simple indicator. Many other information could be taken into account (blurriness, light...) and may be used in the future. We started with something simple to make the _quality score_ available on as many pictures as possible. You can [come and help us](https://docs.panoramax.fr/how-to-contribute/#contribute-to-the-development) to make this happen sooner :grinning:
23
+
24
+ ### :material-crosshairs-gps: GPS position accuracy
25
+
26
+ This indicator allows to know if we can rely or not on GPS position, based on its precision. It is expressed as a decimal value in meters. The grade is a 5-star rating, and is applied based on these values:
27
+
28
+ | GPS Accuracy | Grade |
29
+ | ----------------- | ----- |
30
+ | <= 1 m | 5/5 |
31
+ | <= 2 m | 4/5 |
32
+ | <= 5 m | 3/5 |
33
+ | <= 10 m | 2/5 |
34
+ | > 10 m or unknown | 1/5 |
35
+
36
+ The value is read from picture EXIF metadata. We rely on the following tags:
37
+
38
+ - __Horizontal positioning error__ (`Exif.GPSInfo.GPSHPositioningError` or `Xmp.exif.GPSHPositioningError`) : expected positioning error in meters.
39
+ - __Dilution of precision__ (`Exif.GPSInfo.GPSDOP` or `Xmp.exif.GPSDOP`) : indicator of expected precision on coordinates (<= 1 means good precision for the sensor, >= 5 is not good, [more info on Wikipedia](https://en.wikipedia.org/wiki/Dilution_of_precision_(navigation))).
40
+ - __Is the GPS differential__ (`Exif.GPSInfo.GPSDifferential` or `Xmp.exif.GPSDifferential`) : indicates if GPS sensor is using [Differential GPS](https://en.wikipedia.org/wiki/Differential_GPS) or not. If yes, we expect a better precision.
41
+
42
+ These are used to define a precision value in meters. If none of these tags are set, we also rely on a default value for several camera vendors (based on `Make` and `Model` EXIF tags).
43
+
44
+ So, to get a good grade on GPS precision, you can (in order):
45
+
46
+ - Set a precise _Horizontal positioning error_
47
+ - Set a value for _Differential GPS_ and/or _Dilution of precision_
48
+ - Set values for _Make_ and _Model_ if you use a common camera
49
+
50
+
51
+ !!! info
52
+
53
+ If you find the shown value not reflecting the real precision of your GPS sensor, feel free to contact us with an example link. We tried to make precision estimates on a large set of cameras, but we may have missed some :material-map-search:
54
+
55
+ ### :material-camera-iris: Horizontal pixel density
56
+
57
+ This indicator allows to have an idea of how high the picture resolution is, independently of its field of view (360° or classic picture). The formula is: `picture width in pixels / field of view in degrees`. We have in result a number of pixels per FOV degree. The grade is a 5-star rating, and is applied based on these values:
58
+
59
+ | Grade | Density for 360° | Density for non 360° |
60
+ | ----- | ---------------- | --------------------------- |
61
+ | 5/5 | >= 38 px/deg | Not possible |
62
+ | 4/5 | >= 20 px/deg | >= 60 px/deg |
63
+ | 3/5 | >= 15px/deg | >= 38px/deg |
64
+ | 2/5 | < 15px/deg | >= 15 px/deg |
65
+ | 1/5 | Unknown value | < 15 px/deg or unknown value |
66
+
67
+ !!! info
68
+
69
+ A different rating is applied for 360°, as they offer a nicer user experience on web viewer. Note that if you're a technical reuser, the API offers raw values for each indicator, allowing you to do your own custom rating.
70
+
71
+ The value is computed from picture width in pixels, and some EXIF metadata. We rely on the following tags:
72
+
73
+ - __Focal length__ (`Exif.Image.FocalLength` or `Exif.Photo.FocalLength`): distance in millimeters between the nodal point of the lens and the camera sensor.
74
+ - __Make and model__ (`Exif.Image.Make` and `Exif.Image.Make`): camera model, which is used to find camera sensor width.
75
+ - __Projection type__ (for 360° pictures, `Xmp.GPano.ProjectionType`): to mark a picture as 360°
76
+
77
+ Based on these information, we are able to compute the _field of view_ (how wide the camera can look horizontally).
78
+
79
+ As these information are hard to deduce, you may carefully set all of them in EXIF metadata.
80
+
81
+ !!! info
82
+
83
+ If you have pictures with an unknown value for this grade, it's probably because we miss information on your camera model. Make sure your pictures have required information, and contact us with the camera _sensor width_ so we can add it in our listing.
84
+
@@ -2,4 +2,4 @@
2
2
  GeoPicTagReader
3
3
  """
4
4
 
5
- __version__ = "1.3.1"
5
+ __version__ = "1.3.3"
@@ -274,6 +274,9 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
274
274
  elif "MAPCompassHeading" in data and isExifTagUsable(data["MAPCompassHeading"], "TrueHeading", float):
275
275
  heading = int(round(float(data["MAPCompassHeading"]["TrueHeading"])))
276
276
 
277
+ if heading is None:
278
+ warnings.append(_("No heading value was found, this reduces usability of picture"))
279
+
277
280
  # Yaw / Pitch / roll
278
281
  yaw = None
279
282
  pitch = None
@@ -314,12 +317,17 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
314
317
  if make is not None and model is not None and model.startswith(make) and len(model) > len(make):
315
318
  model = model.replace(make, "").strip()
316
319
 
320
+ if make is None and model is None:
321
+ warnings.append(_("No make and model value found, no assumption on focal length or GPS precision can be made"))
322
+
317
323
  # Focal length
318
324
  focalLength = None
319
325
  if isExifTagUsable(data, "Exif.Image.FocalLength", Fraction):
320
326
  focalLength = float(Fraction(data["Exif.Image.FocalLength"]))
321
327
  elif isExifTagUsable(data, "Exif.Photo.FocalLength", Fraction):
322
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"))
323
331
 
324
332
  # Cropped pano data
325
333
  crop = None
@@ -368,9 +376,23 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
368
376
  ref = -1 if data.get("Exif.GPSInfo.GPSAltitudeRef") == "1" else 1
369
377
  altitude = altitude_raw * ref
370
378
 
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
+
371
392
  errors = []
372
393
  missing_fields = set()
373
- if not lat or not lon:
394
+ if lat is None or lon is None or (lat == 0 and lon == 0):
395
+ # Note: we consider that null island is not a valid position
374
396
  errors.append(_("No GPS coordinates or broken coordinates in picture EXIF tags"))
375
397
  if not lat:
376
398
  missing_fields.add("lat")
@@ -411,7 +433,7 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
411
433
  ),
412
434
  )
413
435
 
414
- assert lon and lat and d # at this point all those fields cannot be null
436
+ 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
437
  return GeoPicTags(
416
438
  lat,
417
439
  lon,
@@ -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"
@@ -7,8 +7,8 @@ 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-09 10:49+0200\n"
11
- "PO-Revision-Date: 2024-10-09 10:49+0200\n"
10
+ "POT-Creation-Date: 2024-11-24 15:36+0100\n"
11
+ "PO-Revision-Date: 2024-11-24 15:36+0100\n"
12
12
  "Last-Translator: Automatically generated\n"
13
13
  "Language-Team: none\n"
14
14
  "Language: en\n"
@@ -94,35 +94,65 @@ msgstr "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
94
94
  msgid "Skipping Mapillary date/time as it was not recognized: {v}"
95
95
  msgstr "Skipping Mapillary date/time as it was not recognized: {v}"
96
96
 
97
- #: geopic_tag_reader/reader.py:374
97
+ #: geopic_tag_reader/reader.py:278
98
+ msgid "No heading value was found, this reduces usability of picture"
99
+ msgstr "No heading value was found, this reduces usability of picture"
100
+
101
+ #: geopic_tag_reader/reader.py:321
102
+ msgid ""
103
+ "No make and model value found, no assumption on focal length or GPS "
104
+ "precision can be made"
105
+ msgstr ""
106
+ "No make and model value found, no assumption on focal length or GPS "
107
+ "precision can be made"
108
+
109
+ #: geopic_tag_reader/reader.py:330
110
+ msgid ""
111
+ "No focal length value was found, this prevents calculating field of view"
112
+ msgstr ""
113
+ "No focal length value was found, this prevents calculating field of view"
114
+
115
+ #: geopic_tag_reader/reader.py:388
116
+ msgid "No GPS accuracy value found, this prevents computing a quality score"
117
+ msgstr "No GPS accuracy value found, this prevents computing a quality score"
118
+
119
+ #: geopic_tag_reader/reader.py:390
120
+ msgid ""
121
+ "No GPS horizontal positioning error value found, GPS accuracy can only be "
122
+ "estimated"
123
+ msgstr ""
124
+ "No GPS horizontal positioning error value found, GPS accuracy can only be "
125
+ "estimated"
126
+
127
+ #: geopic_tag_reader/reader.py:396
98
128
  msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
99
129
  msgstr "No GPS coordinates or broken coordinates in picture EXIF tags"
100
130
 
101
- #: geopic_tag_reader/reader.py:380
131
+ #: geopic_tag_reader/reader.py:402
102
132
  msgid "No valid date in picture EXIF tags"
103
133
  msgstr "No valid date in picture EXIF tags"
104
134
 
105
- #: geopic_tag_reader/reader.py:385
135
+ #: geopic_tag_reader/reader.py:407
106
136
  msgid "The picture is missing mandatory metadata:"
107
137
  msgstr "The picture is missing mandatory metadata:"
108
138
 
109
- #: geopic_tag_reader/reader.py:476 geopic_tag_reader/reader.py:505
139
+ #: geopic_tag_reader/reader.py:498 geopic_tag_reader/reader.py:527
110
140
  msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
111
141
  msgstr "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
112
142
 
113
- #: geopic_tag_reader/reader.py:484
143
+ #: geopic_tag_reader/reader.py:506
114
144
  msgid "Broken GPS coordinates in picture EXIF tags"
115
145
  msgstr "Broken GPS coordinates in picture EXIF tags"
116
146
 
117
- #: geopic_tag_reader/reader.py:487 geopic_tag_reader/reader.py:511
147
+ #: geopic_tag_reader/reader.py:509 geopic_tag_reader/reader.py:533
118
148
  msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
119
149
  msgstr "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
120
150
 
121
- #: geopic_tag_reader/reader.py:572
151
+ #: geopic_tag_reader/reader.py:594
122
152
  msgid "Precise timezone information not found, fallback to UTC"
123
153
  msgstr "Precise timezone information not found, fallback to UTC"
124
154
 
125
- #: geopic_tag_reader/reader.py:577
155
+ #: geopic_tag_reader/reader.py:599
126
156
  msgid ""
127
157
  "Precise timezone information not found (and no GPS coordinates to help), "
128
158
  "fallback to UTC"
@@ -130,14 +160,14 @@ msgstr ""
130
160
  "Precise timezone information not found (and no GPS coordinates to help), "
131
161
  "fallback to UTC"
132
162
 
133
- #: geopic_tag_reader/reader.py:581
163
+ #: geopic_tag_reader/reader.py:603
134
164
  #, python-brace-format
135
165
  msgid ""
136
166
  "Skipping original date/time (from {datefield}) as it was not recognized: {v}"
137
167
  msgstr ""
138
168
  "Skipping original date/time (from {datefield}) as it was not recognized: {v}"
139
169
 
140
- #: geopic_tag_reader/reader.py:613
170
+ #: geopic_tag_reader/reader.py:635
141
171
  #, python-brace-format
142
172
  msgid ""
143
173
  "GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
@@ -146,12 +176,12 @@ msgstr ""
146
176
  "GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
147
177
  "group)"
148
178
 
149
- #: geopic_tag_reader/reader.py:644
179
+ #: geopic_tag_reader/reader.py:666
150
180
  #, python-brace-format
151
181
  msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
152
182
  msgstr "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
153
183
 
154
- #: geopic_tag_reader/reader.py:670
184
+ #: geopic_tag_reader/reader.py:692
155
185
  #, python-brace-format
156
186
  msgid ""
157
187
  "Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "