Vrachtwagenheffing

Goedemorgen,

Ik ben nieuw hier op het forum en vraag hulp om het vrachtwagenheffings netwerk in openstreetmap te krijgen.
De shapefile is hier te vinden:

Andere formaten zijn eventueel ook te vinden daar.

Alleen hoe kan ik dit nu binnen openstreetmap krijgen? Ik wil mbt Graphhopper routes berekenen. Die gebruiken nu openstreetmap, alleen zijn daar op dit moment alleen alle A-wegen geclassificeerd. Dat klopt niet en enkele N-wegen moeten toegevoegd worden.
Meer info op: www.vrachtwagenheffing.nl

Wie kan mij helpen?

1 Like

Welkom op het forum.

Bedankt voor het linken van https://www.vrachtwagenheffing.nl/, daar lees ik:

De start van de vrachtwagenheffing is gepland op 1 juli 2026. Vanaf die datum betalen eigenaren van vrachtwagens per gereden kilometer.

Dus we hebben nog even maar goed om dit nu op te pakken.

Verder vond ik op de site:

Net als in landen om ons heen betalen eigenaren van vrachtwagens dan een bedrag per gereden kilometer. De heffing geldt op bijna alle snelwegen en een aantal provinciale en lokale hoofdwegen.

Dat betekend dat het goed is om het meer international op te pakken.

Even rond gekeken maar er is:

En met 88.220 wegen in de wereldwijde OSM database is dat best redelijk gebruikt.

Een vraag is of toll:hgv=yes goed (genoeg) is of dat het iets anders moet worden dan yes, de heffing geldt alleen voor voertuigen >= 3.5 ton maar < 3.5 ton nog wel “heavy”? :wink:

Wat betreft Graphhopper, zowel A als N wegen in Nederland zijn consequent gemapt, zie:

Kan je iets beter detailleren wat je bedoeld met “alleen zijn daar op dit moment alleen alle A-wegen geclassificeerd. Dat klopt niet en enkele N-wegen moeten toegevoegd worden”.

Ik zie Graphhopper ondersteuning lijkt te hebben voor toll:hgv:

Road attributes:


toll: (MISSING, NO, HGV, ALL)

Van https://docs.graphhopper.com/openapi/custom-model/road-attributes

Je zou dat alvast eens kunnen proberen, de Westerscheldetunnelweg heeft toll:hgv=yes

Dank voor je antwoord!
1 juli 2026 klopt inderdaad, alleen is het wenselijk om nu al de impact te kunnen berekenen.

Voorbeeld bij Graphhopper. De A31 tussen Harlingen en Leeuwarden wordt als tol geclassificeerd, maar dat is conform de site www.vrachtwagenheffing.nl niet zo.
Als je naar de N246 en N244 kijkt en bij Graphhopper routeer je over deze weg, dan wordt er nu geen tol gerekend. Die wegvakken staan nu niet als tolweg geclassificeerd. En dat zijn wel tolwegen.

Het gaat erom dat je van een route straks het aantal kilometers over de tolweg kunt zien. Op dit moment gebeurt dat in Belgie, Duitsland en Frankrijk bijvoorbeeld al. Als we op die manier Nederland kunnen toevoegen, zou dat mooi zijn.

Westerscheldetunnel heb ik geprobeerd en werkt helemaal goed.

Wat zou ik nu moeten doen om die wegen als zijnde toll:hgv=yes te krijgen?

Dat is dan een Graphhopper probleem, alle wegen met toll:hgv=yes in Nederland kan je vinden met overpass turbo.

Voor een voorbeeld van de data die gemapt is voor de A31 zie dit segment en merk op dat er geen toll:hgv=yes of een andere toll tag is.

Dus hiervoor zou ik nog eens verder kijken en misschien een topic openen op https://discuss.graphhopper.com/

toll:hgv=yes toevoegen aan de betreffende wegen is niet zo moeilijk met het goede gereedschap, ik vermoed dat er verschillende mensen wel willen helpen maar ik zou voorstander zijn om het in ieder geval nog een weekje te geven zodat meer mensen input kunnen geven.

2 Likes

