Overzicht van routes in Nederland - OpenRouteIndex

Ik vond het lastig om een actueel overzicht te vinden van wandelroutes bij mij in de buurt op OSM, om zo beter te kunnen zien of routes een survey nodig hebben, of nog niet op OSM staan. Bij het maken van een lijstje op basis van een download van Geofabrik, is mijn Python script een beetje uit de hand gelopen. Ik heb nu een (start van) een index van wandelroutes in Nederland.

Ik heb het resultaat neergezet op https://openrouteindex.nl , en post de link hier in de hoop dat anderen er misschien ook iets aan hebben.

Op elke route wordt ook een simplistische controle gedaan om te kijken of de route gatenvrij is. Als dat niet zo is wordt dat per route met een icoontje aangegeven. De indexer negeert met opzet alle knooppunten, want daarvoor bestaat knooppuntnet.nl al.

Ik ben nog bezig om het zo in te richten dat de pagina’s elke nacht automatisch worden bijgewerkt, hopelijk kom ik daar deze ergens week aan toe. Indien meer mensen dit een nuttig overzicht vinden, kan ik in de toekomst (en na grondig opschonen) de code ook open-source maken, en meer features toevoegen.

Alle feedback is welkom, ook als de conclusie daarvan is dat ik iets heb gemaakt wat al bestaat :slight_smile:

4 Likes

Allereerst heb je natuurlijk waymarkedtrails, die toont de routes die in beeld lopen, en met de knop Routes krijg je ook een lijst. De lijst past zich aan aan het beeld als je zoomt en schuift. Als je 1 route aanklikt, krijg je daar info over waaronder hoogteprofiel, delen van deze route, grotere routes waar de aangeklikte route onder valt, je kan exporteren, en een rubriek met een korte analyse.

Een heel andere aanpak is de Sophox query die wandelrouterelaties in OSM mbv SparQL opzoekt en sorteert op survey:date. Helaas werkt die tergend langzaam, maar met voldoende geduld krijg je zoiets:

Ik heb daar gefilterd op Kustpad, anders krijg je alles in één lange lijst. Je kan ook sorteren op kolomkop bijvoorbeeld op naam, en je krijgt directe linkjes naar de relaties, op objectnummer.

PS ik denk dat de Sophox query zelf niet traag is, vroeger was hij behoorlijk snel, maar OSM is voor opvragingen heel langzaam geworden; er zijn denk ikk capaciteitsproblemen met de OSM-servers waardoor je veel timeouts en retries krijgt. Sophox lijkt die wel op te lossen, maar het duurt gewoon erg lang.

Elk initiatief om OSM te verbeteren is m.i. welkom! Ik ben altijd blij dat er mensen zijn dit dit soort mooie queries, kaarten etc. maken. Ik kan eigenlijk niets anders als data inbrengen.

Over data gesproken. Ik zie je Aalden rondomme als route met gaten hebt aangemerkt, daar gaat volgens mij iets mis. Ik zie in de routerelatie geen gaten zitten (ik heb maar een willekeurige route gepakt die ik zelf gelopen heb).

Ik had nog niet door dat je op die manier met Waymarked Trails een lijst kon krijgen, bedankt voor de tip! Ik link op mijn index ook naar de relaties op Waymarked Trails, ik ben bijvoorbeeld ook niet van plan om GPX downloads te gaan implementeren. Ik vind WT zelf wat onoverzichtelijk voor het vinden van kortere routes, aangezien de superroutes zo veel van de kaart innemen. Als je op WT zou kunnen filteren op superroutes aan/uit zou dat al een stuk beter zijn.

Ik had Sophox en ook Overpass-Turbo ook al gevonden, maar ik vind zelf dat deze tools niet heel gebruiksvriendelijk overkomen als je een specfiek doel hebt met de data die je zoekt. Dat ze niet zo snel zijn is ook niet heel raar: voor elke query van iedereen wordt waarschijnlijk de hele database doorzocht.

