Version 1.2

GeoLocation BL

Fotosammlung nach GPS-Daten auswerten, nach Aufnahmeort gruppieren und nach Jahr filtern – auch auf Netzlaufwerken.

Autor: Bernhard Lickert, entwickelt mit Claude (Anthropic)
Copyright © 2026 Bernhard Lickert

Inhalt
  1. Was ist neu in Version 1.2
  2. Rueckblick: Version 1.1
  3. Programm starten – welche Fassung?
  4. Erste Schritte
  5. Ortsdatenbank
  6. Bedienung im Einzelnen
  7. Netzwerkordner und NAS
  8. Karte
  9. Wo liegen die Daten?
  10. Unterstuetzte Dateiformate
  11. Wenn etwas nicht klappt
  12. EXE selbst erzeugen
  13. Technische Hinweise
  14. Haftungsausschluss und Datenquellen

Was ist neu in Version 1.2

Version 1.2 bringt den neuen Namen, ein eigenes Programmsymbol und zwei Aenderungen, die vor allem auf einem neu eingerichteten Rechner wichtig sind.

NeuWas sich aendert
Neuer Name: GeoLocation BL Das Programm hiess bis Version 1.1 Foto-GeoLocation. Umbenannt wurden auch alle Dateien: GeoLocation-BL.exe, geolocation_bl.py, geoloc_core.py, geoloc_orte.py, start_GeoLocation-BL.bat, build_GeoLocation-BL.bat, GeoLocation-BL.spec. Vorhandene Daten gehen dabei nicht verloren (siehe unten).
Eigenes Programmsymbol Weltkugel mit rotem Stecknadel-Faehnchen – als Fenster- und Taskleistensymbol, als Symbol der EXE und als Datei GeoLocation-BL.ico fuer eigene Verknuepfungen. Das Symbol ist zusaetzlich fest im Programm eingebettet, damit es auch dann erscheint, wenn die EXE allein weitergegeben wird.
Daten liegen jetzt neben dem Programm Index, Ortsdatenbank und Vorschaubilder liegen im Unterordner Daten neben der EXE, sofern dieser Ordner beschreibbar ist. Damit zieht beim Kopieren des Programmordners alles mit – auf einem neuen PC ist kein erneuter Download der Ortsdatenbank noetig. Liegt das Programm in einem geschuetzten Ordner (z. B. C:\Programme), weicht es auf das Benutzerprofil aus. Siehe Wo liegen die Daten?
Hinweis, wenn die Ortsdatenbank fehlt Frueher fiel das Programm stillschweigend auf die eingebaute Notfallliste (wenige hundert Orte) zurueck – man bekam grobe oder falsche Ortsnamen, ohne es zu merken. Jetzt fragt das Programm beim Start einmal nach, ob die Ortsdatenbank geholt werden soll, warnt vor dem Einlesen und zeigt die fehlende Datenbank rot in der Statuszeile an.

Rueckblick: Was Version 1.1 gebracht hat

Version 1.1 war eine Fehlerbehebung nach den ersten Praxistests von Version 1.0.

BehobenWas war los
Absturz beim Anklicken eines Ortes Beim Wiederherstellen der Auswahl nach dem Neuaufbau des Ortsbaums loeste das Programm erneut sein eigenes Auswahlsignal aus und rief sich dadurch endlos selbst auf. Ergebnis: Absturz ohne Meldung. Behoben durch korrekte Reihenfolge der Signalsperre und einen zusaetzlichen Rekursionsschutz; ein Regressionstest verhindert den Wiedereinbau.
Dunkelmodus unlesbar Menueleiste, Menues, Spaltenkoepfe, Kurzhinweise und Bildlaufleisten behielten die hellen Windows-Farben, waehrend die Schrift hell war – also weiss auf weiss. Behoben: Das Programm setzt jetzt den Fusion-Stil und eine vollstaendige Qt-Farbpalette, nicht nur einzelne Stylesheet-Regeln.
Abstuerze blieben unsichtbar PyQt beendet den Prozess, sobald in einer Signalbehandlung ein unbehandelter Fehler auftritt – bei der EXE ohne jede Meldung. Jetzt wird jeder Fehler protokolliert, angezeigt, und das Programm laeuft weiter (siehe Fehlerbericht).
Anzeige gegen Datenfehler gehaertet Bilderliste, Ortsbaum und Einzelheiten fangen Fehler einzeln ab. Sonderzeichen in Datei- und Ortsnamen werden korrekt dargestellt.

