gps status: ok!




gps status: ok!

Originally uploaded by habi.

wusst gar nicht mehr, dass ich aufgrund rouges tipp mal trailrunner
installiert hab: der öffnet .gpx-dateien problemlos > die blaue
kringelei unten war mein heutiger nami.
jetzt treff ich nina, drum wird nicht weiter rumgespielt.

gps-logger-sammelbestellung

am montag abend haben wir unter anderem auch über gps-logger gesprochen. this hat das dann sehr kurz darauf schön umgesetzt, und jetzt will ich das auch probieren! (eigentlich wollt’ ich schon zu kurierzeiten immer mal einen tag mit gps rumvelölen, aber eben…).

brauchen tut’s dazu ein gerät, welches das gps-signal aufzeichnet und speichert, gpsbabel und einen mac. mac habe ich, gpsbabel ist frei verfügbar, jetzt müsst also noch so ein gps-logger her.
nach längerem rumsurfen habe ich rausgefunden, dass das Wintec WBT-200 zusammen mit gpsbabel genau meinen wünschen (lange batterielaufzeit und klein) entspricht.
weiter habe ich herausgefunden, dass buygpsnow dieses kästchen für 60$ verkauft. da das verschicken in die schweiz immerhin 27$ kostet, werfe ich hier die frage in die runde, ob sich jemand am kauf anschliessen will, ich würd dann eine sammelbestellung aufgeben und wir könnten uns die versandkosten aufteilen.
ich werde einige zeit (ca. 1 woche) warten, bevor ich für mich sowieso so ein gerät bestelle, bei interesse an sammelbestellung reicht ein formloser kommentar im kommentarfeld unten oder eine sonstige nachricht an mich, den rest klären wir dann per email, ok?

die geräte sind heute (20. September, 2007) abend bestellt worden:
chm und mm: wbt201
ich, tobi und bruni: wbt200
Buygpsnow

Technorati Tags: , , ,

Recommended Readings vom Oktober 2023

Im letzten Monat las ich folgende Texte und fand diese gut:

  • The Age of the Grift Shift (tante.cc) : Jürgen Geuter beschreibt gut, wie manche Firmen und Individiuen wie Fahnen im Wind stehen. Vorgestern Crypo, Gestern Metaverse, Heute künstliche Intelligenz.
  • E-Bikes Are Booming—And Virtually Unregulated. Will This Lawsuit Make Them Safer? (bicycling.com) : In den USA ist das mit den Elektrovelos noch etwas anders als bei uns. Die Töffli-Artigen Velos können auch gefährlich werden, dieser Text beschreibt einen Todesfall mit eine Mädchen, noch knapp nicht Teenagerin.
  • Zum Wochenende: Road Mapper (gnulinux.ch) : Bei Google darf mensch sich bewerben, um ehrenamlich an Google Maps mitzuarbeiten. Die Zeit ist besser in OpenStreetMap investiert, da profitieren schlussendlich wohl mehr Menschen davon.
  • Organic Maps: An Open-Source Maps App That Doesn’t Suck (hardfault.life) : Zum obigen Artikel; Falls du Organic Maps noch nicht kennst, erklärt dir Evan Grove in diesem Text, wie du mit Organic Maps und OpenStreetMap-Daten navigieren kannst. Ich verwende das Ding immer im Ausland, oder auch mal in den Bergen, wenn mein Handy offline ist.
  • Sünneli-Aufgang in der rechts­extremen Szene (republik.ch) : Die SVP zeigt offene Sympathien für organisierte Rechts­extreme, nachdem sie sich zuvor jahrelang zumindest offiziell distanziert hat. Sogar Partei­präsident Marco Chiesa posiert für ein Foto. Normal ist daran nichts.
  • The Skyscraper That Could Have Toppled Over in the Wind (newyorker.com) : Was ist der schlimmste Albtraum eines Ingenieurs? Zu erkennen, dass die Stützen, die er für einen Büroturm entworfen hat, fehlerhaft sind, der Turm einstürzen könnte und dass die Hurrikansaison naht.
  • I wired up my bike’s GPS to order me pizza during a gravel race ? (steele.blue) : Matt Steele hat bei einem 480 km (!) Gravelrennen dafür gesorgt, dass an einem Streckenpunkt automatisch eine warme Pizza auf ihn wartet. Leider hat’s nur halb funktioniert, also muss Matt das Rennen dieses Jahr wieder fahren.
  • What Happened When Oregon Decriminalized Hard Drugs (theatlantic.com) : Drogen entkriminalisieren kommt nicht immer so gut wie in Portugal.
  • The Mystery of the Bloomfield Bridge (tylervigen.com) : Ein hübsches kleines Detektivstück über die Brücke #9078 irgendwo im Nirgendwo von Minnesota.
  • The B Lane Swimmer (holly.witteman.ca) : In der neueröffneten Schwimmhalle Neufeld haben wir nicht mehr 3 Bahnen im Training (auf der ich in der B-Lane war), sondern ‘nur’ noch 2 50er-Bahnen. Ich versuche trotzdem weiterhin ein B-Lane Schwimmer zu sein.
  • Datenschutz, der nur ein bisschen wehtut (republik.ch) : Das revidierte Schweizer Datenschutz­gesetz schafft neue Verbindlichkeiten bei der IT-Sicherheit. Aber dieses Gesetz allein bringt noch keinen echten Fortschritt.