Ik zie het inderdaad, ik denk dat mijn simpele tests niet goed overweg kunnen met het lusje in die route. Ik zal eens kijken wat daar precies mis gaat en of daar iets aan te doen valt. Er zitten zo te zien wel meer tussen die op die manier onterecht als gatenroutes worden gemarkeerd.

Edit: dit is inderdaad het probleem, ik liet de losse wegen samenvoegen tot aaneengesloten lijnen waar dat kon, maar dat veroorzaakt dit probleem. De lijst is zojuist bijgewerkt, en een stuk kleiner geworden. Een deel van de nu gemarkeerde routes gaan de grens over en worden daarom onterecht als gatenhebbende gemarkeerd.

Ja, dat klopt wel. Het is al wel veel beter dan het vroeger was, toen hadden alle knooppuntroutes de kleur en dikte van regionale routes, waardoor je in Nederland echt niks meer zag! Nu zijn de kleuren en diktes wel duidelijk:

internationaal rood
nationaal blauw
regionaal geel/oranje
locaal dun paars
knopppuntroutes dun rood.

Kiezen wat je wil zien daar heb ik wel eens naar gevraagd bij de ontwikkelaars van WMT, dus dat je op het scherm kon aangeven welke routes je wil tonen. en ik kreeg als antwoord: dan zouden we moeten overstappen op vectortiles. Ik begreep daar toen helemaal niets van, behalve dat het op Nee neerkwam. Ook nu begrijp ik trouwens niet waarom dat alleen met vectortiles zou kunnen. Maar als je de kleurtjes eenmaal in je hoofd hebt, is het te doen.
Ik begrijp dat jij nu vooral in locale routes geïnteresseerd bent, dat zijn dus de paarse routes. Daarvoor ben je meestal op een kleiner gebied ingezoomd, en dan springen ze er MI goed uit.

De query’s worden meestal beperkt door het zoekgebied, dat kan bijvoorbeeld zijn het kaartgebied dat je in beeld hebt, of een gebied met een naam, zoals een stad of provincie. Maar in dit geval doorzoekt Sophox inderdaad de hele OSM database. Of alleen Nederland, dat weet ik eigenlijk niet meer. Iemand anders heeft die query ooit voor mij gemaakt.

Wat zij nu doen, en wat ook vrij gangbaar is, is dat de kaart vooraf als ‘plaatjes’ wordt gegenereerd door de server. Dat heet ook wel ‘raster tiles’. Dit heeft als grote voordeel dat de meeste computers/smartphones erg goed zijn in snel een boel plaatjes op het scherm plaatsen. Omdat voor elk zoom niveau de kaart voorbereid is, heb je ook niet dat de hoeveelheid data om op het scherm te zetten exponentieel toeneemt bij uitzoomen.

Het nadeel is dat er totaal geen informatie over de routes zelf wordt meegestuurd met deze plaatjes, maar dat is ook weer goed voor de performance. Als je wel zou willen filteren, moeten ze of: alle verschillende variaties van keuzes filters vooraf renderen, of de plaatjes per bezoeker genereren. Dat eerste kost een enorme hoeveelheid extra opslag, dat tweede is extreem intensief op de server waar de dataset leeft, en schaalt ook niet mooi mee met een toename aan bezoekers. Dit is denk ik ook waarom je bij WT moet kiezen of je wilt wandelen, fietsen, enz.

Voor de routelijst en het klikken op de kaart wordt elke keer de server gevraagd van: welke routes zijn hier, waar ‘hier’ de boundaries van de kaart zijn of het punt waar je hebt geklikt.

Op knooppuntnet wordt wel de kaart als vector tiles geleverd (tot op een zekere hoogte), daar krijgt je systeem een (in stukjes geknipte) dataset met daarin de lijnen van de routes, kleur, en andere info. Je kan waarschijnlijk zelf het verschil in performance tussen de twee wel zien, zoom maar eens flink uit op de kaart van knooppuntnet, maar niet zo ver dat je de witte bolletjes niet meer kan zien, en beweeg de kaart dan flink heen en weer. Als de witte bolletjes niet meer te zien zijn, zit je op het zoom level waarop knooppuntnet overstapt naar plaatjes, je merkt dan ook dat de kaart niet meer klikbaar is. Zowel WT als knooppuntnet gebruiken de OpenLayers library om de kaart te renderen, dus dat is niet waar het verschil in performance vandaan komt.

