Een korte tutorial met CBS-postcodepunten, OSRM en Python
Van postcodes naar een kaart en reisafstand
Hoe ver is ‘ver’ vanaf Amsterdam? Als je binnen de ring woont, voelt de andere kant van de A10 misschien al als een dagtrip. Voor een retour tussen Amsterdam en een voorbeeldpostcode op Texel berekent OSRM bijna vier uur. Voor Terschelling is dat ruim zeven uur. Zelfs Vaals, op meer kilometers afstand, komt in dit voorbeeld uit op iets meer dan zes uur retour.
Wat dichtbij ligt op de kaart kan dus behoorlijk wat reistijd kosten. Dat maakt uit als je een afspraak op één plek organiseert. De kaart laat zien waar de lange reizen beginnen. Met de verdeling kun je aflezen welk deel van de groep meer dan twee uur onderweg is en onderzoeken voor wie een afspraak dichter bij huis verschil zou maken.
We gebruiken 650 openbare PC6-postcodes verspreid over Nederland. Per postcode loten we 1 tot en met 25 fictieve personen. Alle routes gaan naar 1012JS in Amsterdam.
Compleet voorbeeld (ZIP) · Stap-voor-stap bijlage · Python-script
1. Koppel de postcodes aan kaartpunten
Het voorbeeldbestand heeft twee kolommen. Dit zijn de eerste drie regels.
postcode,aantal
1032BC,11
1074VR,6
1106JZ,5
Elke PC6 krijgt een representatief punt binnen het postcodevlak uit het CBS-bestand. De download bevat de punten voor alle voorbeeldpostcodes en voor 1012JS. Voor een eigen lijst kun je rechtstreeks koppelen aan het volledige CBS-postcodebestand. BAG-adresgegevens zijn vooral relevant in een eerdere stap, bijvoorbeeld als je een ontbrekende postcode wilt reconstrueren uit straat, huisnummer en woonplaats. CBS · Kerncijfers en geometrie per postcode
2. Bereken heen- en terugroutes met OSRM
OSRM gebruikt het OpenStreetMap-wegennet en draait lokaal via Docker. Python vraagt per postcode twee routes op, één in elke richting. De heenroute levert de rijafstand. De heen- en terugtijd tellen samen op tot de retourrijtijd. De bijlage bevat de installatie en de opdrachten om het voorbeeld te draaien. OSRM · Quick Start · Geofabrik · Nederland
3. Bereken de uitkomsten voor de hele groep
De uitvoer bevat één regel per postcode en een status voor de koppeling en route. Voor het groepsgemiddelde vermenigvuldig je de afstand of tijd per postcode met het aantal personen. Daarna deel je de som door het aantal personen met een geldige route. Zo telt iedere persoon even zwaar.
In deze run hebben alle 650 postcodes een route. Voor de 8.457 fictieve personen komt de gewogen gemiddelde heenafstand uit op 128,7 km en de gemiddelde retourrijtijd op 222,0 minuten.
In deze fictieve groep is 85% langer dan twee uur onderweg voor een retour.
Hoe ver is dat, en hoe lang ben je onderweg?
De staven tonen hoeveel van de fictieve groep in elke klasse valt. De gekleurde lijnen markeren dezelfde vier voorbeeldpostcodes in beide grafieken.
| Voorbeeldpostcode | Enkele reisafstand | Retourrijtijd |
|---|---|---|
| Texel (1791VG) | 99 km | 3 u 49 min |
| Terschelling (8881CE) | 151 km | 7 u 12 min |
| Ameland (9161BZ) | 186 km | 6 u 31 min |
| Vaals (Zuid-Limburg) (6291KJ) | 230 km | 6 u 10 min |
De voorbeeldroute vanaf Terschelling is 151 km heen, tegenover 230 km vanaf Vaals. Toch schat OSRM de retourrit vanaf Terschelling ongeveer een uur langer. Voor een afspraak vanaf een eiland tellen ook de afvaart en eventuele wachttijd mee. Daarvoor heb je de actuele dienstregeling nodig.
De voorbeeldgroep is ruimtelijk gespreid en dient om de methode te laten zien. De uitkomsten hangen af van de gekozen postcodes, aantallen, bestemming en het gebruikte wegennet. Bij gevoelige invoer kun je de postcodekoppeling en routering lokaal uitvoeren en voor publicatie samengevoegde kaarten en verdelingen gebruiken.
Van postcodepunten naar een reistijdgradiënt
De hexagonkaart vat dezelfde 650 retourroutes naar 1012JS samen. Voor de ruimtelijke gradiënt telt iedere postcode één keer. De fictieve aantallen worden gebruikt voor de groepsgemiddelden en het histogram. Per hexagon, met 10 km tussen tegenoverliggende zijden, toont de kleur de mediane retourrijtijd op een doorlopende schaal. Witte gebieden bevatten geen voorbeeldpunten. De kaart vat de berekende routes samen per cel. Reistijd verandert ook met de ligging van snelwegen, bruggen en veerverbindingen.
Hoe ver reizen patiënten naar het Radboudumc?
Nu kijken we vanuit de reiziger naar de bestemming. Hoe ver moeten patiënten rijden voor een afspraak in het Radboudumc in Nijmegen? In de groep met een berekende route is de gemiddelde afstand ongeveer 68 km heen en de geschatte gemiddelde rijtijd ruim twee uur retour. De roze ster markeert de bestemming.
De kaarten vatten de herkomstgegevens samen in hexagonen. De kaart gebruikt een vast raster van 10 km van hoek tot hoek. Een hexagon verschijnt alleen als er minstens vier verschillende postcodepunten in liggen. De aantallen staan in brede klassen. Het roze kader geeft de uitsnede van 100 × 100 km aan. De detailkaart gebruikt hetzelfde raster.
In deze praktijkanalyse is de retourrijtijd geschat als tweemaal de OSRM-tijd van de heenrit. Het downloadbare Python-voorbeeld berekent beide richtingen afzonderlijk. De verdeling telt alle geldige routes mee, ook routes uit cellen die op de kaart zijn weggelaten.
Hoe ver een reis voelt, hangt ook af van waarvoor je op pad gaat. Voor veel patiënten is een lange rit belastend, terwijl diezelfde rit voor topklinische zorg de moeite waard kan zijn. En voor een Amsterdammer is voorbij de ring misschien al ver genoeg.