Hoe exporteer je fietsknooppunten naar je Garmin

Fietsknooppunten zijn handig. Je kijkt van te voren langs welke knooppunten je wilt fietsen, schrijft de nummers op een briefje en dat plak je met doorzichtige tape op de bovenbuis van je frame. Maar soms missen er bordjes en raak je de weg kwijt. In het ergste geval raak je hopeloos verstrikt in een troosteloze buitenwijk van Almere.

De oplossing is simpel: exporteer de route naar je Garmin (die moet dan wel navigatie hebben). Hier wordt het helder uitgelegd. De auteur schakelt de kaarten op de Garmin uit. Ik niet, waardoor het nog simpeler wordt. Hier zijn de stappen:

  • Ga naar de routeplanner van de Fietsersbond.
  • Klik op de knop «LF en knooppunten» en zoom in totdat de knooppunten zichtbaar worden.
  • Klik op het knooppunt waar je wil starten en klik in de popup op «Van».
  • Klik op elk knooppunt waar je langs wil fietsen en klik in de popup op «Via».
  • Klik op het knooppunt waar je wil eindigen en klik in de popup op «Naar».
  • Klik op de groene knop «Plan route».
  • Klik in de linkerbalk op «GPS» en in het volgende scherm «GPX bestand».
  • Het bestand wordt opgeslagen in je computer. Sluit de Garmin via de usb aan op je computer, gooi het bestand in de map «Garmin/NewFiles» en ontkoppel de Garmin weer.

Je Garmin maakt er automatisch een course van. Dit is op een Mac, misschien dat het met Windows anders werkt. En voor de geeks: hier las ik hoe je je GPX-file weer op een Leaflet kaart kan tonen.

Power and buzz: Analysing trade union HQ locations by closeness to power and by convenience store score

When Hans Spekman ran for chairman of the Dutch Social-Democrat party in 2011, he said he wanted to move the party’s headquarters from the posh office at the Herengracht in Amsterdam to a «normal district, a neighbourhood where things happen, like Bos en Lommer». Bos en Lommmer is a multicultural neighbourhood in the west of the city, in transition from deprived to gentrified.

I agree with Spekman (at least on this matter) and I think his ideas about locations should also apply to trade union headquarters. Out of curiosity I decided to analyse the headquarters locations of European trade unions, using two criteria. First: closeness to power, operationalised pragmatically as the walking distance from the union office to the national parliament. And second: the liveliness of the neighbourhood. For measuring this I propose the convenience store score, which assumes that the number of convenience stores within half a kilometer gives a rough indication of how lively a neighbourhood is. Convenience stores could be for example 7-Eleven or AH to go stores and some ethnic shops will also be classified as convenience stores.

The chart below shows the scores for each union. You can also see the locations of union offices, parliaments and convenience stores on an interactive map, but note that the map may take a while to load - it’s not very suitable for viewing on a smartphone.

The median union headquarters is within 2km walking distance from parliament. For about three-quarters of unions, the distance is below 5km. The general pattern thus seems to be that unions have their national offices close to the institutions of political power. There are exceptions though. Officials of the major Dutch federations FNV and CNV would have to walk 15 to 68km to reach parliament. And sometimes the distance is even longer: a Basque union has its HQ in Bilbao; a Turkish union in Istanbul and Polish union Solidarnosz has its HQ near the port of Gdansk, where it originated. But all in all, the large Dutch unions are quite exceptional in that they don’t have their headquarters near the centre of political power.

As for liveliness: the median number of convenience stores within half a kilometer from union headquarters is 2, but about one in three unions have no convenience stores nearby at all. Some of the most lively union office locations are in countries like Romania, Hungary and Bulgaria. Other examples are CFDT (France), TUC (UK), SAK (Finland) and UGT (Spain). Dutch unions are at the other end of the spectrum and have rather dull headquarters locations - judging by the convenience store score.

So where should a union be? I’d say that influencing the government is one of the tasks unions should be doing, and an important one at that. However, this doesn’t depend on having a headquarters close to parliament, but rather on the ability to mobilise workers. I’d argue that the convenience store score is a far better criterium to judge headquarters locations by.

In case you were wondering: Spekman was successful in his bid for the chairmanship of the Social-Democrat party. The party’s headquarters is still at the Herengracht, though: it turned out the lease doesn’t expire until 2018.

Full disclosure: I work at the FNV, at the former FNV Bondgenoten location.


This analysis turned out to be quite a bit more challenging than I initially thought, but it was very instructive. I’m especially happy that I now have a basic understanding of the Overpass API that you can use to retrieve Open Street Map data. OSM has always been a bit of a black box to me but the Overpass API turns out to be a valuable tool.

Measuring neighbourhood characteristics

Initially I wanted to use Eurostat regional stats to analyse neighbourhood characteristics, but Eurostat doesn’t have data beyond the NUTS 3 level (I should’ve known). Level 3 areas may comprise entire cities and are useless for analysing neighbourhoods, so I had to look for alternatives.