Im letzten Monat sah ich folgende Videos und fand diese gut:


Von Junge Tat bis Mass-Voll: Unter dem Begriff «Freiheit» treffen sich in Volketswil am «Freedom-Festival» Verschwörungstheoretiker, Freiheitskämpfer, Personen mit Verbindungen zu rechtsradikalen Gruppierungen und sogar Nationalratskandidaten.
Sie alle sehen die Freiheit in der Schweiz in Gefahr.
Was bedeutet es, sich mit Rechtsradikalen zu vernetzen und ab wann wird eine rote Linie überschritten?


Ich schaue nicht mehr so viele Colin Furze-Videos wie auch schon.
Aber dieses ist mal wieder sehr lustig.

Recommended Readings vom Juli und August 2022

Anfangs August waren wir irgendwo in der Region des Nationalparks, irgendwie komplett offline und ich hab’ die ‘recommended readings’ nicht generiert.
Deshalb hier die guten Texte aus Juli und August, viele im Aufstelldach des Campers auf dem Kindle gelesen:

Im letzten Monat sah ich folgende Videos und fand diese gut:


Unglaublich elegante Art und Weise, 3D-Visualisierungen zu machen.
Brauch ich grad’ fürs nächste Manuskript :)


Eine kleine Lerneinheit über Bildkompression.


Wenn ich mal eine Gartenschaufel brauche, dann bestelle ich die bei Zion Industrial Co.


  1. Ehemaliger Mapillary-Scheff und neu bei Meta in Tsüri. Letzthin an einem digitalen OSM-Chat erstmals chli zusammen gesprochen. Cooler Typ. 
  2. Das ist auch gut so, versteht mich richtig. 

Recommended Readings vom Januar 2020

Im letzten Monat las ich folgende Texte und fand diese gut:

Im letzten Monat sah ich folgende Videos und fand diese gut:


Eine (digitale) Kamera kann mensch auch selber bauen.
Ultracool!

Wie die radikale Rechte (ihre) Politik gamifiziert.


Autonomes Fahren am Limit. In stylischer Hülle. Der Text dazu ist auch lesenswert.


Die Engländer werden in Tokyo ein wildes Ding fahren.


Danny MacAskill in der Turnhalle.


Lucas Brunelle ist berühmt-berüchtigt für seine KurierVelo-Videos.
Hier ein Zusammenschnitt von ein paar wilden Szenen.


Spass (und coole Musik) mit Siri und Tablas.

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…

Privacy Policy

Who we are

Our website address is: https://habi.gna.ch.

What personal data we collect and why we collect it

Comments

When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

Media

If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

Contact forms

Cookies

If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

If you have an account and you log in to this site, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

Embedded content from other websites

Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracing your interaction with the embedded content if you have an account and are logged in to that website.

Analytics

Who we share your data with

How long we retain your data

If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

What rights you have over your data

If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

Where we send your data

Visitor comments may be checked through an automated spam detection service.

Your contact information

Additional information

How we protect your data

What data breach procedures we have in place

What third parties we receive data from

What automated decision making and/or profiling we do with user data

Industry regulatory disclosure requirements

Plugin: Smush

Note: Smush does not interact with end users on your website. The only input option Smush has is to a newsletter subscription for site admins only. If you would like to notify your users of this in your privacy policy, you can use the information below.

