BAG Geopackage niet compleet, poging te helpen

Hallo allemaal,

Om te beginnen wil ik iedereen die werkt aan de fantastische BAG data van harte bedanken. Het is echt prachtig allemaal!

Onlangs had ik een lijst nodig met alle Nederlandse straatnamen (om te downloaden), en dat viel me nog vies tegen om te vinden. Na enig zoeken kwam ik uit op de BAG GeoPackage, waar alle straatnamen te vinden zijn. Maar de waarschuwing dat ‘verblijfsobjecten met meerdere nummeraanduidingen’ ontbraken schrok ik wel van, en ik zie nu dat tienduizenden adressen niet in deze GeoPackage staan.

Heeft dit een diepe reden? Ik snap dat de entiteitsrelaties wat meer werk vergen om dit recht te krijgen. Of mogelijk is de GeoPackage eigenlijk geen Nummeraanduiding database maar een VerblijfsObject database?

Omdat ik eigenlijk andere dingen moest doen ben ik er een beetje ingedoken en ik heb nu een klein programmaatje gemaakt dat de LV-BAG XML bestanden omzet in een database waar alle adressen in staan. Dit is te vinden op GitHub - berthubert/bagconv: Convert Dutch building/dwelling administration into a simpler format - is dit mogelijk interessant voor iemand?

Ik heb het voor het gemak in het Engels beschreven omdat de BAG documentatie grotendeels in het Nederlands is.

Graag hoor ik of ik een wiel ronder heb zitten maken of dat dit mogelijk nuttig is!

Met vriendelijke groet,

Bert Hubert

@Just_OSGeo dat lijkt me een mooie vraag voor jou :smiley:

1 like

Hmmm. Heb er zelf niet naar gekeken, maar 't zou me niets verbazen als straten zonder adressen ook niet in dat geopackage zitten…

Neem je ook de geometrie van panden en verblijfsobjecten mee? Dan zou 't, even afgezien van hoe je het precies aanpakt, wel een mooie en handige dataset zijn.

Als zelfs deze twee straten adresseerbare objecten hebben … dan zou je toch een eind moeten komen. :wink:

Hoi! Ja, de x en y coordinaten van een VBO zitten in de dataset, en ook de vorm van de panden:

sqlite> select x,y,geo from unified where postcode=‘2631EV’ and huisnummer=12;
x = 86312.416
y = 450918.185
geo = 86317.483 450917.998 0.0 86320.869 450918.325 0.0 86320.211 450925.52 0.0 86316.82 450925.214 0.0 86316.678 450926.708 0.0 86309.112 450925.988 0.0 86309.706 450919.746 0.0 86308.959 450919.675 0.0 86308.99 450919.356 0.0 86308.233 450919.284 0.0 86308.754 450913.809 0.0 86315.207 450914.423 0.0 86315.066 450915.906 0.0 86317.65 450916.161 0.0 86317.483 450917.998 0.0

Deze view pakt vanzelf de gerelateerde panden er bij. De database is 2GB, en hier te vinden: https://berthub.eu/tmp/bag-light-sql.zip

Ik hoop dat het nuttig is!

In het volledige BAG extract van 19 april is alleen nummeraanduiding 0114200000296873 te vinden die niet gekoppeld is aan een verblijfsobject zo te zien. BAG Viewer - Charles Darwinstraat 1 in Emmen. Maar kan zijn dat ik scheef kijk!

Dat zijn openbare ruimtes die speciaal voor die adresseerbare objecten gemaakt zijn. Ik heb ze nu even niet bij de hand, maar er zijn nogal wat openbare ruimtes in de BAG zonder adresseerbare objecten, met name in het buitengebied. Als je ze allemaal wil weten: op mijn werk-laptop heb ik de stand van februari 2023, daar heb ik de volledige lijst :wink:

1 like

Ah ok, da’s mooi. Wist je dat je daarvoor ook een geometrie-datatype voor kunt gebruiken? In plaats van een lijst met getallen?

Ik had het niet over nummeraanduidingen en VBO’s: Ik had het over Openbare Ruimtes die geen adresseerbare objecten hebben, oftewel een straatnaam zonder adressen. Daar zijn er zat van, alleen heb ik het lijstje zo gauw niet bij de hand. Ik zal wel even kijken of ik er zo gauw eentje (uit m’n hoofd) kan vinden…

Het grootste probleem daarmee is dat die dus geen (indirecte) geometrie hebben, en dus onvindbaar zijn op de kaart. OpenbareRuimte zou een geometrie moeten krijgen, vind ik nog steeds :wink:

Edit: Dat viel mee: de Kooiweg, Wanneperveen heeft geen Panden, VBO’s of Addresseerbare Objecten. En daar zijn er veel meer van, zoals gezegd heb ik morgen het lijstje (van februari dit jaar) wel voor je…

Hoi Bert,

