Google Standortverlauf visualisiert


Wer wie ich zu den „braven“ Google-Nutzern gehört und schon lange die diversen Dienste nutzt, hat natürlich bereits einen ansehnlichen Datenschatz auf den Servern des kalifornischen Unternehmens angehäuft. Darüber freut sich nicht nur Google (bzw. Alphabet Inc.), ich selbst kann diese Datensätze auch nutzen, z.B. um mir eine Karte meines Bewegungsverlaufs anzufertigen. Dazu benötige ich lediglich die freie Software QGIS und Geduld… je nachdem wie viele Jahre ich das Tracking bereits aktiviert habe. Bei mir haben sich zwischen September 2011 und September 2018 knackige 1,5 Millionen Punkte angesammelt. Unter Standortverlauf könnt ihr euch eure Historie nach Datum sortiert anschauen und überlegen, ob sich ein Download lohnt.

Google ermöglicht unter myaccount.google.com die Kontrolle sämtlicher Google-Produkte. Unter /privacy#takeout könnt ihr in diversen Archiv-Formaten Daten herunterladen, die sich hier angesammelt haben. Sei es zur Kontrolle was Google von euch weiß oder eben zur anderweitigen Verwendung. Fotos, Kommentare, Kontakte, Einkäufe, Fitnessdaten und der Standortverlauf. Rechts daneben muss der Schalter blau sein (die anderen möglichst alle abgewählt) und mit dem kleinen Haken nach unten kann das Dateiformat ausgewählt werden. Ich arbeite gerne mit KML, JSON geht aber auch. Unten auf Weiter klicken und auf der nächsten Seite bestimmen, ob das Archiv als Email an euch geht oder in Google Drive, die Dropbox etc geladen werden soll.

Ihr erhaltet ein Zip in dem sich (in meinem Fall) eine KML befindet, mit Millionen folgender Zeilen:

<when>2017-04-18T15:02:04Z</when>
<gx:coord>13.3557405 52.5454891 0</gx:coord>

Ein Zeitstempel, gefolgt von einer geographischen Koordinate. Da das komplette Datenpaket von einem <gx:Track> … </gx:Track> eingefasst ist, wird QGIS es als eine komplette Linie anzeigen. Sieben Jahre am Stück… Wer möchte, kann das Ganze mit Suchen/Ersetzen im Text-Editor umformatieren, also <Placemark><open>1</open><gx:Track> am Anfang und Ende entfernen und die Zeilen in folgendes Format bringen (und kann den ersten Schritt in QGIS überspringen):

<Placemark><description>2017-04-18T15:02:04Z</description>
<Point><coordinates>13.3557405,52.5454891,0</coordinates></Point></Placemark>

Wer darauf keinen Bock hat, arbeitet in QGIS an dem Problem. Der Vorteil an der obigen Methode ist, dass hier der Zeitstempel in der Punkte-Datei erhalten bleibt. Verbindet QGIS alles zu einer Linie, erhält diese Linie nur eine einzige Zeitangabe.

Wir müssen etwas vorsichtig sein was wir in QGIS mit so großen Datenmengen machen können und was nicht. 1,5 Millionen Punkte extrahieren, Linien zerteilen: kein Thema. Einfach mal eine Tabellenspalte anhängen und mit Daten füllen: nicht machbar, dauert unbeschreiblich lange (Stand: QGIS 3.2.3-Bonn). Wer auf ArcMap zugreifen kann, hat hier bessere Chancen.

Die unbearbeiteten Daten, inkl. aller Aufzeichnungslücken.

Die KML wird einfach in QGIS reingezogen und nach einiger Rödelei auch angezeigt. Wie gesagt, eine riesige Linie oder eben Punkte, je nach Vorbehandlung.

  • Menüpunkt Vektor > Geometrie > Stützpunkte extrahieren: Shape erzeugen, welches nur die Punkte beinhaltet (und ja, ich arbeite mit der deutschen Oberfläche, steinigt mich…)
  • Verarbeitung > Werkzeugkiste anschalten > Vektorgeometrie > Linien sprengen (explode lines): aus der originalen KML ein Shape mit Einzellinien erzeugen