Als je hier dan weer op wilt filteren, moet je systeem niet alleen alle lijnen zelf los tekenen, maar ook voor elke lijn vooraf gaan controleren of deze door de filters heen komt. Dat kost aan de kant van de bezoeker gewoon een stuk meer rekenkracht, die er niet altijd is (zoals op goedkope smartphones). Wat knooppuntnet extra slim doet (lijkt het), is dat de geplande routes wel altijd als vector wordt opgestuurd (als je dat aanzet), dat kan ook prima omdat dat een kleine hoeveelheid data is.

Hieronder ter illustratie de tile waarin de kop van Tessel zit, zowel de OpenStreetMap zelf, als de WT tile met de routes erop. Dit zijn geen screenshots, dit is 1:1 wat er wordt opgevraagd als je de kaart op WT gebruikt.

2 Likes

Ik heb het stuk code dat de gatendetectie uitvoert opnieuw geschreven. Eerder deed ik dit met de coördinaten van wegen en knopen in de database, omdat de database deze heel snel kan samenvoegen en testen. Dat leidde echter tot problemen met afrondingsfoutjes binnen de coördinaten.

De detectie werkt nu op basis van de IDs van de knopen in de wegen. Er wordt getest of minimaal een knoop per weg ook in een andere weg voorkomt. Dit heeft de lijst “Routes met gaten” aanzienlijk beter gemaakt. Ik heb ook een kaart toegevoegd waarop de wegen die niet aan de hoofdroute vast zitten met een andere kleur worden gemarkeerd, om zo snel te kunnen testen of de gatendetectie op een bepaalde route goed is gegaan.

Als er verder behoefte is aan overzichten op basis van routedata hoor ik dat graag, wat voor 1 iemand heel lastig lijkt is misschien voor mij maar een middagje werk, en zo kan ik mooi bijdragen. Ik zat zelf te denken aan:

  • Routes groeperen op Operator tag, om daar spelfoutjes en verschil in schrijfstijlen makkelijker te kunnen zien
  • Lijsten van routes die bepaalde tags niet hebben, zoals de ‘net’, ‘operator’ en ‘website’ tags?
  • Proberen om een detectie te maken om te kijken of de route een rondje vormt, en dan weergeven als de roundtrip tag wel bestaat maar dat niet het geval is (en wellicht andersom?)
  • Een lijst (of misschien zelfs kaart?) te maken met routes die (al een tijdje) geen survey hebben gehad. Wat zou daar een goed tijdvak voor zijn om op te filteren, rond de 1 of 2 jaar?

Als de route een roundtrip is hoeft de tag niet gezet te zijn - dat zie je als data user immers aan het feit dat de route eindigt op het punt waar hij ook begint. De roundtrip tag drukt uit dat de route als een rondwandeling geldt, ook al zijn begin- en eindpunt misschien niet hetzelfde.
Een surveykaart zou wel handig zijn, ter vervanging van die veel te slome Soohox query. Je zou het zoals Knooppuntnet kunnen doen, die kan knooppuntnetwerken renderen met kleuren die donkerder en roder worden naarmate de survey:date langer geleden is. Geen survey:date is daar geel, vers is groen, dan wat tussenkleurtjes per jaar, en langer dan drie jaar geleden is rood. Uit me hoofd.

Maar ik betwijfel of er veel mappers gebruik van maken, in ieder geval bij de wandelknooppunten is dat minimaal. Je moet er systematisch voor controleren op de weg, dat ook nog verwerken en daarbij de survey:date zetten. Hoeveel mappers laten zich voor hun tochten leiden door de controledatum?