Smush sends images to the WPMU DEV servers to optimize them for web use. This includes the transfer of EXIF data. The EXIF data will either be stripped or returned as it is. It is not stored on the WPMU DEV servers.

Smush uses a third-party email service (Drip) to send informational emails to the site administrator. The administrator’s email address is sent to Drip and a cookie is set by the service. Only administrator information is collected by Drip.

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.

Mein 19. GP

Am Samstag bin ich zum 19. Mal den GP gerannt. Dank etwas intensiviertem Training gegenüber anderen Jahren habe ich mein Ziel voll und ganz erreicht: Wenn möglich unter 1:15 und danach noch einen gemütlichen Abend haben.

Weil ich beim Graben in meinen Daten eine XLS-Datei mit einer Zusammenstellung von alten GP-Zeiten gefunden habe und mit der GP-Resultate-Datenbank diese ergänzen konnte, habe ich das Ganze versucht etwas schön darzustellen.

Das Resultat daraus ist untenstehendes Bild, die Zeiten aller meiner bisher gerannten GPs.
Von links nach rechts die Zeit, von unten nach oben die Jahre.

Auf ein nächstes, 20. Mal!

Recommended readings: 4. April 2017

Im letzten Monat las ich folgende Texte und fand diese gut:

Im letzten Monat sah ich folgende Videos und fand diese gut:

Making of: Neujahrskärtli 2017

Wie letztes Jahr, für die, die’s wunder nimmt. Das ‘Making Of’ meines Neujahrskärtlis.

Zutaten:
– Ein Fieldpapers-Ausdruck, Blofi und Radiergummi.
myTracks zum Aufzeichnen von GPX-Tracks, Velo und zwei Mittagspausen.

Zubereitung:
– Etwas Python-Code in einem Jupyter Notebook.
– Das Endresultat zusammen mit einer Rückseite aus ein paar Emojis und etwas Text auf Postkarten mit WebStamp drucken und ab die Post.

Resultat:
– Happy New Year: davidhaberthür.ch/2017

Wer sich für die komplette Entstehungsgeschichte interessiert, findet die ganze Geschichte in diesem GitHub-Repository.

Where have I been in 2015

Hier ein weiterer meiner Jahresrückblick 2015-Posts. Die anderen sind unter dem Tag jahresrückblick15 zu finden.

Weil das letzte Mal schon auf Englisch, hier grad wieder.


I’ve updated the RMarkdown-document of the “analysis” of my yearly Geodata a bit. Namely, I parametrized the shizzle out of it, switched to the freely available Stamen maps (based on OpenStreetMap data) and – something which I’m quite prowd of myself – implemented a function to automagically extract the name of a location based on its latitude and longitude from the GeoNames database.

The original file with the full code can be found either on GitHub or on RPubs, the result is pasted below.


Introduction

I tracked my location data with OpenPaths since the beginning of 2014.
OpenPaths comes as an application for your phone, which tracks its location, uploads it to the OpenPath servers.
You can then donate your data for scientific research and also look at the data yourself, which is what we do here.

To be able to do this, we grab a .CSV file with the location data.
Log in to OpenPaths, and click on CSV under Download my data, which gives you a comma separated list of your location data, which can then visualize with R, which is what we’ve done here.

Data

We want to plot the location points on a map, which we can do with the wonderful ggmap library.
To get the place names from the GeoNames Web Services, we need the RCurl library, to parse the output XML, we obviously need the XML library.

First, we load the data file and then remove all the datapoints where we have an altitudes of ‘0’ (which is probably a fluke in the GPS data)
Obviously, we only want to look at this years data, we thus save a subset of the dataset for further processing.

[code lang=r]
library(ggmap)
library(RCurl)
library(XML)
data <- read.csv("/Users/habi/Dev/R/openpaths_habi.csv")
data$alt[data$alt == 0] <- NA
whichyear <- 2015
thisyear <- subset(data, grepl(whichyear, data$date))
[/code]

Since we’re going to use it often, we’re making a function to grab the name of a place based on its latitude and longitude.