1. Programm starten – welche Fassung?

Die EXE-Fassung ist die vorgesehene Startvariante.
Starten Sie das Programm im Alltag ueber GeoLocation-BL.exe.

Es gibt zwei Wege, das Programm zu starten. Sie tun dasselbe, unterscheiden sich aber deutlich in Voraussetzungen und Bequemlichkeit:

FassungStartVoraussetzungWofuer gedacht
EXE-Fassung
(empfohlen)
dist\GeoLocation-BL.exe
per Doppelklick
keine – Python und alle Pakete stecken in der EXE taeglicher Gebrauch; laesst sich auf jeden Windows-Rechner kopieren, auch auf einen USB-Stick
Python-Fassung start_GeoLocation-BL.bat installiertes Python 3.10+ mit PyQt6 und Pillow Entwicklung, Fehlersuche, Anpassungen am Quelltext

Warum die EXE die richtige Wahl ist

Erzeugt wird die EXE einmalig mit build_GeoLocation-BL.bat (siehe Abschnitt 10). Danach wird sie nur noch benutzt.

Beim ersten Start warnt Windows ("SmartScreen") moeglicherweise vor einer unbekannten Anwendung, weil die EXE nicht digital signiert ist. „Weitere Informationen“ → „Trotzdem ausfuehren“.

2. Erste Schritte

  1. Programm starten.
  2. Ortsdatenbank laden (einmalig, Internet noetig): Extras → Ortsdatenbank laden / aktualisieren. Ohne diesen Schritt arbeitet das Programm mit einer eingebauten Notfallliste von rund 250 Orten – das reicht nur fuer eine sehr grobe Zuordnung.
  3. Fotoordner hinzufuegen: Werkzeugleiste → Ordner hinzufuegen (lokal) oder Netzwerkordner (NAS, UNC-Pfad).
  4. Das Programm durchsucht den Ordner samt Unterordnern, liest die EXIF-Daten und ordnet jedem Foto mit GPS-Koordinaten den naechstgelegenen Ort zu.
  5. Auswerten: links Jahre und Orte anklicken, rechts die Einzelheiten lesen, im Reiter Karte die Aufnahmeorte ansehen.
Das Programm veraendert Ihre Fotosammlung nicht. Es liest ausschliesslich. Es wird nichts verschoben, umbenannt, geloescht oder neu geschrieben – auch nicht auf dem NAS. Alle Ergebnisse landen in einer eigenen Datenbankdatei (siehe Abschnitt 7).

3. Ortsdatenbank

Auf einem neuen Rechner zuerst die Ortsdatenbank laden.
Ohne sie greift nur die eingebaute Notfallliste mit wenigen hundert Orten – die Ortsnamen werden dann sehr grob und oft falsch. Seit Version 1.2 fragt das Programm beim Start von sich aus nach, warnt vor dem Einlesen und zeigt den Zustand rot in der Statuszeile an (ACHTUNG: nur Notfallliste). Bereits eingelesene Fotos lassen sich danach ueber Orte neu zuordnen nachtraeglich richtig beschriften.

Ein Foto enthaelt nur Koordinaten (z. B. 47.9990 / 7.8421), keinen Ortsnamen. Den Namen ermittelt das Programm auf zwei Wegen:

Offline (Standard)

Eine Ortsliste von GeoNames wird einmalig heruntergeladen und in eine lokale Datei orte.sqlite umgewandelt. Danach laeuft die Zuordnung ohne Internet und sehr schnell (mehr als 20.000 Zuordnungen pro Sekunde). Drei Umfaenge stehen zur Wahl:

