Eenmalig bulk aanpassen BAGID

In het verleden is bij het importeren van objecten uit de BAG een voorloop 0 weg gevallen bij het BAGID
Inmiddels is dat probleem in de BAG import tool opgelost.
Wat is het probleem ? Volgens de definitie is een BAGID samengesteld uit de gemeentekode (van 4 digits) + een unieknummer van 12 digits, totaal dus 16 karakters.
Het probleem is dat sommige gemeentekodes met een 0 beginnen, b.v. Eindhoven is 0772.
Door een of andere oorzaak is in het verleden die eerste 0 weggevallen bij het importeren. Dit is een probleem als bv. een koppeling wilt maken met BAG viewer want deze vereist 16 digits voor een BAGID.
En bij het importeren van een nieuwe geometrie (bv. na een verbouwing) vereist dat extra handelingen omdat het BAGID nu wel met de voorloop 0 wordt geïmporteerd en dat is lastig.

Ik wil daarom een projectje opstarten om alle “foute” BAGID’s aan te passen.

Ik heb wat online onderzoek gedaan en ben gekomen tot de volgende procedure.

Implementatie voorloop 0 bij ref:bag

Het idee is omdat per gemeente te doen.
Hierdoor blijft het nog enigszins overzichtelijk.

  1. Download het gebied in JOSM
  2. gebruik een filter om alleen object met een ref:bag tag te selecteren en waar het BAGID begint met een gemeentecode zonder voorloop 0
    Voorbeeld: “ref:bag”~772.+ and -preset:“Relations/Multipolygon”
  3. kopieer de selectie naar een aparte laag M
  4. Selecteer alle objecten (dat kunnen dus alleen gebouwen zijn die in de BAG staan) op deze laag en voeg een FIX_ME tag toe, dit om action=‘modify’ toe te voegen aan alle objecten.
    Ik wil de tag FIX_ME is geen vergissing, ik wil de bestaande tag fixme niet gebruiken om te voorkomen dat bestaande opmerkingen verloren gaan.
  5. Slaan de laag op in een .osm bestand.
  6. Open het .osm bestand in een editor bv. notepad++
  7. Vervang het BAGID met zoek = “<tag k=‘ref:bag’ v='772” en vervang = “<tag k=‘ref:bag’ v='0772”
  8. Laad jet nieuwe bestand in JOSM
  9. verwijder de FIX_ME tag
  10. upload de wijzigingen

Wat denken jullie hiervan ?
Heeft iemand een ander / beter idee ?

1 Like

Omdat om heel erg veel objecten gaat vraag ik me af of dat wel nut heeft.

Een BAG ID als 70100000316017 werkt in JOSM bijvoorbeeld gewoon als je via de shortcut die link volgt. Elke data-consumer die iets met de BAG ID in OpenStreetMap doet kan triviaal de voorloopnul erbij zetten immers.

In Python:

bag_id = '70100000316017'
print(f'{bag_id:>016}')
0070100000316017

Je lost dus een niet noemenswaardig probleem op, terwijl je wel massaal nieuwe versies van objecten creëert. Het is voor mappers erg fijn om aan de laatste bewerking van een object te kunnen zien wanneer die voor het laatst zinvol is aangepast. Bij een gebouw dat sinds 2014 niet is aangeraakt is het aannemelijker dat de luchtbeelden inderdaad op sloop wijzen, terwijl bij 2025 de kans groot is dat het pand in aanbouw is (of in ieder geval even een blik op de BAGViewer nuttig is). Dat ga je verstoren. De balans lijkt me dus een beetje zoek bij dit project.

4 Likes