In ieder geval moet dat pas gebeuren als op de weg of het wegdeel werkelijk tol geheven wordt. Alleen een plan is niet voldoende, want dan zou de navigatie melden dat er tol geheven wordt terwijl dat nog niet het geval is.

4 Likes

Dank voor je antwoord.

Misschien is het mogelijk met een datum erbij? Datum van start van de rit/route? Dat zie ik bij meerdere navigatie producten terugkomen.

Geen ervaring hiermee maar als ik het zou willen proberen dan zou ik dit recept proberen te volgen:

Dat start GraphHopper op met een eigen .pbf en daar kan dan de toll:hgv=yes in zetten.

Je maakt eerst een OsmChange file met de toll:hgv=yes wijzigingen, dan merge je die wijzigen met netherlands.pbf of europe.pbf (bijv. met osmium merge) en vervolgens draai je daarmee.

Die OsmChange file kan je maken met josm of wat scripts. Je hebt wel alle osmid’s nodig voor alle wegen die toll:hgv=yes moeten krijgen.

1 Like

Dank je! Alleen gaat dat mijn pet te boven.
Geen idee hoe ik zo’n file zou moeten aanmaken.
Helaas moet ik zo weg, maar ga van de week wel eens lezen en proberen.
Mochten er mensen zijn die tips hebben, dan houd ik me aanbevolen!

Fijne zondag!

Na een privé topic met @GJNK een update:

Inmiddels is er een geopackage of geojson bestand (kan je bekijken met geojson.io) met de OSM data voor de wegen die per 1 juli 2026 toll:hgv=yes moeten gaan krijgen. Verder is er een .pbf bestand dat als input voor Graphhopper kan dienen en alvast toll:hgv=yes heeft:

Wat je dan nog nodig hebt is om graphhopper lokaal te draaien met een vrachtwagen/truck profiel is een config.yml file specifiek voor vrachtverkeer:

graphhopper:
  datareader.file: "netherlands_toll_hgv.pbf"
  graph.location: graph-cache
  graph.encoded_values: road_class, road_access, car_access, hgv, max_width, max_height, max_length, car_average_speed, max_weight, max_weight_except, toll
  import.osm.ignored_highways: footway,construction,cycleway,path,pedestrain,steps # typically useful for motorized-only routing
  profiles_ch:
    - profile: truck

  profiles:
     - name: truck
       turn_costs:
         vehicle_types: [hgv]
       custom_model:
         speed:
          - if: "true"
            limit_to: 75
          - if: "road_class == MOTORWAY"
            limit_to: 80
         priority:
          - if: "road_class == MOTORWAY"
            multiply_by: 1.5
          - if: "road_class == TRUNK"
            multiply_by: 1.4
          - if: "road_class == PRIMARY"
            multiply_by: 1.3
          - if: "road_class == SECONDARY"
            multiply_by: 1.2
          - if: "road_class == TERTIARY"
            multiply_by: 1.1
          - if: "road_class == RESIDENTIAL"
            multiply_by: 0.5
          - if: "road_class == SERVICE"
            multiply_by: 0.2
          - if: "road_class == TRACK"
            multiply_by: 0.1
          - if: "road_access == PRIVATE || road_access == DESTINATION"
            multiply_by: 0.1
          - if: "max_height < 4.0"
            multiply_by: 0
          - if: "max_width < 2.55"
            multiply_by: 0
          - if: "max_length < 12.0"
            multiply_by: 0
          - if: "max_weight < 40.0"
            multiply_by: 0
          - if: "road_access == NO || hgv == NO || road_access == PRIVATE"
            multiply_by: 0
          - if: "!car_access && road_access != PRIVATE && hgv != DELIVERY && hgv != DESTINATION"
            multiply_by: 0

Hiermee zie ik, voor de vrachtwagen, logische routes maar toll:hgv=yes is nog niet meegenomen. Hoe dat moet is afhankelijk van hoe je de tolkosten ziet (en het type voertuig).

