Wo war ich im 2019

Hier einer der Posts zu meinem 2019.
Eine Darstellung meiner Aufenthaltsorte im vergangenen Jahr.
Dieser und andere Posts sind unter dem Tag jahresrückblick19 zu finden.

Wie letztes Jahr lief das ganze Jahr über WHIB im Hintergrund auf meinem iPhone SE.
Das heisst, dass ich jetzt ca. 18000 Datenpunkte habe, wo sich mein Telefon (und dadurch mit hoher Wahrscheinlichkeit ich) im 2019 befunden hat.

Im 2109 war ich drei Mal ausserhalb der Landesgrenzen.
Im Mai war ich an einer Konferenz in Belgien und habe dort die Geschichte mit den Zebrafischen präsentiert, über die ich hoffentlich bald mehr schreiben kann.
Auf der Karte, die ganz unten in diesem Post eingebunden ist, zieht sich die Zugfahrt dorthin hübsch als Linie von Bern bis Mechelen in Belgien.
Im Juli waren wir mit einem coolen, gemieteten Camper in der Umgebung des Comer See unterwegs.
Im Oktober fuhren wir mit dem Zug nach Rapallo und haben den sprichwörtlichen Steinwurf weit vom Meer weg übernachtet, ein paar entspannte Tage an der ligurischen Küste verbracht, bevor wir auf dem Rückweg noch ein paar Tage in Genua die spannende Stadt erkundet haben.

Von Mechelen in Belgien bis Prato (dem Leuchtturm unter Portofino) habe ich also ca. 750 km in Nord-Süd-Richtung gemacht.
Im Durchschnitt bin ich fast zuhause geblieben, nämlich in Brenzikofen :)
Ende November habe ich trotz kaputtem Knie die SkiTelemark-Saison gestartet.
Die Bergstation des Sessellifts auf den Furgsattel war der höchste Punkt, an dem ich mich im 2019 befunden habe.

Unten ist die Heatmap meiner Positionen im 2019 eingebunden.
Die komplette Analyse ist hier auf GitHub zu finden, falls jemand dies für sich nachbauen will.
Weil die Originaldatei mit meinen Positionen auch die genauen Zeiten enthält, liefere ich die aus datenschutztechnischen Gründen nicht mit.
Eine kommplette Version meiner Analyse als Jupyter-Notebooks mit allen Karten ist (zur Ansicht) hier zu finden.

Wo war ich im 2018?

Hier der nächste meiner Posts zum 2018. Eine Darstellug, wo ich mich aufgehalten habe. Dieser und andere Posts sind unter dem Tag jahresrückblick18 zu finden.

Seit OpenPaths ganz tot ist, speichert mein Telefon seine Position mit WHIB. Dank einer 2$-Premium-Funktion kann ich die Positionsdaten als CSV-Datei exportieren und diese dann mit etwas Python analysieren und darstellen.

Im 2018 war ich eher wenig (ausserhalb der Schweiz) mobil. Wenn mensch den Osterausflug nach Konstanz zur Schweiz zählt, war ich “nur” im Herbst in Sardinien (Ferien) und Anfangs Dezember in Heidelberg (Konferenz) ausserhalb der Landesgrenzen.

Die 13843 Datenpunkte ansprechen einer Position ca. alle 90 Minuten (stimmt nur halb, denn mein Telefon ist in der Nacht immer ausgeschaltet). Vom nördlichsten Punkt am Bahnhof Mannheim bis zum südlichsten Punkt am Strand von Porto Giunco an der Südspitze von Sardinien sind es Luftlinie ca. 1151, vom westlichsten Punkt (Yverdon) zum östlichsten (ebenfalls in Sardinien) wären es 242 km, wenn die Punkte denn auf der gleichen geografischen Höhe wären…
Damit wären auch die Extrem-Positionen auf der Kompassrose geklärt.

Der höchste Punkt war am Ausgang der Tunnelpiste beim Bettmerhorn, bei 2641 müM. Im Durchschnitt war ich im Kandertal bei Kandergrund, im Median habe ich mich im Weissenbühl befunden.

