ProRail gebruikt een tekstformaat genaamd KRDZ (wat volgens mij staat voor koördinatenbestand met Z) voor het uitwisselen van meetgegevens van het spoor. Meetbedrijven leveren metingen als KRDZ aan ProRail, en uit de ProRail applicatie Sigma kun je metingen als KRDZ downloaden. De opbouw van zo’n bestand is beschreven in een bijlage van de RLN000296 Absolute Spoorgeometrie. Hier een paar voorbeeldregels:
1012 127363.464 462297.770 015118 -003 000.605 202206 0.010 0.015 002 54 003
1012 127363.142 462296.823 015119 -003 000.606 202206 0.010 0.015 002 54 003
S3676R 127842.158 463737.325 015120 000 002.747 202206 0.010 0.050 000 00 003
18 125547.021 457608.406 015121 000 008.217 202206 0.010 0.015 000 00 003
Een KRDZ bestand kan zowel punten als lijnen bevatten. Vertices van lijnen hebben daarbij altijd een viercijferige code. Voor het bekijken van de inhoud van een KRDZ bestand zou het natuurlijk ontzettend handig zijn om deze niet alleen als puntjes te bekijken (wat met de tekst-import van QGIS makkelijk te realiseren is) maar ook de lijnen daadwerkelijk als lijnen te plotten. Hiervoor heb ik een Python script geschreven, deze kun je hier downloaden.
Dit script vertaald een KRDZ bestand naar twee 3D shapefiles. De verkanting wordt als m-waarde aan elke vertex meegegeven. Je kunt hem in QGIS gebruiken door de Python console te openen, daar de editor te tonen en het script te laden en uit te voeren (wel handmatig het pad naar het KRDZ bestand opgeven).
Een aantal dingen kunnen nog verbeterd of aangepast worden:
- Streng gezien dient een lijn te eindigen met een punt dat een code heeft die op 0 eindigt, niet 2. Bij Sigma exports is dit echter niet het geval. Mocht je een script willen hebben die hiermee goed omgaat dan zou je een check moeten toevoegen op 0 als laatste cijfer en dit punt toevoegen aan de lijst van punten voordat de feature wordt aangemaakt.
- Er wordt nu alleen de code als attribuut meegegeven, de andere attributen zoals meetdatum worden genegeerd.
- Lijnen worden pas geknipt bij 100m afstand tussen de vertices, wat voor sommige bestanden teveel kan zijn.
- Er wordt nu een enkel bestand gelezen. Je zou ook alle bestanden in een map of evt. zelfs in submappen (met os.walk) kunnen inlezen.
- Puntvormige objecten met een code die uit vier cijfers bestaat (zoals P7/7 voor een bovenleidingsmast) worden nu niet meegenomen. Met isnumeric() zou je kunnen checken of het daadwerkelijk een lijncode is.
Een gedachte over “KRDZ bestanden lezen met QGIS”
KRDZ betekent koordinaten RD met Z.