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.
- geopic_tag_reader/__init__.py +1 -1
- geopic_tag_reader/camera.py +118 -30
- geopic_tag_reader/cameras.csv +3775 -0
- geopic_tag_reader/main.py +3 -0
- geopic_tag_reader/reader.py +89 -8
- geopic_tag_reader/translations/da/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/da/LC_MESSAGES/geopic_tag_reader.po +209 -0
- geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.po +44 -1
- geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.po +77 -34
- geopic_tag_reader/translations/eo/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/eo/LC_MESSAGES/geopic_tag_reader.po +207 -0
- geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.po +152 -119
- geopic_tag_reader/translations/geopic_tag_reader.pot +68 -30
- geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/hu/LC_MESSAGES/geopic_tag_reader.po +4 -4
- geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.po +212 -0
- geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/nl/LC_MESSAGES/geopic_tag_reader.po +213 -0
- geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/pl/LC_MESSAGES/geopic_tag_reader.po +203 -0
- {geopic_tag_reader-1.3.2.dist-info → geopic_tag_reader-1.4.0.dist-info}/METADATA +2 -2
- geopic_tag_reader-1.4.0.dist-info/RECORD +40 -0
- {geopic_tag_reader-1.3.2.dist-info → geopic_tag_reader-1.4.0.dist-info}/WHEEL +1 -1
- geopic_tag_reader-1.3.2.dist-info/RECORD +0 -29
- {geopic_tag_reader-1.3.2.dist-info → geopic_tag_reader-1.4.0.dist-info}/LICENSE +0 -0
- {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)
|
geopic_tag_reader/reader.py
CHANGED
|
@@ -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
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
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
|
|
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
|
|
|
Binary file
|
|
@@ -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})"
|
|
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
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# English translations for PACKAGE package.
|
|
2
|
-
# Copyright (C)
|
|
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,
|
|
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:
|
|
11
|
-
"PO-Revision-Date:
|
|
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 "
|
|
30
|
-
msgstr "
|
|
29
|
+
msgid "GPS accuracy:"
|
|
30
|
+
msgstr "GPS accuracy:"
|
|
31
31
|
|
|
32
|
-
#: geopic_tag_reader/main.py:
|
|
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:
|
|
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:
|
|
45
|
+
#: geopic_tag_reader/main.py:32
|
|
41
46
|
msgid "(Camera)"
|
|
42
47
|
msgstr "(Camera)"
|
|
43
48
|
|
|
44
|
-
#: geopic_tag_reader/main.py:
|
|
49
|
+
#: geopic_tag_reader/main.py:33
|
|
45
50
|
msgid "Heading:"
|
|
46
51
|
msgstr "Heading:"
|
|
47
52
|
|
|
48
|
-
#: geopic_tag_reader/main.py:
|
|
53
|
+
#: geopic_tag_reader/main.py:34
|
|
49
54
|
msgid "Type:"
|
|
50
55
|
msgstr "Type:"
|
|
51
56
|
|
|
52
|
-
#: geopic_tag_reader/main.py:
|
|
57
|
+
#: geopic_tag_reader/main.py:35
|
|
53
58
|
msgid "Make:"
|
|
54
59
|
msgstr "Make:"
|
|
55
60
|
|
|
56
|
-
#: geopic_tag_reader/main.py:
|
|
61
|
+
#: geopic_tag_reader/main.py:36
|
|
57
62
|
msgid "Model:"
|
|
58
63
|
msgstr "Model:"
|
|
59
64
|
|
|
60
|
-
#: geopic_tag_reader/main.py:
|
|
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:
|
|
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:
|
|
81
|
+
#: geopic_tag_reader/main.py:41
|
|
69
82
|
msgid "Pitch:"
|
|
70
83
|
msgstr "Pitch:"
|
|
71
84
|
|
|
72
|
-
#: geopic_tag_reader/main.py:
|
|
85
|
+
#: geopic_tag_reader/main.py:42
|
|
73
86
|
msgid "Roll:"
|
|
74
87
|
msgstr "Roll:"
|
|
75
88
|
|
|
76
|
-
#: geopic_tag_reader/main.py:
|
|
89
|
+
#: geopic_tag_reader/main.py:43
|
|
77
90
|
msgid "Yaw:"
|
|
78
91
|
msgstr "Yaw:"
|
|
79
92
|
|
|
80
|
-
#: geopic_tag_reader/main.py:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 "
|
|
Binary file
|