Die Code ist hier auf GitHub zu finden, oder inklusive aller Kartenansichten hier im nbviewer.

Da ich aus offensichtlichen Gründen nicht die gesamte Positions-Historie beilegen will, läuft das Notebook nicht in Binder. Unten ist eine sogenannte Heatmap meiner Position übers ganze 2018 zu sehen, direkt als HTML-Code aus dem Notebook exportiert. Es kann also etwas dauern, bis dein Browser oder Feed-Reader das Ding anzeigt…

Wo war ich im 2017

Anfangs Jahr ist ein guter Zeitpunkt, um aufs vergangene Jahr zurückzublicken. Das heisst, es gibt mal wieder ein paar nerdige Blogeinträge. Der Rest (wenn er dann kommt) ist unter dem Tag jahresrückblick17 zu finden.

Da ich erst Mitte 2017 herausgefunden habe, dass OpenPaths tot ist (die Daten können nicht mehr exportiert werden, auf Mails und Twitter-Nachrichten reagiert niemand), habe ich mich nach Alternativen umgesehen. Leider erst ab Juli, daher fehlen die Daten der ersten Jahreshälfte…
Nachdem Moves ausgeschieden ist, weil es zu Facebook gehört, und Arc ausgeschieden ist, weil die Batterielaufzeit des Telefons massiv verringert wurde, bin ich bei WHIB gelandet. Dank einem 2$-premium-Feature können alle aufgenommenen Daten als CSV exportiert werden, das macht es möglich, mit ein bisschen Python zu schauen, wo ich mich (in der zweiten Hälfte) 2017 rumgetrieben habe, als ich das Telefon dabei hatte.

Dazu brauchen wir ein paar Bibliotheken

[code lang=python]
import pandas
import matplotlib.pylab as plt
import seaborn
import folium
[/code]

Laden wir mal das exportierte File in eine Pandas Tabelle

[code lang=python]
locations = pandas.read_csv('journey.csv')
[/code]

Das sieht doch schon mal ganz gut aus, wir haben nämlich 6233 Datenpunkte.

[code lang=python]
locations.describe()
[/code]

Crumb Latitude Longitude Altitude (in metres) Accuracy (in metres)
count 6233.000000 6233.000000 6233.000000 6233.000000 6233.000000
mean 3116.000000 46.932620 7.437850 533.149527 125.461736
std 1799.456446 0.067238 0.115774 159.792018 596.847400
min 0.000000 46.434918 7.026148 -43.000000 0.000000
25% 1558.000000 46.935265 7.417971 545.000000 47.000000
50% 3116.000000 46.937312 7.424690 555.000000 65.000000
75% 4674.000000 46.948112 7.433138 558.000000 70.000000
max 6232.000000 47.398817 8.577597 2003.000000 23964.000000

Mit etwas Hilfe von Folium können wir dann diese gut 6000 Datenpunkte auf einer schwarz-weissen Karte darstellen. Damit überhaupt ‘richtig’ etwas zu sehen ist, machen wir eine sogenannte Heatmap, dann ist das Ganze etwas übersichtlicher.

[code lang=python]
from folium.plugins import HeatMap
xy = [[row['Latitude'], row['Longitude']] for index, row in locations.iterrows()]
m = folium.Map(location=[locations['Latitude'].mean(),
locations['Longitude'].mean()], tiles='Stamen Toner', zoom_start=9)
folium.plugins.HeatMap(xy).add_to(m)
m
[/code]

Schlussendlich sieht das dann so aus; da war ich überall in der zweiten Hälfte vom 2017. Rein- und rauszoomen ist erlaubt und erwünscht :)

1000e Bilder für OSM bereitstellen | Mapillary mit GoPro Hero 4 Session

Vor einiger Zeit hab ich ja schon mal darüber geschrieben, wie mensch die Welt kostenloses Kartenmaterial verbessern kann.

Da das Zusammenspiel der Mapillary-App mit der GoPro Hero 4 Session nicht ganz problemfrei ist habe ich letzthin beim Velopendeln ‘was neues versucht.