[code lang=r]
geoname <- function(lat,lon){
# Grab GeoNames XML from their API, according to location
txt = getURL(paste0("http://api.geonames.org/findNearbyPostalCodes?lat=", lat, "&lng=", lon, "&username=habi", collabse = NULL), .encoding = 'UTF-8', .mapUnicode = TRUE)
# Parse XML tree
xmldata <- htmlTreeParse(txt, asText=TRUE)
# Extract <name> node (with empirically found location)
Name <- xmldata$children[[2]][[1]][[1]][[1]][[2]][[1]]
# Since we're only using the name as string, we can return it as such
return(unlist(Name)[[2]])
}
[/code]

Then, we display a summary of the geographical points.

[code lang=r]
summary(thisyear$lat)
[/code]

[code lang=text]
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 45.92 46.94 47.01 47.14 47.45 50.05
[/code]

[code lang=r]
summary(thisyear$lon)
[/code]

[code lang=text]
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.562 7.432 7.695 7.826 8.211 9.999
[/code]

[code lang=r]
summary(thisyear$alt)
[/code]

[code lang=text]
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 84.85 363.10 533.00 541.90 554.20 3400.00 228
[/code]

In 2015 I was in the mean somewhere close to Auswil.
I’ve lived at 541.9 m AMSL in the mean.

The .csv file also contains information about the iPhone we’ve used to collect the data.
Let’s look at these.

[code lang=r]
summary(thisyear$device)
[/code]

[code lang=text]
## iPhone4,1 iPhone6,2
## 0 8290
[/code]

We see that in 2015 I have only used one phone, my iPhone 5S (iPhone6,2) and went through 9 different iOS version numbers.

[code lang=r]
summary(thisyear$os)
[/code]

[code lang=text]
## 7.0.4 7.0.6 7.1 7.1.1 7.1.2 8.0 8.0.2 8.1 8.1.1 8.1.2 8.1.3 8.2
## 0 0 0 0 0 0 0 0 0 614 933 347
## 8.3 8.4 9.0 9.1 9.2 9.2.1
## 1653 374 1365 1808 997 199
[/code]

If we assume that I’ve tracked my location consistently, then I’ve used iOS 9.1 the longest, with 1808 saved data points.

Location data

Extremes

Interesting points in my yearly location data:

  • The minimal and maximal latitudes of 45.917 and 50.047, South and North respectively.
  • the minimal and maximal longitudes of 6.562 to 9.999, East and West respectively.
  • as well as the altitude, which ranges from 84.8 m AMSL to 3399.9 m AMSL.

We can get the extreme points out of the data pretty easily.
To do so, we subset the data depending on the value we want to have, construct a Location from these points, grab the map tile from that location, put a marker on top of it and display this is an image.

For the northmost point, this goes like so:

[code lang=r]
NLocation = c(lon=subset(thisyear, lat==max(thisyear$lat))$lon[1],
lat=subset(thisyear, lat==max(thisyear$lat))$lat[1])
mapImage<- get_map(location= NLocation, source='stamen', maptype='toner-hybrid', zoom=10)
ggmap(mapImage) +
geom_point(aes(x = subset(thisyear, lat==max(thisyear$lat))$lon[1],
y = subset(thisyear, lat==max(thisyear$lat))$lat[1]),
alpha = .125,
color="darkred",
size = 10) +
ggtitle(paste("Northmost point in", whichyear))
[/code]

North

The northmost point in 2015 is in Kiedrich, which is true.
Even though I’ve not been in Kiedrich exactly, my mobile phone was probably connected to a tower there.
I spent two days in Ingelheim in January, at the International Masters competition in Swimming, which is close by.

The rest of the extremes can be extracted accordingly.

East

The most eastern point was in the Rehmen, during the first vacation with our (then) newborn daughter in the Bregenzer Wald.

South

The most southern point was in Breuil, while skiing in Zermatt.

West

The most western point was in St-Sulpice VD, during a meeting at the EPFL in Lausanne for working on the GlobalDiagnostiX project.

High

The highest point in 2015 at 3399.9 m AMSL was close to Zermatt on the Furgsattel.

Low

The lowest point at 84.8 m AMSL was in Gau-Algesheim, close to Ingelheim.

Where was I in Switzerland?

To plot the obtained data on a map, we have to center the resulting map location.
Since I only want to show the data points in Switzerland, we center the map on that.
Afterwards, we can simply plot all the thisyear geolocation points on top of that image, and you can see where I was in Switzerland in 2015.