Mooi initiatief. Zelf zou ik het ook nuttig vinden voor andere route categoriën zoals: mtb, running, trails, fitness, etc. Waymarkedtrails laat deze niet allemaal zien namelijk.

Dat is goed om te weten voor als ik zelf een volgende route indien.

Dat is slim gedaan, dat klinkt als een goeie manier.

Tja, ik kan me op zich voorstellen als je regelmatig op een aantal dezelfde plekken rondwandelt, dat het dan wel voor kan komen dat iemand denkt: ik kan wel even deze route lopen met een GPS tracker aan, ik kom er toch vrijwel langs. Met een GPS trace is het ook redelijk snel om te zien of de route nog correct is.

Ik kan wel even gaan nadenken hoe ik alles wat netter kan structureren om ook andere categorieën toe te laten. Ik denk dat het wel te doen moet zijn. Er is een mooi overzicht op de wiki van routetypes, dus ik neem ze dan gewoon allemaal mee.

Die tag is juist (ook) bedoeld om roundtrips te markeren als eigenschap van de route in de buitenwereld. Daarmee kan je vervolgens controleren met handige tools zoals de jouwe (hulde :+1:) of de data daarmee in overeenstemming is.
Want soms zijn routes nu eenmaal onvolledig gemapt of is de data beschadigd geraakt.

De waarde roundtrip=yes is de meest voorkomende van deze key:

https://wiki.openstreetmap.org/wiki/Key:roundtrip
image

image

https://taginfo.openstreetmap.org/keys/roundtrip#values

Dit zit er nu in. Ik heb de volgende categorieën toegevoegd:

  • Fietsen, opgesplitst in type == (superroute|network), type == route , en een losse pagina voor bicycle:type == utility , om doorfietsroutes een eigen overzicht te geven.
  • route == mtb
  • route == horse
  • route == running
  • En overige routes verzameld op een pagina
    • route == fitness_trail
    • route == inline_skates
    • route == nordic_walking
    • route == wheelchair

Voor alles wordt ook gatendetectie gedaan, waar dat nuttig is hebben deze een eigen overzichtspagina. Voor de overige categorieën zijn zo weinig routes, dat het allemaal op 1 pagina bij elkaar kan.

Ik heb ook weer een paar kleine verbeteringen aangebracht om de dataset completer te krijgen, wat voor een minder false-positives in de gatendetectie zorgt. Op alle pagina’s staan nu ook de tags waar ik op filter.

Ik kan de titel van dit topic niet (meer) aanpassen, mocht iemand voldoende permisssions hebben om dat wel te doen, mag het woord ‘wandel’ er dan uit?

1 Like

Dit is gebeurd :)

1 Like

Mooi overzicht, nuttige functies!

(Ik word altijd jaloers als iemand zo iets moois kan maken…)

Een dingetje:

Ik woon in Zuid-Holland en ben markeerder voor twee routes: Het Grote Rivierenpad en het Groene Hartpad. Het Grote Rivierenpad staat er helemaal in, maar van het Groene Hartpad alleen de varianten. De hoofdroute (11 etappes) ontbreekt helemaal!

‘Normale’ routes staan per provincie gegroepeerd, maar superroutes staan op de ‘Lange routes’ pagina. Het indelen per provincie vond ik hier niet logisch omdat veel van de superroutes door meerdere provincies gaan. De indeling is ook grotendeels om de lengte van de tabellen een beetje schappelijk te houden.

Omdat het Groene Hartpad als superroute getagged is, staan alle subroutes daarvan ook op de Lange routes pagina (ook als de subroutes niet de superroute tag hebben). Ik ga het woord superroutes weer terugzetten in de menu’s om dit te verduidelijken. De routes die je op de Zuid-holland pagina ziet, missen dus eigenlijk een relatie met de hoofdroute!

superroute betekent alleen dat het een relatie is met deelrelaties als leden. Veel SPen (streekpaden, zoals het Groene Hartpad) zijn meerdaagse rondwandelingen, onderverdeeld in apart gemapte dagetappes, dus gemapt als superroute relaties, maar ze blijven in één provincie (soms tikken ze even een andere provincie aan, bv een van de 11 etappes van het Groene Hartpad komt door IJsselstein). Daarom zijn ze network=rwn, en horen MI dus wel op de provincielijst!