VarianteOrteDownloadGeeignet fuer
cities1000ca. 150.000ca. 11 MB genaueste Zuordnung, auch kleine Doerfer
cities5000 (empfohlen)ca. 55.000ca. 5 MB guter Mittelweg
cities15000ca. 26.000ca. 3 MB nur groessere Staedte

Zugeordnet wird immer der naechstgelegene Ort. Liegt er weiter als 30 km entfernt (z. B. Aufnahme auf hoher See oder im Gebirge), steht die Entfernung in Klammern dabei: Zermatt (58 km entfernt).

Online (auf Wunsch, genauer)

Extras → Ortsnamen online nachschlagen fragt fuer die aktuell angezeigte Auswahl den Dienst Nominatim (OpenStreetMap) ab und liefert die tatsaechliche Adresse statt der naechsten Stadt – also z. B. den Ortsteil.

Nominatim erlaubt hoechstens eine Abfrage pro Sekunde. 1.000 Fotos dauern also rund 17 Minuten. Das Programm haelt diese Grenze automatisch ein und speichert jedes Ergebnis zwischen, damit dieselbe Koordinate nie zweimal abgefragt wird. Nutzen Sie die Online-Abfrage gezielt fuer einzelne Orte, nicht fuer die ganze Sammlung.

4. Bedienung im Einzelnen

Werkzeugleiste

SchaltflaecheWirkung
Ordner hinzufuegenLokalen Ordner waehlen und einlesen (samt Unterordnern)
NetzwerkordnerUNC-Pfad oder Laufwerksbuchstaben eingeben, z. B. \\NAS\Fotos
Neu einlesenAlle hinterlegten Ordner erneut durchsuchen. Unveraenderte Dateien werden uebersprungen – der zweite Durchlauf ist daher sehr viel schneller als der erste.
AbbrechenLaufenden Durchlauf beenden. Das bereits Eingelesene bleibt erhalten.
SuchfeldFiltert nach Dateiname, Ordner oder Ortsname
Hell / DunkelFarbschema umschalten (wird gemerkt)
HandbuchOeffnet diese Datei

Linke Spalte: Jahre und Orte

Jahres- und Ortsfilter wirken zusammen: Jahr 2024 und Ort Rom zeigt nur die Rom-Fotos aus 2024. Der Ortsbaum passt seine Anzahlen an den gewaehlten Jahresfilter an.

Mitte: Bilder und Karte

Rechte Spalte: Einzelheiten

Zum gewaehlten Foto: Ort, Region, Land, Koordinaten, Hoehe, Aufnahmedatum (mit Quelle: EXIF, Dateiname oder Dateidatum), Kamera, Bild- und Dateigroesse sowie der vollstaendige Pfad. Ueber die Schaltflaechen lassen sich der enthaltende Ordner im Explorer und der Aufnahmeort in OpenStreetMap oeffnen.

Menue Extras

5. Netzwerkordner und NAS

Netzlaufwerke werden auf zwei Arten unterstuetzt:

\\NAS\Fotos\Urlaub        (UNC-Pfad, empfohlen)
Z:\Bilder                (verbundenes Netzlaufwerk)

Beide Schreibweisen funktionieren mit Netzwerkordner in der Werkzeugleiste. Ist der Pfad nicht erreichbar, meldet das Programm dies sofort, statt in einen langen Wartezustand zu laufen.

Worauf man achten sollte

6. Karte

Im Reiter Karte erscheint jeder Aufnahmeort als Kreis; seine Groesse richtet sich nach der Anzahl der Fotos. Ein Klick auf einen Kreis springt zurueck zur Bilderansicht und filtert auf diesen Ort. Der Jahresfilter wirkt auch auf die Karte.

7. Wo liegen die Daten?

Alle vom Programm erzeugten Dateien liegen ausserhalb Ihrer Fotosammlung. Seit Version 1.2 neben dem Programm:

