Dichtstbijzijnde treinstation analyse in QGIS

Beste allemaal,

Ik heb een vraag over hoe ik het beste een analyse kan aanpakken.
Ik heb de volgende lagen:

  1. Een puntlaag met verschillende stationlocaties
  2. Een provincie grenzen (polygoon) laag

Wat ik graag zou willen is als volgt:
Van een bepaalde provincie, bijvoorbeeld Provincie Groningen, wil ik in een chloropleten kaart aangeven hoeveel km het is naar de dichtstbijzijnde station (bv km klasses 0-5, 5-10, 10-15 en dan dichtbij licht en verder weg donkerder). Dit rekening houdend met de infrastructuur en dus niet hemelsbreed.
Namelijk zou ik van een gebied willen kunnen vertellen welk station voor hen het meest in de buurt is, en welke dat dan is en in welke km klasse deze valt.

Heeft iemand een idee hoe ik dat (het beste) aan kan pakken?

Alvast bedankt!

Wat je wilt is geen choropleet, maar een isopleet: een kaart met gebieden die dezelfde waarde hebben krijgen dezelfde kleur. Maak een raster over NL en bereken voor ieder punt op dat raster de afstand naar het dichstbijzijnde station. Dat kan je doen met https://openrouteservice.org/. Ieder punt krijgt dan de waarde van de rijafstand. Deze interpoleer je, zodat je isolijnen krijgt. Hiermee maak je vervolgens een isopleet. Zo’n analyse levert bijvoorbeeld deze kaart op, die we voor DUIC ooit hebben gemaakt:

2 likes

@emacgillavry was sneller, maar was al een berichtje aan het typen vandaar dat ik wat in herhaling val.

Een mogelijkheid is om met openrouteservice vanuit QGIS met behulp van de ORS Tools Plugin isochronen te genereren:

Als je voor elk station isochronen genereert met de afstandsklassen naar keuze (in tijd of afstand), dan kan je deze over elkaar heen leggen en daarmee je chloropleten kaart genereren (ofwel dus isopleet).

Overigens is openrouteservice een betaalde dienst, en kan je met een onbetaald account 500 isochronen per dag genereren met een max van 20 per minuut zie Plans | Openrouteservice.

1 like

Met de Isochrones from Layer processing tool (van de ORS Tools Plugin) kan je eenvoudig voor een laag van punten isochronen voor elke punt genereren.

Dank voor de antwoorden!
Toch nog een vraag; als ik voor elk van de stations een isochroon trek, dan zal ik voor enkele gebieden waarschijnlijk een overlap hebben (afhankelijk van de tijd/km klasses).
Want bijvoorbeeld plaats A ligt net op een locatie binnen 2 isochronen 5 km naar Station 1 en 7 naar Station 2. Dan zou ik vervolgens graag voor Plaats A alleen de afstand naar Station 1 hebben, want die is het dichtstbij.
Is daar nog een mogelijkheid voor?

Dan een tweede vraag; Is er nog een andere analyse mogelijk die juist vanuit de Provincie-laag geredeneerd is? En dat hij berekent welk station van uit het gehele gebied het dichtst bij is? En dat ik dan bv de gehele Provincie Groningen gekleurd is met een kleur van licht naar donker van hoe dicht bij een station je zit.
Want bij jullie voorbeelden neem je het Station als startpunt en dan mis je gebieden die niet binnen een geselecteerde afstand vallen. Ik zou het dus juist ook om willen draaien en vanuit het gebied kijken wat de afstand tot een station is, zodat ik reisafstanden naar stations heb voor het hele gebied.

Per provincie is wel riskant. Als je bijvoorbeeld in Leimuiden (ZH) woont, dan is het dichtstbijzijnde station Nieuw-Vennep (NH). Idem bijvoorbeeld Appelscha (FR) en Assen (DR). Als je dat alleen per provincie bekijkt, dan zou je vanuit Appelscha naar Wolvega moeten (29km per auto), terwijl Assen dichterbij is (20km per auto. Fiets is ongeveer hetzelfde qua afstanden).
Dat geeft dan dus op provinciaal niveau een vertekend beeld. M.i. kun je dat dus beter landelijk bekijken.

