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

import pandas
import matplotlib.pylab as plt
import seaborn
import folium

Laden wir mal das exportierte File in eine Pandas Tabelle

locations = pandas.read_csv('journey.csv')

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

locations.describe()
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.

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

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.

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

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

cd ~/Dev
git clone git@github.com:mapillary/mapillary_tools.git

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

python ~/Dev/mapillary_tools/python/geotag_from_gpx.py ~/Pictures/GoPro/2017-08-04/HERO4 Session 1/Time Lapse 3/ ~/Desktop/thunbern.gpx

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.

export MAPILLARY_USERNAME='habi'
MAPILLARY_PERMISSION_HASH='GanzVieleBuchstaben'
export MAPILLARY_SIGNATURE_HASH='NochmalVieleBuchstaben'

Dann geht das hochladen der Bilder flink und automatisch mit

python ~/Dev/mapillary_tools/python/upload_with_authentication.py ~/Pictures/GoPro/2017-08-04/HERO4\ Session\ 1/Time\ Lapse\ 
3/

(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.