Welkom in de wondere wereld van de BAG!
Dit is het juiste forum, er zitten hier ook mensen van Kadaster BAG team die de vaak lastige BAG-vragen kunnen beantwoorden.

Ik ken niet het BAG GeoPackage, maar de BAG heeft een uitgebreid datamodel met vele relaties, ook N:M, zodat het ‘platslaan’ in een tabel er altijd concessies worden gedaan.

Ik wil in ieder geval hier het NLExtract Open Source project [1] [2] introduceren. Dit project loopt al meer dan 12 jaar, aanvankelijk om de BAG in PostGIS in te lezen, maar inmiddels breder om alle (geo) Basisregistraties te verwerken, dus BRT, BGT, BRK etc.

In die jaren, zijn we allerlei ‘bijzonderheden’ uit de BAG wel tegengekomen: meerdere adressen aan NUM: naast Hoofadres 0 of meer Nevenadressen (denk dat je dat ook gevonden hebt), alleen hebben die weer geen eigen geometrie. Een NUM die direct naar een Woonplaats verwijst naast een OPR etc. Ook in BAG v2 veel statusattributen die geduid moeten worden bij inlezen. Hoe filter je de ‘actueelbestaande’ records uit (in NLExtract via PG VIEWs)?

Misschien heb je iets aan NLExtract. Voor BAG v2 was geen custom (Python) code nodig: voor GDAL/OGR werd een BAG Driver ontwikkeld [3], die NLExtract gebruikt. Het schema dat NLExtract genereert is hier [4]. We proberen de BAG 1:1 in te lezen, met alle relaties en historie, zonder weglatingen. Dan is het aan de toepassing om selecties te doen.

OPR is inderdaad een aparte. Wegen/straten etc worden nauwgezet in meerdere andere Basisregistraties als BRT en BGT, ook geometrisch, bijgehouden, maar ook in OpenStreetMap.
Maar missen weer een relatie met de BAG. e.e.a. is historisch zo gegroeid. Er komt unificatie middels DiSGeo, weer apart verhaal.

Goed, misschien allemaal wat teveel voor jouw toepassing, maar ook weer goede gelegenheid NLExtract ‘op de kaart te zetten’!

[1] https://nlextract.nl/
[2] GitHub - nlextract/NLExtract: Convert (ETL) and visualize free Dutch geo-datasets.
[3] Dutch Kadaster LV BAG 2.0 Extract — GDAL documentation
[4] https://docs.nlextract.nl/en/latest/_images/bagv2-schema-1.png

1 like

Dank hiervoor! Ik ben nog bezig met de geometrie goed te krijgen. Kan ook nog op meerdere manieren. Spatialite ziet er veelbelovend uit!

De Kooiweg in Wanneperveen staat wel in mijn database, maar inderdaad zonder gekoppelde Nummeraanduidingen…

Hoi! Ik zie dat NlExtract echt een miljoen keer meer kan dan mijn projectje! Ik zag niet 1 2 3 hoe ik met de huidige XML aan de slag kan (wel de oude versie).
Over relationele conversie, misschien zie ik het te simpel, maar met wat koppeltabellen zijn de N:M relaties prima te vangen lijkt het.

Mijn oude werkplek bijvoorbeeld, Binnenhof 19 in Den Haag:

sqlite> select * from vbos,vbo_num,nums where vbos.id='0518010000692261' and vbo_num.num = nums.id and vbo_num.vbo=vbos.id;
|        id        |  gebruiksdoel  |     x     |     y      |           status           | oppervlakte | type |       vbo        |       num        | hoofdadres |        id        |    ligtAanRef    |  woonplaats   | postcode | huisnummer | huisletter | huistoevoeging |        status         | ligtInRef |
|------------------|----------------|-----------|------------|----------------------------|-------------|------|------------------|------------------|------------|------------------|------------------|---------------|----------|------------|------------|----------------|-----------------------|-----------|
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726        | vbo  | 0518010000692261 | 0518200000692257 | 1          | 0518200000692257 | 0518300000201432 | 's-Gravenhage | 2513AA   | 17         |            |                | Naamgeving uitgegeven |           |
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726        | vbo  | 0518010000692261 | 0518200000692258 | 0          | 0518200000692258 | 0518300000201432 | 's-Gravenhage | 2513AA   | 18         |            |                | Naamgeving uitgegeven |           |
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726        | vbo  | 0518010000692261 | 0518200000692259 | 0          | 0518200000692259 | 0518300000201432 | 's-Gravenhage | 2513AA   | 19         |            |                | Naamgeving uitgegeven |           |
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726        | vbo  | 0518010000692261 | 0518200000692260 | 0          | 0518200000692260 | 0518300000201432 | 's-Gravenhage | 2513AA   | 20         |            |                | Naamgeving uitgegeven |           |

Dit is een verblijfsobject met meerdere nummeraanduidingen. Via de vbo_num koppeltabel zijn N:M relaties mogelijk tussen VBO en NUM.