<Ordner der EXE>\Daten\
   index.sqlite      Index der Fotos (Pfade, Koordinaten, Orte, Datum)
   orte.sqlite       heruntergeladene Ortsdatenbank
   vorschau\         zwischengespeicherte Vorschaubilder

Der Vorteil: Kopieren Sie den Programmordner auf einen anderen Rechner oder einen USB-Stick, ziehen Index und Ortsdatenbank mit. Auf dem neuen Rechner muss nichts erneut heruntergeladen und nichts neu eingelesen werden.

Wann das Programm ausweicht

Ist der Programmordner nicht beschreibbar – etwa bei einer Installation unter C:\Programme –, legt das Programm die Daten stattdessen hier ab:

%LOCALAPPDATA%\GeoLocation-BL\

Das entspricht in der Regel C:\Users\<Name>\AppData\Local\GeoLocation-BL. Welcher Ordner gerade benutzt wird, steht im Fenster Hilfe → Ueber.

Umstieg von Foto-GeoLocation

Beim ersten Start sucht das Programm nach Daten der Vorgaengerversion (%LOCALAPPDATA%\Foto-GeoLocation) und verschiebt sie in den neuen Datenordner. Der Index und die heruntergeladene Ortsdatenbank bleiben also erhalten; ein Vermerk uebernommen_aus.txt haelt fest, woher die Daten stammen. Enthaelt der neue Ordner bereits Daten, wird nichts angetastet.

Betrieb vom USB-Stick

Eine leere Datei namens portabel.txt neben der EXE erzwingt den Ordner Daten auch dann, wenn ein Schreibversuch scheitert.

8. Unterstuetzte Dateiformate

FormateStand
JPG / JPEGvollstaendig, auch GPS und Aufnahmedatum
PNG, TIFF, WEBPgelesen; GPS nur, sofern die Datei EXIF enthaelt
HEIC / HEIF (iPhone) nur mit dem Zusatzpaket pillow-heif (py -m pip install pillow-heif). Fehlt es, erscheinen die Dateien mit einem Hinweis in der Fehlerliste.
RAW (CR2, NEF, ARW, ORF, RW2, DNG) eingeschraenkt – ohne Zusatzpaket meist nicht auswertbar
Videos (MP4, MOV)in Version 1.0 nicht ausgewertet

Fehlt in einem Bild das Aufnahmedatum, versucht das Programm zuerst, es aus dem Dateinamen zu lesen (Muster wie IMG_20230715_... oder 2023-07-15...), und nimmt sonst das Dateidatum. Welche Quelle benutzt wurde, steht in den Einzelheiten rechts.

9. Wenn etwas nicht klappt

BeobachtungUrsache und Abhilfe
Fast alle Fotos landen unter „Ohne GPS-Daten“ Die Kamera hat keine Koordinaten gespeichert. Bei Smartphones muss die Standortermittlung fuer die Kamera-App aktiviert sein. Aeltere Digitalkameras haben in aller Regel kein GPS. Auch bearbeitete Bilder verlieren oft die GPS-Daten, ebenso Fotos aus Messengern (WhatsApp entfernt sie).
Ortsnamen sind ungenau Es ist noch die Notfallliste aktiv oder eine kleine GeoNames-Variante. Groesseren Umfang laden (cities1000) und Orte neu zuordnen, oder einzelne Orte online nachschlagen.
Reiter „Karte“ bleibt leer Kein PyQt6-WebEngine installiert oder kein Internet. Karte im Browser oeffnen benutzen.
Netzwerkordner wird nicht angenommen Erst im Explorer oeffnen und anmelden, dann erneut versuchen. Bei UNC-Pfaden beide Backslashes am Anfang schreiben.
Vorschaubilder erscheinen nur langsam Normal beim ersten Anzeigen, besonders ueber Netz. Sie werden gespeichert und sind beim naechsten Mal sofort da.
Programm startet gar nicht (Python-Fassung) Auf der Eingabeaufforderung py geolocation_bl.py --selftest ausfuehren. Der Selbsttest baut die Oberflaeche einmal auf, schaltet beide Farbthemen durch, waehlt einen Ort aus und meldet jeden Fehler mit Zeilennummer.
Programm verhaelt sich unerwartet Hilfe → Fehlerbericht anzeigen – siehe unten.