Ik begrijp dat men verwacht dat door de tol geen grote verschuiving in het verkeer gaat plaatsvinden en als dat wel het geval is dan past men evt. de wegen waarvoor tol geldt aan. Ik begrijp ook dat de toll in NL lager is dan die van de buurlanden en dat vrachtwagen-toll in de buurlanden al actief is.

Zie je iets dat niet klopt, ik hoor het graag.

In het bestand van RWS zitten allemaal gaten, zie deze kaart (bron Index of /wkd/geogegevens/Geopackage/Vrachtwagentolheffingsnetwerk/01-03-2026/)

Op Wegen vrachtwagen­heffing | Vrachtwagenheffing staat een pdf kaartje en een lijst met wegen. Publiceert het RDW ergens een serieus bestand met GIS data van het Vrachtwagentolheffingsnetwerk?

Wat betreft je vragen over RWS en RDW data moet je denk ik bij deze organisaties zelf zijn, ik ben het met je eens de kwaliteit van deze data is laag. Uiteindelijk is de lijst met wegen wat mij betreft het best.

Zie hierboven voor mijn geopackage gebaseerd op OSM data, daar zitten geen gaten in.

Voor het genereren van de bovenstaande OSM gebaseerde data heb ik een script geschreven dat grotendeels de OSM wegen op haalt op basis van de wegnummers, Key:ref.

Maar een belangrijk deel kon niet met die methode, daarvoor heb ik de wegen in een PostGIS data geladen,in QGIS polygons getekend om het betreffende deel waar tol voor geldt en vervolgens die polygons gebruikt om de wegen uit de database te filteren.

Dank emvee, zal het aankaarten bij rdw en rws

met dank aan NDW, kwam ik achter dat de volgende services live zijn met het (zo lijkt het) actuele heffingsnetwerk:

https://maps.ndw.nu/api/v1/

https://maps.ndw.nu/styles/layers/hgv-charge/

https://maps.ndw.nu/api/v1/hgvChargeTollCollectionNetwork/

Welkom @RobbertJ en bedankt voor het navragen bij het NDW!

Ik heb wat rondgekeken op de links en het lijkt met dat NDW vectortiles met een stijl die het vrachtwagen tol netwerk laat zien met de monitoring posten.

De examples werken voor mij daar zit geen hgv voorbeeld bij.

Deze examples zijn kleine html bestanden met code om met maplibre de vectorkaart te laten zien gebaseerd op een style. Als ik die style verander in:

    style: 'https://maps.ndw.nu/styles/layers/hgv-charge/hgv-charge-all-road-sections-with-monitoring-network.json',

Dan werkt het echter niet en de browser console verraadt waarom:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://maps.ndw.nu/styles/layers/hgv-charge/hgv-charge-all-road-sections-with-monitoring-network.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 200.
Error: NetworkError when attempting to fetch resource.

Mijn html draait niet op maps.ndw,nu maar op mijn eigen computer maar dat werkt dus niet.

Iemand een truc om het hgv-charge-all-road-sections-with-monitoring-network zichtbaar te krijgen?

In qgis krijg ik het volgende wel voor elkaar. Layer, Add layer, add vector tile layer

style url : https://maps.ndw.nu/styles/layers/hgv-charge/hgv-charge-all-road-sections-with-monitoring-network.json
source url: https://nls.ndw.nu/api/rest/static-road-data/road-attributes/v1/hgv-charge/latest/mbtiles/road-sections/tiles/{z}/{x}/{y}.pbf

1 Like

goedenmiddag, hoe heb je uiteindelijk dat bestand van NDW naar shapefile gekregen?

Hoi,

Met Claude Code om laten zetten naar shapefile.

Hier staat een xml versie van het bestand.

Ik had wat rondgekeken op de NDW site en een .csv al gevonden maar er is en nu een.xml van.

De base directory is: https://maps.ndw.nu/api/v1/hgvChargeTollCollectionNetwork/

  • Daaronder zijn directories per maand: 20240601, 20240701 
 20260301, 20260401
  • Onder deze maand directories zijn een csv en nu ook een xml directory te vinden met daarin de betreffende documenten.

Ik zie dat het .xml bestand allemaal stukjes weg heeft incl. de coördinaten. Ik vermoed dat dat een kaart oplevert die 1:1 hetzelfde is wat je in de NDW geopackage kan vinden.