Vergelijkbaar is er een pnd_vbo tabel, met bijvoorbeeld dit appartement in Scheveningen dat samen in 1 pand zit samen met 48 andere verblijfsobjecten:

sqlite> select * from alllabel where straat='Scheveningseslag' and huisnummer='3';
|      straat      | huisnummer | huisletter | huistoevoeging |  woonplaats   | postcode |     x     |     y      | oppervlakte | gebruiksdoel | bouwjaar |      num_status       |         vbo_status         | vbo_type |      num_id      |      vbo_id      |      opr_id      |      pnd_id      |
|------------------|------------|------------|----------------|---------------|----------|-----------|------------|-------------|--------------|----------|-----------------------|----------------------------|----------|------------------|------------------|------------------|------------------|
| Scheveningseslag | 3          |            |                | 's-Gravenhage | 2586CJ   | 79044.847 | 458691.553 | 133         | woonfunctie  | 1991     | Naamgeving uitgegeven | Verblijfsobject in gebruik | vbo      | 0518200000445262 | 0518010000445263 | 0518300000200659 | 0518100000272162 |

Alle andere VBO’s zijn te vinden met:

sqlite> select * from vbo_pnd,vbos,vbo_num,nums,oprs where pnd='0518100000272162' and vbos.id=vbo_pnd.vbo and vbo_num.vbo = vbos.id and nums.id = vbo_num.num and oprs.id = nums.ligtAanRef order by huisnummer;
|       vbo        |       pnd        |        id        |      gebruiksdoel       |     x     |     y      |           status           | oppervlakte | type |       vbo        |       num        | hoofdadres |        id        |    ligtAanRef    |  woonplaats   | postcode | huisnummer | huisletter | huistoevoeging |        status         | ligtInRef |        id        |       naam       | type | ligtInRef | verkorteNaam |
|------------------|------------------|------------------|-------------------------|-----------|------------|----------------------------|-------------|------|------------------|------------------|------------|------------------|------------------|---------------|----------|------------|------------|----------------|-----------------------|-----------|------------------|------------------|------|-----------|--------------|
| 0518010000445263 | 0518100000272162 | 0518010000445263 | woonfunctie             | 79044.847 | 458691.553 | Verblijfsobject in gebruik | 133         | vbo  | 0518010000445263 | 0518200000445262 | 1          | 0518200000445262 | 0518300000200659 | 's-Gravenhage | 2586CJ   | 3          |            |                | Naamgeving uitgegeven |           | 0518300000200659 | Scheveningseslag | Weg  | 1245      |              |
| 0518010000378332 | 0518100000272162 | 0518010000378332 | woonfunctie             | 79052.043 | 458698.676 | Verblijfsobject in gebruik | 120         | vbo  | 0518010000378332 | 0518200000378331 | 1          | 0518200000378331 | 0518300000200659 | 's-Gravenhage | 2586CJ   | 5          |            |                | Naamgeving uitgegeven |           | 0518300000200659 | Scheveningseslag | Weg  | 1245      |              |
| 0518010000679480 | 0518100000272162 | 0518010000679480 | overige gebruiksfunctie | 79052.966 | 458679.956 | Verblijfsobject in gebruik | 993         | vbo  | 0518010000679480 | 0518200000679479 | 1          | 0518200000679479 | 0518300000200283 | 's-Gravenhage | 2586EL   | 6          |            |                | Naamgeving uitgegeven |           | 0518300000200283 | Harteveltstraat  | Weg  | 1245      |              |
...

Ook omgekeerde relaties, VBO’s met meerdere panden zijn zo goed te vangen.

Over de actuele bestanden, ik filter nu op eindDatum, en als die er is beschouw ik het record als oud.

Ook verwerk ik het ligtIn veld in nummeraanduidingen, zijn toch 3000 nummeraanduidingen die in een andere woonplaats liggen.

Ik focus me op een beperkte functionaliteit, maar die wil ik wel goed houden, dus dank voor de tips!

Mooi! Da’s ook precies zoals het moet :slight_smile:
Er moeten er nog veel meer zijn zonder adressen, zoals bijvoorbeeld ook de Roskamsteeg in Amsterdam. Het komt niet alleen in het buitengebied voor…

Beste Bert,

Misschien is https://www.geoparaat.nl ook zinvol voor je.
Deze gratis geopackage bevat o.a. ook een volledige adressentabel.

groet,

Martin

Hoi Martin - ziet er ook veelbelovend uit, en neem ik graag op in het lijstje met links. Ik zie wel staan " * Nevenadressen zijn (nog) niet meegenomen. Mocht daar interesse in zijn, kunnen deze later worden toegevoegd". Zit Binnenhof 19, 's-Gravenhage, in de geoparaat set voor zover je weet?

Ha leuk, “Binnenhof” was 10 jaar geleden ook de NLExtract use case voor Nevenadressen:

Dit topic is 180 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.