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.
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/CHANGELOG.md +16 -1
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/PKG-INFO +10 -10
- geopic_tag_reader-1.3.3/docs/images/quality_score.png +0 -0
- geopic_tag_reader-1.3.3/docs/images/quality_score_viewer.png +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/index.md +1 -1
- geopic_tag_reader-1.3.3/docs/quality_score.md +84 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/__init__.py +1 -1
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/reader.py +24 -2
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- {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
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- {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
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- {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
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/translations/geopic_tag_reader.pot +38 -13
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.po +180 -0
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.po +183 -0
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.po +213 -0
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader-1.3.3/geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.po +203 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/mkdocs.yml +1 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/pyproject.toml +8 -8
- geopic_tag_reader-1.3.1/geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader-1.3.1/geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader-1.3.1/geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/.gitignore +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/.gitlab-ci.yml +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/.pre-commit-config.yaml +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/CODE_OF_CONDUCT.md +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/LICENSE +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/Makefile +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/README.md +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/develop.md +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/install.md +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/tech/api_reference.md +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/docs/tech/cli.md +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/camera.py +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/i18n.py +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/main.py +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/model.py +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/py.typed +0 -0
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/sequence.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {geopic_tag_reader-1.3.1 → geopic_tag_reader-1.3.3}/geopic_tag_reader/writer.py +0 -0
- {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.
|
|
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
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: geopic-tag-reader
|
|
3
|
-
Version: 1.3.
|
|
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.
|
|
11
|
-
Requires-Dist: pyexiv2 == 2.15.
|
|
12
|
-
Requires-Dist: timezonefinder == 6.
|
|
13
|
-
Requires-Dist: pytz ~=
|
|
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.
|
|
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.
|
|
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.
|
|
26
|
-
Requires-Dist: types-python-dateutil ~= 2.9.0.
|
|
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
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
|
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
|
+

|
|
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
|
+

|
|
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
|
+
|
|
@@ -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
|
|
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,
|
|
Binary file
|
|
@@ -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-
|
|
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"
|
|
Binary file
|
|
@@ -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-
|
|
11
|
-
"PO-Revision-Date: 2024-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 "
|