geopic-tag-reader 1.3.3__py3-none-any.whl → 1.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geopic_tag_reader/__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 +80 -21
- 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/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.po +52 -39
- 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/geopic_tag_reader.pot +48 -35
- geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/it/LC_MESSAGES/geopic_tag_reader.po +56 -27
- {geopic_tag_reader-1.3.3.dist-info → geopic_tag_reader-1.4.0.dist-info}/METADATA +1 -1
- {geopic_tag_reader-1.3.3.dist-info → geopic_tag_reader-1.4.0.dist-info}/RECORD +19 -14
- {geopic_tag_reader-1.3.3.dist-info → geopic_tag_reader-1.4.0.dist-info}/LICENSE +0 -0
- {geopic_tag_reader-1.3.3.dist-info → geopic_tag_reader-1.4.0.dist-info}/WHEEL +0 -0
- {geopic_tag_reader-1.3.3.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):
|
|
@@ -320,14 +330,7 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
320
330
|
if make is None and model is None:
|
|
321
331
|
warnings.append(_("No make and model value found, no assumption on focal length or GPS precision can be made"))
|
|
322
332
|
|
|
323
|
-
|
|
324
|
-
focalLength = None
|
|
325
|
-
if isExifTagUsable(data, "Exif.Image.FocalLength", Fraction):
|
|
326
|
-
focalLength = float(Fraction(data["Exif.Image.FocalLength"]))
|
|
327
|
-
elif isExifTagUsable(data, "Exif.Photo.FocalLength", Fraction):
|
|
328
|
-
focalLength = float(Fraction(data["Exif.Photo.FocalLength"]))
|
|
329
|
-
if focalLength is None:
|
|
330
|
-
warnings.append(_("No focal length value was found, this prevents calculating field of view"))
|
|
333
|
+
cameraMetadata = camera.find_camera(make, model)
|
|
331
334
|
|
|
332
335
|
# Cropped pano data
|
|
333
336
|
crop = None
|
|
@@ -369,6 +372,27 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
369
372
|
else:
|
|
370
373
|
pic_type = "flat"
|
|
371
374
|
|
|
375
|
+
# Focal length
|
|
376
|
+
focalLength = None
|
|
377
|
+
if isExifTagUsable(data, "Exif.Image.FocalLength", Fraction):
|
|
378
|
+
focalLength = float(Fraction(data["Exif.Image.FocalLength"]))
|
|
379
|
+
elif isExifTagUsable(data, "Exif.Photo.FocalLength", Fraction):
|
|
380
|
+
focalLength = float(Fraction(data["Exif.Photo.FocalLength"]))
|
|
381
|
+
if focalLength is None and pic_type != "equirectangular":
|
|
382
|
+
warnings.append(_("No focal length value was found, this prevents calculating field of view"))
|
|
383
|
+
|
|
384
|
+
# Sensor width
|
|
385
|
+
sensorWidth = None
|
|
386
|
+
if cameraMetadata is not None:
|
|
387
|
+
sensorWidth = cameraMetadata.sensor_width
|
|
388
|
+
|
|
389
|
+
# Field of view
|
|
390
|
+
fieldOfView = None
|
|
391
|
+
if pic_type == "equirectangular":
|
|
392
|
+
fieldOfView = 360
|
|
393
|
+
elif sensorWidth is not None and focalLength is not None:
|
|
394
|
+
fieldOfView = round(math.degrees(2 * math.atan(sensorWidth / (2 * focalLength))))
|
|
395
|
+
|
|
372
396
|
# Altitude
|
|
373
397
|
altitude = None
|
|
374
398
|
if isExifTagUsable(data, "Exif.GPSInfo.GPSAltitude", Fraction):
|
|
@@ -376,19 +400,48 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
376
400
|
ref = -1 if data.get("Exif.GPSInfo.GPSAltitudeRef") == "1" else 1
|
|
377
401
|
altitude = altitude_raw * ref
|
|
378
402
|
|
|
379
|
-
# GPS accuracy
|
|
380
|
-
gpshpos =
|
|
381
|
-
|
|
382
|
-
)
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
403
|
+
# GPS accuracy
|
|
404
|
+
gpshpos = None
|
|
405
|
+
gpshposEstimated = False
|
|
406
|
+
if isExifTagUsable(data, "Exif.GPSInfo.GPSHPositioningError", float):
|
|
407
|
+
gpshpos = float(data["Exif.GPSInfo.GPSHPositioningError"])
|
|
408
|
+
elif isExifTagUsable(data, "Xmp.exif.GPSHPositioningError", float):
|
|
409
|
+
gpshpos = float(data["Xmp.exif.GPSHPositioningError"])
|
|
410
|
+
|
|
411
|
+
gpsdop = None
|
|
412
|
+
if isExifTagUsable(data, "Exif.GPSInfo.GPSDOP", float):
|
|
413
|
+
gpsdop = float(data["Exif.GPSInfo.GPSDOP"])
|
|
414
|
+
elif isExifTagUsable(data, "Xmp.exif.GPSDOP", float):
|
|
415
|
+
gpsdop = float(data["Xmp.exif.GPSDOP"])
|
|
416
|
+
|
|
417
|
+
gpsdiff = None
|
|
418
|
+
if isExifTagUsable(data, "Exif.GPSInfo.GPSDifferential", int):
|
|
419
|
+
gpsdiff = int(data["Exif.GPSInfo.GPSDifferential"])
|
|
420
|
+
elif isExifTagUsable(data, "Xmp.exif.GPSDifferential", int):
|
|
421
|
+
gpsdiff = int(data["Xmp.exif.GPSDifferential"])
|
|
422
|
+
|
|
423
|
+
if gpsdop is not None and gpsdop > 0:
|
|
424
|
+
gpshposEstimated = True
|
|
425
|
+
if gpsdiff == 1: # DOP with a DGPS -> consider GPS nominal error as 1 meter
|
|
426
|
+
gpshpos = gpsdop
|
|
427
|
+
else: # DOP without DGPS -> consider GPS nominal error as 3 meters in average
|
|
428
|
+
gpshpos = 3 * gpsdop
|
|
429
|
+
elif gpsdiff == 1: # DGPS only -> return 2 meters precision
|
|
430
|
+
gpshpos = 2
|
|
431
|
+
gpshposEstimated = True
|
|
432
|
+
elif cameraMetadata is not None and cameraMetadata.gps_accuracy is not None: # Estimate based on model
|
|
433
|
+
gpshpos = cameraMetadata.gps_accuracy
|
|
434
|
+
gpshposEstimated = True
|
|
435
|
+
elif make is not None and make.lower() in camera.GPS_ACCURACY_MAKE:
|
|
436
|
+
gpshpos = camera.GPS_ACCURACY_MAKE[make.lower()]
|
|
437
|
+
gpshposEstimated = True
|
|
438
|
+
|
|
439
|
+
if gpshpos is None:
|
|
440
|
+
warnings.append(_("No GPS accuracy value found, this prevents computing a quality score"))
|
|
441
|
+
elif gpshposEstimated:
|
|
442
|
+
warnings.append(_("No GPS horizontal positioning error value found, GPS accuracy can only be estimated"))
|
|
443
|
+
|
|
444
|
+
# Errors display
|
|
392
445
|
errors = []
|
|
393
446
|
missing_fields = set()
|
|
394
447
|
if lat is None or lon is None or (lat == 0 and lon == 0):
|
|
@@ -430,6 +483,9 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
430
483
|
roll=roll,
|
|
431
484
|
yaw=yaw,
|
|
432
485
|
ts_by_source=tsSources,
|
|
486
|
+
sensor_width=sensorWidth,
|
|
487
|
+
field_of_view=fieldOfView,
|
|
488
|
+
gps_accuracy=gpshpos,
|
|
433
489
|
),
|
|
434
490
|
)
|
|
435
491
|
|
|
@@ -451,6 +507,9 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
451
507
|
roll=roll,
|
|
452
508
|
yaw=yaw,
|
|
453
509
|
ts_by_source=tsSources,
|
|
510
|
+
sensor_width=sensorWidth,
|
|
511
|
+
field_of_view=fieldOfView,
|
|
512
|
+
gps_accuracy=gpshpos,
|
|
454
513
|
)
|
|
455
514
|
|
|
456
515
|
|
|
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
|
|
@@ -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,79 +26,92 @@ 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
|
|
98
111
|
msgid "No heading value was found, this reduces usability of picture"
|
|
99
112
|
msgstr "No heading value was found, this reduces usability of picture"
|
|
100
113
|
|
|
101
|
-
#: geopic_tag_reader/reader.py:
|
|
114
|
+
#: geopic_tag_reader/reader.py:331
|
|
102
115
|
msgid ""
|
|
103
116
|
"No make and model value found, no assumption on focal length or GPS "
|
|
104
117
|
"precision can be made"
|
|
@@ -106,17 +119,17 @@ msgstr ""
|
|
|
106
119
|
"No make and model value found, no assumption on focal length or GPS "
|
|
107
120
|
"precision can be made"
|
|
108
121
|
|
|
109
|
-
#: geopic_tag_reader/reader.py:
|
|
122
|
+
#: geopic_tag_reader/reader.py:382
|
|
110
123
|
msgid ""
|
|
111
124
|
"No focal length value was found, this prevents calculating field of view"
|
|
112
125
|
msgstr ""
|
|
113
126
|
"No focal length value was found, this prevents calculating field of view"
|
|
114
127
|
|
|
115
|
-
#: geopic_tag_reader/reader.py:
|
|
128
|
+
#: geopic_tag_reader/reader.py:440
|
|
116
129
|
msgid "No GPS accuracy value found, this prevents computing a quality score"
|
|
117
130
|
msgstr "No GPS accuracy value found, this prevents computing a quality score"
|
|
118
131
|
|
|
119
|
-
#: geopic_tag_reader/reader.py:
|
|
132
|
+
#: geopic_tag_reader/reader.py:442
|
|
120
133
|
msgid ""
|
|
121
134
|
"No GPS horizontal positioning error value found, GPS accuracy can only be "
|
|
122
135
|
"estimated"
|
|
@@ -124,35 +137,35 @@ msgstr ""
|
|
|
124
137
|
"No GPS horizontal positioning error value found, GPS accuracy can only be "
|
|
125
138
|
"estimated"
|
|
126
139
|
|
|
127
|
-
#: geopic_tag_reader/reader.py:
|
|
140
|
+
#: geopic_tag_reader/reader.py:449
|
|
128
141
|
msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
|
|
129
142
|
msgstr "No GPS coordinates or broken coordinates in picture EXIF tags"
|
|
130
143
|
|
|
131
|
-
#: geopic_tag_reader/reader.py:
|
|
144
|
+
#: geopic_tag_reader/reader.py:455
|
|
132
145
|
msgid "No valid date in picture EXIF tags"
|
|
133
146
|
msgstr "No valid date in picture EXIF tags"
|
|
134
147
|
|
|
135
|
-
#: geopic_tag_reader/reader.py:
|
|
148
|
+
#: geopic_tag_reader/reader.py:460
|
|
136
149
|
msgid "The picture is missing mandatory metadata:"
|
|
137
150
|
msgstr "The picture is missing mandatory metadata:"
|
|
138
151
|
|
|
139
|
-
#: geopic_tag_reader/reader.py:
|
|
152
|
+
#: geopic_tag_reader/reader.py:557 geopic_tag_reader/reader.py:586
|
|
140
153
|
msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
|
|
141
154
|
msgstr "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
|
|
142
155
|
|
|
143
|
-
#: geopic_tag_reader/reader.py:
|
|
156
|
+
#: geopic_tag_reader/reader.py:565
|
|
144
157
|
msgid "Broken GPS coordinates in picture EXIF tags"
|
|
145
158
|
msgstr "Broken GPS coordinates in picture EXIF tags"
|
|
146
159
|
|
|
147
|
-
#: geopic_tag_reader/reader.py:
|
|
160
|
+
#: geopic_tag_reader/reader.py:568 geopic_tag_reader/reader.py:592
|
|
148
161
|
msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
|
|
149
162
|
msgstr "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
|
|
150
163
|
|
|
151
|
-
#: geopic_tag_reader/reader.py:
|
|
164
|
+
#: geopic_tag_reader/reader.py:653
|
|
152
165
|
msgid "Precise timezone information not found, fallback to UTC"
|
|
153
166
|
msgstr "Precise timezone information not found, fallback to UTC"
|
|
154
167
|
|
|
155
|
-
#: geopic_tag_reader/reader.py:
|
|
168
|
+
#: geopic_tag_reader/reader.py:658
|
|
156
169
|
msgid ""
|
|
157
170
|
"Precise timezone information not found (and no GPS coordinates to help), "
|
|
158
171
|
"fallback to UTC"
|
|
@@ -160,14 +173,14 @@ msgstr ""
|
|
|
160
173
|
"Precise timezone information not found (and no GPS coordinates to help), "
|
|
161
174
|
"fallback to UTC"
|
|
162
175
|
|
|
163
|
-
#: geopic_tag_reader/reader.py:
|
|
176
|
+
#: geopic_tag_reader/reader.py:662
|
|
164
177
|
#, python-brace-format
|
|
165
178
|
msgid ""
|
|
166
179
|
"Skipping original date/time (from {datefield}) as it was not recognized: {v}"
|
|
167
180
|
msgstr ""
|
|
168
181
|
"Skipping original date/time (from {datefield}) as it was not recognized: {v}"
|
|
169
182
|
|
|
170
|
-
#: geopic_tag_reader/reader.py:
|
|
183
|
+
#: geopic_tag_reader/reader.py:694
|
|
171
184
|
#, python-brace-format
|
|
172
185
|
msgid ""
|
|
173
186
|
"GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
|
|
@@ -176,12 +189,12 @@ msgstr ""
|
|
|
176
189
|
"GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
|
|
177
190
|
"group)"
|
|
178
191
|
|
|
179
|
-
#: geopic_tag_reader/reader.py:
|
|
192
|
+
#: geopic_tag_reader/reader.py:725
|
|
180
193
|
#, python-brace-format
|
|
181
194
|
msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
|
|
182
195
|
msgstr "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
|
|
183
196
|
|
|
184
|
-
#: geopic_tag_reader/reader.py:
|
|
197
|
+
#: geopic_tag_reader/reader.py:751
|
|
185
198
|
#, python-brace-format
|
|
186
199
|
msgid ""
|
|
187
200
|
"Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "
|
|
Binary file
|