Voor je andere vraag: als er twee van dergelijke isochronen over elkaar heen liggen, kun je vrij makkelijk degene met de laagste waarde voor afstand selecteren, da’s niet zo’n lastige query. Hangt er een beetje van af hoe je je gegevens hebt opgeslagen en welke software je gebruikt hoe je dat het beste kan doen.

Ja, precies! Snap ik is inderdaad beter. Was even meer bedoeld om aan te geven dat het dus om een groter gebied gaat en ik dat als uitgangspunt wil nemen. Maar dank voor de alertheid!

Met zo’n query houd je dan een kaartlaag over die alleen de afstand tot het dichtstbijzijnde station toont?

Dat kan, als dat is wat je wilt. Misschien is het interessant om ook een op-1-na-dichtstbijzijnd attribuut te hebben, maar dat is maar net wat je wilt.

Ik heb even snel 4 willekeurige puntjes aangemaakt en daar omheen reistijden getrokken:
image

Deze overlappen nu dus deels, is er een bepaalde manier om de query op te bouwen? Hoe kun je invoeren dat je de laagste waarde getoond wil zien op het moment dat er 2 waardes op een punt liggen?

Er zijn vast meerdere manieren om het doel te bereiken, maar ik zou

  1. Per afstandsklasse de polygonen pakken
  2. Die opsplitsen zodat alle overlappende polygonen in aparte polygonen gesplitst worden met de tool Union
  3. De polygonen die met elkaar overlappen mergen in 1 polygon en dan het identificerende attribuut aan toe kennen met de tool Saga Polygon self-intersection

Dat levert dan het volgende kaartje op waarbij elke polygon het attribuut ID waarin dan 1 of meerdere station id’s inzitten.

Dit kan je dan doen voor alle afstandsklassen vervolgens over elkaar heen leggen (en eventueel van elkaar aftrekken met [Difference](met de Difference om overlappende geometrieen van een kleinere afstandsklasse met een grotere afstandsklasse te voorkomen).

Eea kan je met de modelbuilder aanelkaar knopen, zodat je stappen niet steeds handmatig hoeft uit te voeren.

1 like

Ik had een keer berekend waar in een bepaalde regio de reistijd tot mijn werk het korst is. Is dat wat je ook hier met jou analyse wilt doen uiteindelijk?
Ik had alle adressen uit het BAG in die regio gedownload met locatie. Toen met een google api de reistijd berekend voor ieder punt tot mijn werk. Dit heb ik gedaan met een script. Daarna met een interpolatie methode, geïnterpoleerd tussen de punten en een soort heat map getekend in GIS.
Omdat er op sommige plekken stoplichten of doodlopende wegen zijn was het resultaat best verrassend.
Als je zo iets zou willen doen kan ik de code hier ook plaatsen.

Groetjes

Hoi Lennart,
Dat zou helemaal mooi zijn! Dan zou je dat kunnen doen voor OV algemeen (dus bus/trein)? Maar ook voor auto.
En dan zou het ook mogelijk moeten zijn om een verschil te laten zien tussen auto en OV dus bv waar OV sneller is en waar auto.

En welke Google Api gebruik je daarvoor en is die api code gratis te gebruiken, en kan ik de tool zelf downloaden uit het Plug-in beheer?
Ik kan me wel voorstellen dat dat wel wat tijd vergt om allemaal te berekenen door QGIS.

Bedankt voor je hulp en antwoord zover

Hi Niek,

Ik heb even terug ongeveer jouw vraag behandeld in een tutorial die ik heb geschreven (zie hier). In deze tuturial bereken je bijvoorbeeld het aantal personen dat je vanaf elk treinstation kunt bereiken binnen een bepaald tijdsbestek, en in de laatste stap wat de reistijd is naar elk treinstation en dat vervolgens geinterpoleerd om een mooi kaart te krijgen. Dit bereken je in de opensource GeoDMS software.

Mocht je hierin geïnteresseerd zijn en meer willen weten, laat het maar weten!

Jip