Subsequently, I tried getting the name of the smallest area a location is in using the Mapit tool (based on Open Street Map). I thought I might then be able to construct a Wikipedia url by adding the name to This turned out to work pretty well, not least because Wikipedia is quite good at handling different variants of geographical names. However, while Wikepedia articles tend to be informative, they do not contain a lot of uniform statistical information. Often population, area and population density will be included, but not much beyond that. In addition, the fact that the size of the areas varies poses problems. For example, the population density of a small area cannot be meaningfully compared to the density of a large area. In the end I did add the Wikipedia links to the popups on the map, but I continued looking for other ways to analyse neighbourhood characteristics.

One of the measures I ended up using is closeness to power, operationalised as the walking distance to the national parliament (in countries with a bicameral parliament, I used the location of the lower house). This was a pragmatic choice. An alternative would have been to use the location of ministries, but then I’d have to come up with a way to pick the relevant ministry.

For measuring the liveliness of a neighbourhood, I used the number of convenience stores within half a kilometer, using data from Open Street Map. Obviously there are some limitations to this method. For example, some countries will be mapped in more detail than others. Also, there will be inconsistencies in how shops are classified (cf this discussion in Dutch about how to classify stores of chains like Blokker).

Obviously, the convenience store score has not been properly validated. I’m not even sure whether objective measures of a neighbourhood’s liveliness exist. I checked this list of «coolest» neighbourhoods in Europe and all but one (Amsterdam Noord) have convenience stores nearby, but then again coolness isn’t the same as liveliness (I guess a neighbourhood can be uncool yet lively). Furthermore, being on a list of cool neighbourhoods isn’t necessarily an indicator of coolness.

Ideally I think a proper assessment of the convenience store score should include a comparison with measurements of criteria derived from Jane Jacob’s The death and life of great American cities: mixed primary uses, short blocks, buildings of various ages and density. I guess it should be possible to measure some of these with OSM data (especially the first two). However, that would require a deeper understanding of OSM classifications than I currently have.

Getting the data

While some of the data was obtained by good old-fashioned googling, some of it could be automated.

The starting point for the analysis was the list of affiliates of the European Trade Union Confederation (ETUC). Note that this includes unions in non-EU countries such as Turkey. Also note that I use the word union but most are in fact union federations (the FNV is a bit more complicated; a recent merger has partly done away with the federation structure).

The ETUC doesn’t seem to have a list of addresses on their website. They do provide urls for most of their affiliates. Still, looking up addresses was a bit of an adventure, especially for countries which use non-Latin alphabets (let me know if you find any errors).

For walking distances I used the Bing API. In a number of cases Bing couldn’t find a walking route or the distance seemed wrong. In those cases I manually looked up the distance in Google Maps. Here’s a sample url for getting information from the Bing API (replace KEY with API key).

I used the Overpass API (demo) of Open Street Map to get all nodes within 500m from the union HQs, which I used for counting the number of convenience stores. I also used the API for getting the coordinates of all convenience stores in all countries where the ETUC has affiliates. Here’s a sample url for getting all nodes within 500m of a location, and here for getting all convenience stores in a country.

A few unions are missing in the final results because of missing data. For example, I couldn’t figure out what the main office of the Belgian ACV is and I couldn’t find the exact location of the parliament of Malta (somewhere along Republic Street, Valletta).

Calculating scores

I calculated scores as either walking distance to parliament in kilometers or the number of nearby convenience stores. In both cases I took the log10 of the value + 1. To arrive at a 0 to 10 scale, I multiplied by 10 and divided by the maximum score for each variable. For the distance to power measure I converted the score to 10 minus the score, so that a higher score means closer to power.


I used Leaflet and D3.js to map the locations of HQs, parliaments and convenience stores. There are over 60,000 convenience stores in the dataset. This turned out to be a bit too much and the browser all but crashed. I found this script that deals with exactly this problem. While I managed to figure out what I needed to change to make the script work with my data, I’m afraid I don’t fully understand how it works. It’s still too slow for mobile, though.

Strava has new maps, created by Mapbox


Strava has new maps. They look good and they are well-designed. Highways, which dominate normal maps, have gotten a modest grey colour. Paths and pedestrian areas are highlighted in yellow. Parks and water bodies serve as orientation marks.

They have removed clutter so you can easily follow the road pattern. And they’ve taken care to make elevation patterns visible (too bad most hills in the Netherlands are too low to qualify for such markings).

The maps have been created by Mapbox, an alternative for Google Maps. Some of the material they use is from Open Street Maps and they contribute to Leaflet, an open source Javascript library for creating online maps. When Strava initially switched from Google Maps to Mapbox last summer, they apparently got some complaints about the disappearance of Streetview. Good thing they decided to stick with Mapbox and further improve the maps.