[code lang=r]
HomeBase <- get_map(location= 'Switzerland', source = 'stamen', maptype='toner-hybrid', zoom=8)
AllPoints <- data.frame(lon=thisyear$lon, lat=thisyear$lat)
ggmap(HomeBase) + geom_point(aes(x = lon, y = lat),
data = AllPoints,
size = 3,
alpha = 0.125,
color="darkred") +
ggtitle(paste("Where was Habi in Switzerland in", whichyear))
[/code]

Switzerland

Where was I in 2014

This is the first second of some of my look back on 2014 posts. To see the other ones, take a look at the jahresrückblick14-tag

Introduction

I tracked my location data with OpenPaths since the beginning of 2014. OpenPaths comes as an application for your phone, which tracks its location, uploads it to the OpenPath servers, where you can donate your data for scientific research, and look at the data yourself.

To do this, we grab a .CSV file with the location data. Log in to OpenPaths, and click on CSV under Download my data, which gives you a comma separated list of your location data, which can then visualize with R, which is what we’ve done here.

Data

We want to plot the location points on a map, which we can do with the wonderful ggmap library. First, we load the CSV file and display a summary of the data.

[code lang=r]
library(ggmap)
data summary(data$lat)
summary(data$lon)
summary(data$alt)
[/code]

[code lang=text]
## lat
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 34.6 46.9 47.2 46.0 47.5 53.6

## lon
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.76 7.50 8.20 21.80 8.22 141.00

## alt
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -48 353 380 463 546 2670
[/code]

In 2014 I was somewhere in woods somewhere in Romania in the mean, and somewhere in Beromüster as the median.

[code lang=r]
summary(data$device)
summary(data$os)
[/code]

[code lang=text]
## device
## iPhone4,1 iPhone6,2
## 13453 1093

## os
## 7.0.4 7.0.6 7.1 7.1.1 7.1.2 8.0 8.0.2 8.1 8.1.1 8.1.2
## 829 261 2238 2065 1551 145 6095 479 449 434
[/code]

We see that in 2014 I changed from an iPhone 4S (iPhone4,1) to an iPhone 5S (iPhone6,2) and went through 10 different iOS version numbers.

Location data

Extremes

Interesting points in our data are

  • The minimal and maximal latitudes of 34.601 and 53.5866, South and North.
  • the minimal and maximal longitudes of 4.762 to 141.1744, East and West.
  • as well as the altitude, which ranges from -48 AMSL to 2671 AMSL.

We can get the extreme points out of the data pretty easily. To do so, we subset the data depending on the value we want to have, build a Location from these points, grab the map from that location, display this map and add a pointer.

For the most northern point, this goes like so:

[code lang=python]
NLocation = c(lon = subset(data, lat == max(data$lat))$lon[1], lat = subset(data,
lat == max(data$lat))$lat[1])
mapImage zoom = 15)
ggmap(mapImage) + geom_point(aes(x = subset(data, lat == max(data$lat))$lon[1],
y = subset(data, lat == max(data$lat))$lat[1]), alpha = 0.5, color = "darkred",
size = 10) + ggtitle("Northmost point in 2014")
[/code]

where_is_the_northmost_point_

We see that in 2014 I was in Hamburg, which is the northmost point. Correctly, the northmost point would be in Oslo, where I spent New Years Eve 2013/2014, but I’ve only really started to use OpenPaths in mid-January 2014…

The rest of the extremes can be extracted accordingly.

where_are_the_other_cardinal_direction_extremes_1
where_are_the_other_cardinal_direction_extremes_2
where_are_the_other_cardinal_direction_extremes_3

The most eastern point was (unsurprisingly) in Japan, the southmost point in Cyprus and the most eastern point in Amsterdam (while flying to Japan).

The highest peak I reached in 2014 was the Bettmerhorn, probably while skiing. The lowest point at -48 AMSL was at home and is probably a fluke in the GPS data :)

where_is_the_highest_point_

Where was I in Switzerland?

To plot the obtained data on a map, we have to center the resulting map location. Since I only want to show the data points in Switzerland, we center the map on that. Afterwards, we can simply plot all the data points on top of that image, and you can see where I was in Switzerland in 2014.

[code lang=r]
HomeBase zoom = 8)
AllPoints ggmap(HomeBase) + geom_point(aes(x = lon, y = lat), data = AllPoints, size = 3,
alpha = 0.25)
[/code]

Swiss_Locations

If you’d like to see the full R code (in R Markdown), you can take a look at the OpenPaths.Rmd on my GitHub account.