Wir waren ja eine Woche mehr oder weniger in den Ferien am Thunersee, ich bin dann doch zweimal von dort aus arbeiten gegangen, einmal mit A. im Zug (sie ging in die Kita), einmal mit dem Velo.
Mit der Zeitraffer-Funktion der Kamera habe ich eine gute Stunde Fotos vom Lenker aus gemacht, dazu mit der Aktivitäts-Uhr die Positionen aufgenommen.

Da der korrekte Transfer der gut 2000 Bilder zu Mapillary doch nicht ganz einfach war, beschreibe ich hier den Ablauf, auch damit ich das das nächste Mal nachschauen kann [1].

Als erstes muss mensch das Garmin TPX-File in ein normales GPX-File umwandeln (Das File landet übrigens dank Tapiriik automatisch auf meinem Computer).
Dank GPSBabel und untenstehendem Kommando geht das ganz easy.

[code lang=bash]
gpsbabel -i gtrnctr -f ~/Dropbox/Apps/tapiriik/2017/08017.08.04.Vom\ Ländli\ us\ ga\ schaffe_Cycling.tcx -o gpx -F ~/Desktop/thunbern.gpx
[/code]

Jetzt müssen wir die Fotos vorbereiten, d.h. korrekt geotaggen und für Mapillary vorbereiten.

[code lang=bash]
cd ~/Dev
git clone git@github.com:mapillary/mapillary_tools.git
[/code]

lädt die Mapillary Tools auf den Kompi. Theoretisch würde das geotag_from_gpx.py-Skript das geotaggen erledigen. Das Skript hat aber einen Fehler, also muss mensch diesen erst korrigieren.

Dann klappt das Geotagging wunderbar mit

[code lang=bash]
python ~/Dev/mapillary_tools/python/geotag_from_gpx.py ~/Pictures/GoPro/2017-08-04/HERO4 Session 1/Time Lapse 3/ ~/Desktop/thunbern.gpx
[/code]

Zum hochladen der Bilder müssen zuerst sogenannte Umgebungs-Variabeln gesetzt werden. Die genauen Werte für deinen User-Account sind in deinen Mapillary settings zu finden und landen in deinem ~/.bashrc.

[code lang=bash]
export MAPILLARY_USERNAME='habi'
MAPILLARY_PERMISSION_HASH='GanzVieleBuchstaben'
export MAPILLARY_SIGNATURE_HASH='NochmalVieleBuchstaben'
[/code]

Dann geht das hochladen der Bilder flink und automatisch mit

[code lang=bash]
python ~/Dev/mapillary_tools/python/upload_with_authentication.py ~/Pictures/GoPro/2017-08-04/HERO4\ Session\ 1/Time\ Lapse\
3/
[/code]

(Wenigstens theoretisch, ich musste die Vorgänge geotagging und hochladen ein paar Mal wiederholen, bis alle Bilder hochgeladen waren.)

Das Ganze sieht dann in etwa so aus.

Und die Fotos ermöglichen es dann dem geneigten OSM-Nutzer oder der OSM-Nutzerin, anhand der Fotos die OpenStreetMap zu verbessern, sei das z.B. um einen neuen Kreisel einzuzeichnen oder generell ein paar Verbesserungen zu machen.

[1]: Oder mit den insgesamt knapp 3000 Photos von der Hallo Velo-Runde wiederholen konnte.

Where was I in 2016

Hier einer weiterer Post zum Rückblick aufs 2016. Die anderen sind unter dem Tag jahresrückblick16 zu finden.

Weil ich dieses Jahr viel mehr mit Python gearbeitet habe, habe ich meinen Geodaten-Jahresrückblick von R in Python transferiert. In einem Jupyter-Notebook arbeitet es sich einfach viel schneller und iterativer :)

Leider habe ich es nicht geschafft, den Markdown- oder HTML-Export der “Analyse” so klein zu machen, dass dieser von WordPress-Editor geschluckt wird (> 4 MB ASCII-Text ist scheinbar zuviel).
Deshalb sind die Details meines Bewegungs-Profils von 2016 (in Englisch) entweder hier auf GitHub, hier mit den Jupyter Notebook Viewer oder unten eingebunden zu finden.