Hopefully the new Strava maps will become available open source for use with Leaflet. Or for your Garmin.

Via @hapee.


23 July 2018 - I’m still very happy with the Strava maps Mapbox created. I do think one thing could be improved, though: railways are almost invisible unless you really zoom in.

Of course, this is in keeping with the design philosophy of the maps. On the other hand, motorways are clearly indicated, so why not railways. Adding railways and stations would improve the readability of the maps, especially in large cities. It would also add practical value to cyclists who take their bicycle on a train.

Strava heeft nieuwe kaarten, gemaakt door Mapbox


Strava heeft nieuwe kaarten. Ze zien er mooi uit en ze zitten goed in elkaar. Snelwegen, die op gewone kaarten de aandacht trekken, hebben een bescheiden grijze kleur gekregen. Fiets- en voetpaden zijn juist opvallend geel. Parken en water vormen oriëntatiepunten.

Onnodige details zijn weggelaten zodat je het patroon van de wegen goed kan volgen. En er is de nodige aandacht besteed aan het zichtbaar maken van hoogteverschillen (jammer dat de meeste heuvels in Nederland te weinig voorstellen om hiervoor in aanmerking te komen).

De kaarten zijn gemaakt door Mapbox, een alternatief voor Google Maps. Ze maken onder meer gebruik van Open Street Maps en ze dragen bij aan Leaflet, een open source Javascript-library waar je online kaarten mee kan maken.

Toen Strava afgelopen zomer overstapte van Google Maps naar Mapbox kregen ze klachten over het verdwijnen van Street View. Goed dat ze hebben besloten om bij Mapbox te blijven en de kaarten verder te verbeteren.

Hopelijk komen de nieuwe Stravakaarten ook open source beschikbaar voor gebruik met Leaflet. Of voor in je Garmin.

Via @hapee.

Tweeting #oxi

The responses of European leaders to the outcome of last Sunday’s referendum in Greece were pretty unanimous. Germany’s vice-chancellor Sigmar Gabriel (a social-democrat) said Tsipras had torn down the bridges between Greece and the rest of Europe. Spanish PM Mariano Rajoy said Greece must follow Europe’s rules. And Dutch PM Mark Rutte somewhat pedantically said he was «really angry» about the referendum and that the Greeks better not come up with a «lame story» (flutverhaal).

For a different perspective, I turned to Twitter. The hashtag #oxi, associated with a ‘no’ vote in the referendum, has become a bit of a symbol of opposition to EU-imposed austerity. I collected some 110,000 tweets containing #oxi (and not #nai) from around last Sunday. The #oxi tweets that are geotagged are shown on the map. It appears that quite a few tweets came from Spain and Italy, but also from the UK and Ireland, and - who’d have thought - the Netherlands (one wonders if bar de Druif in Amsterdam is an #oxi stronghold). In Spain, #oxi territory seems to overlap with areas where progressive party Podemos won in the mayoral elections earlier this year.

Note that only a small proportion of tweets are geotagged, so one shouldn’t rush to conclusions based just on the map. An alternative approach is to look at the language of tweets.

To interpret these findings properly one should take various factors into account, including the number of people who speak a language and how many are on Twitter. But whichever way you look at it, the number of Spanish-language #oxi tweets is impressive. There may well be a connection with the popularity of Podemos.

To get an idea of the contents of the #oxi-tweets I looked up the most-favourited tweets in some of the key languages. A few examples:

The joy of losing fear. Long live Greece! (es)

Today I’m going to eat a Greek tortilla. And what’s that? The same as the Spanish one, but with more huevos [eggs / balls]. (es)

Threats. Blackmail. Fear. Propaganda. The courageous Greek people defied it all. But now they desperately need our help. (en)

Tonight I feel truly European. As if Greece had voted for me against the technocrats and austerity. (fr)

A small, proud nation can change Europe. We should help them (it)

What if we take #oxi as an opportunity to rigorously curtail the world of banks, speculators and finance across the EU? (de)


I searched the Twitter api for tweets using the search terms #oxi and #nai. I analysed tweets containing either #oxi or #nai (not both). Some have argued that ochi would be more appropriate than oxi; in French sometimes oki is used and of course the Greeks have their own alphabet. That said, #oxi appears to be a pretty universal symbol for a no vote in the Greek referendum and for opposition to austerity.

The number of #nai tweets was very small (less than two thousand). Locations of tweets were derived from the location data provided by the Twitter api. As indicated, only a small number of tweets contain this information; further, there may be cultural differences in the extend to which people allow their device to send location data with their tweets. Twitter also provides language data which appears to be pretty accurate (although they occasionally mistake Catalan for French). Note that language data cannot be simply linked to countries: for example, quite a few tweets in Dutch will be from Belgium while on the other hand, Dutch twitterers frequently tweet in English.

I used Python to collect and process the data, R for analysis and d3.js and Leaflet for visualisation.