Fehlerbericht

Tritt im Programm ein Fehler auf, erscheint seit Version 1.1 ein Hinweisfenster mit der vollstaendigen Meldung, und das Programm laeuft weiter. Zusaetzlich wird alles gespeichert:

<Datenordner>\Fehlerbericht.txt    (Fehler mit Zeilennummern)
<Datenordner>\Absturzbericht.txt   (harte Abstuerze, z. B. in Qt)

Der Datenordner ist in der Regel Daten neben der EXE, sonst %LOCALAPPDATA%\GeoLocation-BL – der genaue Pfad steht unter Hilfe → Ueber.

Beide Dateien lassen sich ueber Hilfe → Fehlerbericht anzeigen oeffnen. Wenn etwas nicht funktioniert, ist dieser Text die entscheidende Information – besonders bei der EXE-Fassung, die kein Konsolenfenster hat.

10. EXE selbst erzeugen

  1. Alle Projektdateien in einen Ordner entpacken.
  2. build_GeoLocation-BL.bat per Doppelklick starten.
  3. Die Nachfrage nach PyQt6-WebEngine beantworten: j = eingebettete Karte, EXE etwa 130 MB groesser; n = schlanke EXE, Karte oeffnet sich im Browser.
  4. Ergebnis: dist\GeoLocation-BL.exe samt Handbuch.html. Den Ordner dist an den gewuenschten Platz kopieren und eine Verknuepfung anlegen.

Der Bauvorgang ruft py -m PyInstaller auf – nicht pyinstaller, weil dessen Scripts-Ordner unter dem Python Install Manager nicht im PATH liegt.

11. Technische Hinweise

Aufbau

DateiInhalt
geolocation_bl.pyBedienoberflaeche (PyQt6)
geoloc_core.pygesamte Fachlogik: EXIF, Geocoding, Datenbank, Ordnerdurchlauf – ohne jede GUI-Abhaengigkeit
geoloc_orte.pyeingebaute Notfall-Ortsliste, deutsche Laendernamen
test_geoloc.pyautomatisierte Tests der Fachlogik (py test_geoloc.py) – 43 Tests
PORTIERUNG.mdNotizen fuer eine spaetere Android-Fassung

So wird der Ort ermittelt

Die Ortsliste wird in ein Gitter aus 1-Grad-Zellen einsortiert. Zu einer Koordinate wird zunaechst die eigene Zelle durchsucht, dann ringfoermig nach aussen, bis kein naeherer Ort mehr moeglich ist. Die Entfernung wird nach der Haversine-Formel auf der Kugel berechnet. Das Verfahren kommt ohne Zusatzpakete aus und liefert nachweislich dasselbe Ergebnis wie ein vollstaendiger Vergleich mit allen Orten – nur um den Faktor 1.700 schneller.

Was in Version 1.0 fehlt

12. Haftungsausschluss und Datenquellen

Haftungsausschluss: Die Benutzung dieses Programms erfolgt ausschliesslich auf eigene Gefahr. Der Autor uebernimmt keinerlei Haftung fuer Schaeden jeglicher Art, insbesondere fuer Daten-, Vermoegens- oder Folgeschaeden, die aus der Verwendung oder der Nichtverwendbarkeit des Programms entstehen. Es wird keine Gewaehr fuer Richtigkeit, Vollstaendigkeit oder Aktualitaet der angezeigten Orts- und Kartendaten uebernommen. Eine Nutzung in sicherheitsrelevanten oder rechtlich bedeutsamen Zusammenhaengen ist nicht vorgesehen.

Datenquellen:

Hinweis zum Datenschutz: GPS-Daten aus Fotos sind personenbezogene Daten. Das Programm sendet Koordinaten nur dann ins Internet, wenn Sie die Online-Abfrage ausdruecklich starten oder die Karte oeffnen. Der Index bleibt auf Ihrem Rechner.