Fällt jemanden eine Logik ein, um ein bestimmtes Land, zB Zypern, in gpx-Dateien zu finden, die sich in verschiedenen Unterverzeichnissen befinden?
Land in einer gpx-Datei finden
Anmeldungsdatum: Beiträge: 3453 |
|
||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Eine vielleicht dumme Gegenfrage von jmd. der nicht weiß, was eine gpx-Datei überhaupt ist: Wie findet man denn ein Land, dass sich nur in einem Unterverzeichnis befindet? |
||
Anmeldungsdatum: Beiträge: 3553 |
Also ich kenne die Endung .gpx als Favoriten-Datei von Garmin-Navigationsgeräten (xml, also reiner Text). Liste alle *.gpx, in denen Favoriten für UK enthalten sind: find /pfad/zum/oberordner -type f -name *.gpx -exec grep -l "<gpxx:Country>UK</gpxx:Country>" {} + Setzt natürlich voraus, das in deinen .gpx das Country-Flag für alle Einträge gepflegt / vorhanden ist: |
||
Anmeldungsdatum: Beiträge: 11181 Wohnort: München |
GPX-Dateien enthalten u.a. GPS-Wegpunkte, die ihrerseits wiederum Koordinaten und ggf. Höheninformationen enthalten. Du kannst mit den Koordinaten der Wegpunkte Geocoding betreiben, das hatten wir eigentlich schon alles in https://forum.ubuntuusers.de/topic/kommandozeilen-tool-um-koordinaten-geoinfo-aus/ durchgekaut - also z.B. mit gpxpy die Wegpunkte aus der .gpx-Datei extrahieren und dann mit einem Modul wie che0/countries aus den Koordinaten das Land ermitteln. IMHO ist es nicht besonders effizient bei jeder Suche die GPX-Koordinaten erneut auszuwerten, da würde ich mir etwas einfallen lassen, um die erkannten Länder als Metadaten in den Verzeichnissen zu speichern. |
||
Anmeldungsdatum: Beiträge: 3553 |
Die ursprüngliche Frage beschreibt dann ja total exakt um was es eigentlich geht ... 🙄 |
||
Anmeldungsdatum: Beiträge: 603 |
Du kannst Länderlisten einzeln¹ runterladen, oder auch 'All Countries'². Nur gerade Dein Beispiel Zypern scheint da zu fehlen.Die Listen enthalten ansonsten Landes-KZ, Post-Codes und eben auch Latitude- und Longitude-Parameter. Theoretisch könnte es damit möglich sein, sich über Deine GPX-Files an eine Stadt anzunähern und darüber dann die Landes-KZ zu ermitteln. Im Landesinnern steigt die Wahrscheinlichkeit auf einen Treffer, grenznah wirds vermutlich schwieriger. *hmmm* Aber um mal damit zu experimentieren scheint es vielleicht lohnend zu sein. |
||
Ehemaliger
Anmeldungsdatum: Beiträge: 29067 Wohnort: WW |
Hallo, grundsätzlich wird die nichts anderes übrigen bleiben, über alle Daten in den GPX-Dateien zu iterieren und dann mit einem geeigneten Tool gegen die Umrisse eine Landes zu vergleichen. Bei einer Inseln wie Zypern wäre das ja einfach, weil man einfach ein rechteckige Box um die Insel ziehen kann (davon ausgehend, dass in der GPX keine Punkte sind, die im Meer liegen). Die angrenzenden Ländern wie z.B. Deutschland - Niederlande ist das aufwendiger. "Effizienter" kann man das IMHO nur gestalten, wenn man möglichst viele Daten im RAM hält, um I/O zu vermeiden. Was ist denn der genau Hintergrund der Frage? Gruß, noisefloor |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 3453 |
Nochmals vielen Dank für dein Script und gerade wenn ich daran denke, wie aufwendig es ist die Cache-Dateien zu erstellen, dann zeigt es auch hier die Grenzen, wenn man das kostenlos machen will. Zum Hintergrund der Frage. Ich habe aus der Familie Zypern-Fotos erhalten und angeblich auch eine gpx-Datei schon früher. Auf dieser gpx-Datei sind Daten aus Zypern, wobei ich keine Ahnung habe, wo diese Datei auf meinem PC sein soll. Ich bin mir ziemlich sicher, ich habe die gpx-Datei nicht erhalten. Also dachte ich mir, ich durchsuche alle gpx-Dateien nach Zypern-Koordinaten. Die aus dem GPS-Logger ausgelesene gpx-Datei enthält den Zeitpunkt des Auslesens, dh es kommen nur Dateien ab der Zypern-Reise in Frage und da finde ich beim Datum im Dateinamen nichts. Diese Datei wird im Stanardard-Ordner behalten und in den Albumordner umkopiert und vielleicht in einer 3. Variante um fehlerhafete Koordinaten korrigiert. Variante 2 und 3 haben das Auslesedatum nicht mehr im Namen und unter diesen könnte sich die Zypern-gpx-Datei verstecken. Bei näherer Überlegung ergibt sich ein viel einfacher Ansatz. Man nimmt ein Zypern-Foto, sieht sich mit exiftool das Datum an und sucht nach diesem Datum in den gpx-Dateien. Damut sollte ich das Problem mit einem einfach grep lösen können. BTW seahawk, mein Fotoscript in das dein Script integriert ist, funktioniert unter Eoan nicht mehr. Ein simples identify -format "%w" bringt bei jpg gar nichts und bei RAW-Dateien eine Fehlermeldung. identify-im6.q16: delegate failed `'ufraw-batch' --silent --create-id=also --out-type=png --out-depth=16 '--output=%u.png' '%i'' @ error/delegate.c/InvokeDelegate/1928. identify-im6.q16: unable to open image `/tmp/magick-5347Y1wSQAEMga2v.ppm': Datei oder Verzeichnis nicht gefunden @ error/blob.c/OpenBlob/2874.
|
||
Ehemaliger
Anmeldungsdatum: Beiträge: 29067 Wohnort: WW |
Hallo, wenn du wirklich nur "irgendwo auf Zypern - ja/nein?" wissen willst, dann kannst du wirklich einfach mit der vorgeschlagenen Box um Zypern arbeiten. Heißt du suchst dir die max Nord-Ost und min Süd-West Koordinaten eines Rechtecks, dass Zypern umschließt und prüfst dagegen deine Koordinaten aus der GPX-Datei. BTW: GPX-Dateien sind XML, d.h. die Daten willst du lieber mit einem XML-Parser als grep / RegEx durchsuchen. Gruß, noisefloor |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 3453 |
Hmmh, wie soll ich das rekursiv machen? Ich hatte an "grep -r" gedacht. Wenn sich da irgendein Eintrag mit einem Datum aus dieser Zeit befindet, habe ich die entsprechende gpx-Datei gefunden. |
||
Anmeldungsdatum: Beiträge: 11181 Wohnort: München |
ufraw ist schon länger ungepflegt und wurde aufgrund ausnutzbarer Sicherheitslücken aus Debian und Ubuntu entfernt (https://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg5660571.html). Welche Informationen brauchst du genau von den RAW-Images? Wenn es um die Größeninformationen geht, tut es auch das noch aktiv entwickelte libraw in Verbindung mit rawpy (oder einem kleinen C(++) Programm, wenn man zu viel Zeit hat): sudo apt install python3-venv libraw-dev build-essential python3 -m venv rawpy_venv # Der Name bzw. Pfad kann nachträglich nicht mehr geändert werden, ohne das venv zu beschädigen! . rawpy_venv/bin/activate pip install -U pip rawpy Dann ein kleines Python-Skript, dem man die RAW-Dateien als Argument(e) übergeben kann:
|
||
Anmeldungsdatum: Beiträge: 11181 Wohnort: München |
z.B. mit Python >= 3.6 und gpxpy (hier mal nur mit der von @noisefloor angesprochenen Prüfung, ob mindestens eine Koordinate innerhalb der Bounding Box liegt, den timestamp der Wegpunkte kann man sich natürlich auch noch ansehen, wenn man weiß, welche Kriterien dafür genutzt werden sollen):
|
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 3453 |
Danke dir seahawk, ich glaube das diskutieren wir besser im Thread weiter, der vom Titel besser passt. Hier nur ganz kurz, ich brauche eine funktionierende ImageMagick Suite für RAW. |
||
Ehemaliger
Anmeldungsdatum: Beiträge: 29067 Wohnort: WW |
Hallo,
??? - warum? Passt doch alles hier. Und das Python-Skript von seahawk1986 macht genau das, wonach du in deinem Ausgangspost fragst. Gruß, noisefloor |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 3453 |
Letztlich ist es mir egal, wo es diskutiert wird, aber "Land in einer gpx-Datei finden" hat vom Titel wesentlich weniger im Vergleich zu "Eoan: Auflösung von (RAW-)Fotos bestimmen" zu tun um mein Problem zu lösen. Bei https://forum.ubuntuusers.de/topic/eoan-aufloesung-von-raw-fotos-bestimmen/ habe ich schon mehr zu meinem Problem geschrieben. Das Python-Script passt in dieser Form nicht besonders gut meinem bestehenden riesigen Bash-Script. Ich veffolge mittlerweile den Ansatz Imagemagick zu "reparieren". Siehe bei https://forum.ubuntuusers.de/topic/eoan-aufloesung-von-raw-fotos-bestimmen/ |