De .csv is wat dat betreft interessanter:

version_id,nwb_road_section_id,type,description
20260301,240222031,HGV_CHARGE_CHANGED,Road section charge removed
20260301,260318033,HGV_CHARGE_CHANGED,Road section charge removed
20260301,270284004,HGV_CHARGE_CHANGED,Road section charge removed
...
20260301,601539554,HGV_CHARGE_CHANGED,Road section charge added
20260301,601544102,HGV_CHARGE_CHANGED,Road section charge added
20260301,601544103,HGV_CHARGE_CHANGED,Road section charge added
...
20260301,601539554,NWB_ADJACENT_ROAD_SECTION_ADDED,Adjacent road section added
20260301,601544076,NWB_ADJACENT_ROAD_SECTION_ADDED,Adjacent road section added
20260301,601544078,NWB_ADJACENT_ROAD_SECTION_ADDED,Adjacent road section added
...
20260301,600956909,NWB_ADJACENT_ROAD_SECTION_REMOVED,Adjacent road section removed
20260301,601534448,NWB_ADJACENT_ROAD_SECTION_REMOVED,Adjacent road section removed
20260301,461488022,NWB_ADJACENT_ROAD_ATTRIBUTE_CHANGED,Geometry length changed
20260301,600198796,NWB_ADJACENT_ROAD_ATTRIBUTE_CHANGED,Road number changed
20260301,600198797,NWB_ADJACENT_ROAD_ATTRIBUTE_CHANGED,Geometry length changed
20260301,600258688,NWB_ADJACENT_ROAD_ATTRIBUTE_CHANGED,Geometry length changed
20260301,600267482,NWB_ADJACENT_ROAD_ATTRIBUTE_CHANGED,Road number changed
20260301,600520251,NWB_ADJACENT_ROAD_ATTRIBUTE_CHANGED,Geometry length changed
20260301,600594084,NWB_ADJACENT_ROAD_ATTRIBUTE_CHANGED,Geometry length changed
...
20260301,175206011,HGV_CHARGE_ISLAND,Road section has charge while adjacent road sections do not have charge
20260301,182199033,HGV_CHARGE_ISLAND,Road section has charge while adjacent road sections do not have charge
20260301,600125457,HGV_CHARGE_ISLAND,Road section has charge while adjacent road sections do not have charge
...
20260301,175206011,HGV_CHARGE_ISLAND,Road section has charge while adjacent road sections do not have charge
20260301,182199033,HGV_CHARGE_ISLAND,Road section has charge while adjacent road sections do not have charge
20260301,600125457,HGV_CHARGE_ISLAND,Road section has charge while adjacent road sections do not have charge
...
20260301,66178090,HGV_CHARGE_GAP,Road section has no charge while adjacent road sections have charge
20260301,72182081,HGV_CHARGE_GAP,Road section has no charge while adjacent road sections have charge
20260301,91179013,HGV_CHARGE_GAP,Road section has no charge while adjacent road sections have charge

Hoe moet ik dit zien? Is het NDW dat nog steeds bezig is om het netwerk in te voeren in hun systemen? Geometry changes kan ik begrijpen, de OSM data wijzigt ook regelmatig maar stukken toevoegen/verwijderen? GAP’s en ISLANDS’s?

Op de site van het RDW kan je lijst met wegen vinden die 1-op-1 gebaseerd is op wat je achterin de Wet vrachtwagenheffing kan vinden.

Deze dataset is gekoppeld aan het Nationaal Wegenbestand (NWB). Het NWB heeft elke maand een nieuwe versie, dus deze dataset moet ook maandelijks bijgewerkt om synchroon te blijven lopen. Ik kan me ook voorstellen dat er nog steeds onvolkomenheden in de data worden gecorrigeerd.

Ik vermoed dat “gaten” en “eilanden” betrekking heeft op het feit dat men gelijkvloerse kruispunten en rotondes niet wil meetellen voor de tolheffing. Zo kun je een tolweg gratis oversteken, en als je de tolweg volgt, kun je een paar meter gratis rijden.