Kritik: The Martian

Andy Weir ist einer der ersten Menschen, die auf dem Mars landen. Durch unglückliche Umstände bleibt er auf dem Mars, während der Rest seiner Truppe wieder auf die Erde zurückfliegt. Das heisst, er wird auf dem Mars sterben.

Die Erklärung, wieso er doch nicht auf dem Mars stirbt, ist in einem spannenden Buch von Andy Weir verpackt, dass mich unglaublich in den Bann zog [1] und viele coole MacGyver-mässige Tricks drin hat. Ebenso sind ein paar Stellen drin, bei denen ich beim Lesen laut rauslachen musste, obwohl’s eine Science-Fiction-Geschichte par excellence ist.

[via Smarter Everyday]

[1]: Mitunter ist das Buch der Grund, wieso ich nach zwei Stunden nach dem ins-Bett-gehen in der ersten Nacht im neuen Jahr nochmals aufgestanden bin um die Kamera aus der Kälte hereinzuholen.

Sri Lanka

Wie gesagt waren wir zwei Wochen in Sri Lanka in den Ferien.
Nach minimaler Vorbereitung (Buchung eines AirBnB-Appartements für die erste Nacht) flogen wir von Tsüri über Doha nach Colombo.

Die Besichtigung von Colombo liessen wir weg und fuhren direkt in den Norden, in die Nachbarstadt Negombo.
Dort klimatisierten wir uns an die Wärme an (ca 30° wärmer als zuhause) und schmiedeten etwas konkretere Pläne für die insgesamt zwei Wochen.
Ein erstes Ziel war Kandy, die zweit-grösste Stadt von Sri Lanka und die ehemalige Hauptstadt.
Die Stadt ist aber – ausser beim Zahnarzt von Buddha – zu laut, so dass wir bald weiter gegen Norden fuhren.
Beim UNESCO Weltkulturerbe Sigiriya angekommen hatten wir schon eine-zwei kriminelle Busfahrten überlebt (im einen Bus leuchteten bei jedem Bremsmanöver die Heiligenfiguren neben dem Fahrer auf :) und genossen ausgiebig die Sri Lankische Küche.

Langsam machten wir uns gegen Süden auf, mit Umwegen über das Hochland, wo wir Teeplantagen und Museen mit dilettantischen Taxidermisten besichtigten, Nächte in Betten mit grandioser Aussicht verbrachten und einige kleinere Wanderungen unternahmen.

In etwa der Hälfte der Ferien quetschten wir uns durch den Ella Gap und verabschiedeten vom kühlen Hochland Sri Lankas.
Die zweite Hälfte der (zuwenigen) Tage in Sri Lanka verbrachten wir im Süden, lasen viele Bücher, schauten beeindruckenden Sonnenuntergängen zu und genossen alle Annehmlichkeiten, die ein Land mit exzellenter Küche, Köchen und Köchinnen bietet.

Ein paar der Fotos, die ich während den Ferien gemacht habe, sind in diesem Set hier zu finden, ein Teil der per GPS-Logger aufgenommenen Reise ist unten eingebunden.

Quasi ein Pfi-La

Fast wie früher in der Pfadi war ich über Pfingsten mit Velo und Zelt unterwegs. Nicht ganz wie früher haben wir zusammen einige Kilometer durch schöne Teile der Schweiz gemacht.

Wir sind während der letzten drei Tage grösstenteils der Veloland Route 9 von Vevey nach Luzern gefolgt. Wie teilweise schon mitgeteilt, haben wir an wunderhübschen Orten Pause gemacht, in Sannen im Saanerhof eine unglaubliche Portion Spaghetti gegessen und campiert, steile Abfahrten an den Thunersee genossen, in Iseltwald am See fein Znacht gegessen und nochmals campiert, sind über den Brünig nach Lungern gefahren, im Alpnachersee gebadet und in Luzern dann ein verdientes Glace gegessen.

Wunderschön, teilweise etwas anstrengend, aber extrem lohnenswert, die Schweiz so zu erfahren.

Indien

Ich bin wieder da, die zweieinhalb Wochen Indien gingen viel zu schnell vorbei.

Wir haben an grossartigen Orten geschlafen, wunderbar gegessen (siehe unten), viel Zug und Bus gefahren und einiges an Fotos gemacht, die nadisna hier landen werden.

Weiter

  foodie.gif