Jetzt haben wir zwei Datensätze: einmal die vielen Punkte (wahlweise mit Datum oder ohne) und sämtliche Verbindungslinien, auch die kilometerlangen zwischen zwei Speicherpunkten (Gerät verliert den Empfang im Flugzeug oder in der U-Bahn oder die Ortung wird ausgestellt).

  • Werkzeugkiste/Verarbeitungswerkzeuge > Vektorauswahl > Nach Ausdruck extrahieren: wir wollen die Linien etwas filtern, darum die Linien-KML in dem Tool nutzen und als Ausdruck z.B. $length < 200 eintragen. Damit werden nur Linien unter 200m Länge extrahiert. Die Einheit in dem Ausdruck richtet sich nach dem verwendeten Ellipsoid, selbiger ist bei WGS84 tatsächlich in Meter definiert, nicht in Grad (früher war hier „&length < 0.02“ sinnvoll und bezog sich auf Grad, viel schwerer abzuschätzen).

Wenn ihr das Gefühl habt, dass die erzeugten Linien eure Bewegungen gut wiedergeben und weder besonders grobe Linien enthalten noch besonders große Lücken aufweisen, könnt ihr euch um die Darstellung kümmern. Ansonsten kann auch zweimal gefiltert werden. Ich habe mir inzwischen zwei Shapes gefiltert, einmal mit unter 200 Metern und einmal 200 bis unter 1000 Meter, die ich dann später transparenter unter den genaueren Linien einblendete ($length > 199 AND $length < 1000).

Zur Darstellung:

  • Projektion der Karte z.B. auf die klassische Web-Projektion Pseudo-Merkator stellen: in QGIS unten rechts auf „EPSG…“ klicken und oben in der Suche 3857 eintippen, unten erscheint Pseudo-Merkator – auswählen
  • in den Layereigenschaften der Linien unter Darstellung die Linienfarbe z.B. auf ein helles Orange stellen und die Breite auf 0,2mm stellen
  • unten unter Layerdarstellung den Mischmodus bei Layer und Objekt auf Multiplizieren stellen > einzelne Linien erscheinen dünn und hell, öfter besuchte Strecken werden dunkler
  • bei den Punkten ähnlich vorgehen und den Mischmodus auf Multiplizieren stellen
  • unter Symbol einen einfach Punkt wählen, ebenfalls orange setzen, mit z.B. 0,25mm Größe
  • In dem Beispiel rechts hatte ich die Punkte nach Alter klassifiziert: oben statt Single Symbol auf Graduated stellen und als Spalte „Zahl“ nutzen, die einfach vom ältesten bis zum aktuellsten Punkt durchzählt. Unten „Gleiches Intervall“ nutzen und z.B. zehn Klassen. Ein Farbverlauf von Hell- bis Dunkelrot lässt ältere Punkte heller erscheinen und zuletzt besuchte Orte deutlicher, auch wenn sie nicht so oft besucht wurden. Die Spalte gibts es jedoch inzwischen (2020) nicht mehr, müsstet ihr manuell erzeugen, was ewig dauert…

Als Kartenhintergrund eignen sich diverse Web-Layer. In der aktuellen QGIS-Fassung können die selbst per Erweiterung nicht so vielseitig hinzugefügt werden. Darum für diese Anleitung nur fix den von mir verwendeten StamenTonerLite-Graustufen-Layer als Datei. Einfach als Layer hinzufügen und evtl. in den Eigenschaften unter Transparenz mit einer eben solchen versehen (hab ich nicht gemacht). WMS googlen, wenn ihr was anderes wollt.