Het Grote Rivierenpad is network=nwn, is geen rondwandeling en doorkruist het hele land (met een klein een stukje Duitsland). Dus die hoort dan niet in zijn geheel op de Zuid-Hollandlijst, hooguit de losse etappes die werkelijk in Zuid-Holland lopen. Alleen de variant Rottemeren loopt wél geheel in Zuid-Holland.

Kortom, superroute of niet, dat zou niet moeten bepalen op welke lijst hij komt.

network=**n is daar MI de aangewezen tag voor. Ook al ligt de regio van sommige rwn’s in twee provincies.

Nog een weetje: Het Veluwe Zwerfpad en het Scholtenpad zijn voorbeelden van regionale superroutes, voor Wandelnet Streekpaden, die zelfs geen lus of lijn vormen, maar meer iets als een klaverblad of een wagenwiel. Maar dus wél streekgebonden superroutes.

Duidelijk en logisch. Ik heb de indeling bijgewerkt, en deze is nu op basis van rwn+lwn voor de pagina’s per regio, en iwn+nwn voor de rest. Fietsroutes zijn nu ook rcn+lcn op een pagina, en icn+ncn op de andere pagina. De aanduiding in de menu’s voor alle pagina’s is nu ook een stuk logischer.

Het Grote Rivierenpad en het Groene Hartpad staan nu nog steeds niet op dezelfde pagina, maar het is nu dus andersom ten opzichte van eerst: het Groene Hartpad staat volledig op de pagina van Zuid-Holland, en het Grote Rivierenpad staat nu volledig op de pagina van (Inter)nationale routes. De routes die naar mijn inziens een relatie missen staan nu wel op dezelfde pagina, maar nog steeds niet mooi gegroepeerd met de rest van de route

Dit is inderdaad een stuk logischer nu, het Drenthepad staat nu ook echt op de pagina met routes in Drenthe. Wederom bedankt voor je feedback :)

Inderdaad, top!

Hoe vaak worden de gegevens ververst en opnieuw geanalyseerd?

Mij valt op dat er een hoop lcn staat tussen de wandelroutes in Zuid-Holland.

Is het heel moeilijk om een sorteerfunctie erin te maken, dat je bijvoorbeeld op Datum gelopen kan sorteren?

Punten van zorg (ik ben een zorgelijk type), niet over de lijst zelf maar over het gebruik ervan voor het Wandelproject.

Zorg 1. Dit overzicht lijkt op zich een goede vervanging voor de lijst op de wandelpagina, maar… Die lijst bevat in principe de overzichten die we uit externe bronnen hebben, en op basis daarvan werden ze in OSM aangemaakt en ingevuld. Jouw lijst geeft geen nieuwe routes en routebronnen, maar waat er al ingevoerd is. Dus voor onderhoud van al ingevoerde routes heel geschikt, maar voor het werken aan nieuwe routes niet!

Zorg 2. De Wiki is omslachtig, maar wel heel houdbaar, iedereen kan er altijd iets aan toevoegen/bijschaven, bijvoorbeeld de voortgang van invoer of een nieuwe reeks routes van een of andere recreatietoko. Maar wat gebeurt er als jij dit op een gevement niet meer wil of kan doen? (Deze zorg heb ik ook over Knooppuntnet, dat is ook afhankelijk van 1 supercapabele programmeur en zijn resources).

Er wordt om de paar uur gezocht naar een nieuwe regiodump van Geofabrik, waar elke dag een nieuwe van gemaakt wordt. De data in de index loopt dus meestal een dag of anderhalf achter.

Dat viel mij ook al op, dat er een boel wandelroutes zijn met de netwerktags voor fietsroutes. Ik heb ze daarom expres beide in de filters opgenomen om dit zichtbaar te maken.