Kommen wir zum Layout. Unter Projekt > Layout Manager ein neues Layout anlegen.

  • links in der Werkzeugleiste „Karte zum Layout hinzufügen“ wählen und im Dokument aufziehen
  • während die Karte angewählt ist, rechts auf Elementeigenschaften gehen und unter Position und Größe das gewünschte Format einstellen, entweder in cm oder in Pixel, je nach Verwendungszweck
  • oben unter Haupteigenschaften wird der Maßstab und das Koordinatensystem (KBS) eingestellt: da Grad (Vorgabe WGS84, EPSG 4326) selten gut aussieht, besser rechts auf die Gitterkugel (KBS) klicken und Pseudo Mercator raussuchen (Filter: 3857)
  • Vorschau aktualisieren und mit dem Werkzeug (linke Leiste) „Inhalt verschieben“ den Kartenausschnitt setzen
  • Wenn die Karte die richtigen Ausmaße hat, kann im Layout-Tab (rechts) unter „Layout- und Inhaltsgröße anpassen“ auf „Layoutgröße anpassen“ geklickt werden. Das Dokument passt sich dann allen Elementen an, in dem Fall also der Kartengröße.
  • Im gleichen Tab muss unter Export die gewünschte dpi (Auflösung, also dots per inch) eingegeben werden. Bei 300dpi wird ein Bild ausgegeben, dass in Verbindung mit der unter Elementeigenschaften eingestellten Größe genügend Pixel für ein Druckprodukt bietet. Wenn das Bild nur an einem klassischen Bildschirm angezeigt wird, könnten hier 96dpi eingestellt werden.
  • Die Maßstabsleiste, Text und Bilder können ebenfalls über die Werkzeugleiste ins Dokument eingefügt werden.

Das wars. Projekt > Export als Bild oder PDF wählen und fertig. Für den schicken blau auf schwarzem Hintergrund Effekt habe ich das Bild im Bildbearbeitungsprogramm meiner Wahl einfach invertiert.

Der Fall des auffällig beweglichen Smartphones. Ein Kollege hat seinen Standortverlauf genau wie ich bearbeitet und ungewöhnliche Ausreißer bemerkt.  An etlichen Stellen sprang eine eigentlich genau auf der Straße verlaufende Linie immer wieder zu seiner Wohnung, hinterließ dort einen Punkt und ging dann an der Straße weiter. In den originalen Punkt-Daten war dieses Phänomen auch zu beobachten. Drei Punkte an der Straße, ein Punkt an der Wohnung, wieder einige Punkte an der Straße. Die Zeiten liefen von Punkt zu Punkt sauber weiter, als würde das Handy immer den Standort wechseln.

Wir wissen bis heute nicht klar warum das so ist, unsere beste Theorie lautet, dass sein Tablet zu Hause, bei dem er mit dem gleichen Google-Konto angemeldet ist, ab und an seine WLAN-Position sendet und Google die Unterscheidung der beiden Geräte, also welcher Punkt zu welchem Gerät gehört, in einem separaten Datensatz vorhält bzw. uns beim Export nicht mitgibt.

Wie auch immer, um das Problem zu lösen, haben wir den Punkte-Datensatz bearbeitet (Digitalisierungswerkzeugleiste > Bearbeitungsstatus umschalten (der Stift)), manuell mit dem kreisförmigen Selektier-Werkzeug einen guten Satz Punkte um die Heimadresse herum selektieren und löschen. Bearbeitung beenden und speichern. In den Verarbeitungswerkzeugen > Vektorerzeugung „Punkte Zu Weg“ wählen und die übrigen Punkte anhand des Sortierungsfelds „Zahl“ wieder zu einer Linie verbinden und oben bei „Linien sprengen“ weitermachen.


Über Martin Vigerske

Hat 2005 sein Diplom und 2008 seinen Master in Kartographie und Geoinformation an der Beuth Hochschule für Technik Berlin (bzw TFH) beendet und arbeitet dort seit 2006 als Technischer Mitarbeiter im Labor für Geomedien.