Ja en nee, in beginsel is dit niet zo heel moeilijk, maar het overzicht probeert de data te groeperen met de bijbehorende subrelaties, en dan wordt het lastiger om dat bijelkaar te houden. Ik was van plan om losse pagina’s te maken voor routes die al een tijd geen survey hebben gehad, en die standaard al op die manier te sorteren. Daarvoor wacht ik op een dag met minder mooi weer :)

Dat lijkt mij prima, ik wil ook geen data bijhouden die dan alleen maar bij mij staat, ik presenteer alleen maar bestaande OSM data op een andere manier. Als je naar iets op zoek bent om het invoeren van nieuwe routes te stroomlijnen, is het denk ik verstandiger om daar een los project van te maken. En anders is de wiki verder prima hiervoor?

Er zijn wel manieren om dit af te vangen, maar het blijft altijd een risico. Is ook een beetje een terugkerend probleem met open (source) projecten. Ik ben wel voornemens om in de nabije toekomst ook mijn codebase open source te maken en op bijvoorbeeld GitHub te zetten, zodat anderen het eventueel ook kunnen overnemen. Maar de .nl is niet op die manier te delen helaas.

OpenRouteIndex is een zogenaamde static site generator, dus de pagina’s die je kan zien zijn verder niet afhankelijk van een database of dergelijke. Dat maakt het makkelijk om op gratis hosting platformen zoals GitHub of Cloudflare pages te plaatsen. De kosten zijn voor mij daarmee nihil, dus ik heb weinig reden om het actief offline te halen. En een vervanger heeft ook geen verborgen database of dergelijke nodig om mij te vervangen, de data staat in OSM en de code die het bij elkaar raapt is inzichtelijk.

Ik probeer in ieder geval waarde toe te voegen, en niet iets wat al bestaat te vervangen. Als ik er dan geen zin meer in heb, dan is dat potentieel vervelend, maar maak ik geen kritieke processen stuk.

Je zorg(en) zijn terecht naar mijn mening, ik snap dat gevoel persoonlijk ook wel. Maar ik vind tegelijkertijd ook dat je[1] er beter goed gebruik van kan maken zolang het wel werkt.

Een iets constructiever maar off-topic idee

In bredere zin zou hier een oplossing voor te verzinnen moeten zijn die ik in ieder geval niet in mijn eentje kan uitvoeren. Een Overpass server die alleen Nederland (+ 50km over de grenzen) bevat zou misschien een idee kunnen zijn, en ook in het algemeen wellicht nuttiger zijn voor Nederlandse mappers. Het routeoverzicht kan dan rechtstreeks daaruit komen, en altijd up-to-date zijn. Voor de gatendetectie zou dan nog een los proces ergens nachtelijks kunnen draaien, die dan rapportjes genereert over routes met gaten.

Overpass is een groter project met meerdere ontwikkelaars, dus dat is een bewezen basis voor de langere termijn. De applicaties die er gebruik van maken hoeven zelf dan geen rekenkracht te hebben, en kunnen dus of heel goedkoop, of op gratis hosting worden gedraaid (bijvoorbeeld GitHub Pages). En de rapporteringsscriptjes hoeven geen inkomende verbindingen te verwerken, en zijn daarmee gemakkelijker veilig centraal te hosten. Als dat een beetje goed ingericht wordt kunnen deze ook Overpass belasten terwijl de meeste mappers slapen of aan het werk zijn, zodat dit elkaar niet in de weg hoeft te zitten. Of dit als voor iets als knooppuntnet ook zou werken weet ik zelf helaas niet, ik ben niet bekend genoeg met hoe dat precies werkt om daar iets over te zeggen.

Maar ik denk niet dat ik als nieuweling met een uit de hand gelopen rapportagescriptje voor wandelroutes hiervoor de aangewezen persoon ben. En misschien dat OSM community’s in andere landen hier al lang een breed een (andere) oplossing voor hebben.


  1. Niet jij of iemand specifiek, dit is in algemenere/bredere zin bedoeld ↩︎

1 Like