BAG 2.0 - nog steeds N-M relatie Verblijfsobject-Pand?

Interessant voor de ontwikkelaars. In NLExtract zijn we aan het inventariseren wat de beste aanpak is voor BAG 2.0. Heel toevallig stuitte ik op een mij voorheen onbekende ontwikkeling in GDAL: een LVBAG (OGR) Driver voor BAG 2.0. Ja, je leest het goed! Daarmee zou BAG 2.0 in een keer in te lezen zijn in allerlei tools, zelfs QGIS!. Alleen, komen alle BAG “gotcha’s” voorbij. Een daarvan is de voor mij nog steeds mysterieuze relatie VBO-PND. Normaal zou je zeggen een PND (denk: flatgebouw) bevat meerdere appartementen (lees: VBOs). Maar omgekeerd kan volgens de (2.0) XSD ook: een VBO behoort bij 1 of meer PNDs!

Vraag is: is dit echt in BAG 2.0 nog steeds het geval? Zoek bijv eens in BAGViewer op VBO id 0014010010985179. Het GDAL GitHub issue is: OGR LVBAG Driver: addressable objects conversions should follow XSD · Issue #3221 · OSGeo/gdal · GitHub
en screenshot hieronder:

Maar omgekeerd kan volgens de (2.0) XSD ook: een VBO behoort bij 1 of meer PNDs!

Hmmm. Volgens mij druist dat in tegen de semantische definities: als ik me goed herinner zeggen die dat een verblijfsobject altijd helemaal binnen een pand moet liggen. En dan kan het alleen onderdeel zijn van meerdere panden als de panden (in ieder geval gedeeltelijk) over/door elkaar heen lopen! Zoals gezegd, ik heb het niet 100% scherp, maar dat is wel heel vreemd…

Mijn uitgangspunt is altijd geweest dat 1 pand meerdere vbo’s kan hebben, maar dat een vbo maar in 1 pand kan liggen. Blijkbaar heb ik dat dus fout, als je de xsd moet geloven. Raar.

De XSD’s zijn juist.

In BAG 2.0 kan een verblijfsobject inderdaad nog steeds in meerdere panden liggen. In semantisch opzicht is hierin niets veranderd. De standaardsituatie waarin dit gebeurt, is een situatie waarin een tussenmuur tussen twee bestaande panden wordt doorgebroken. In dat geval ontstaat er één functioneel geheel en dat betekent één nieuw verblijfsobject. De bestaande pandafbakening wordt echter niet aangepast. Eindsituatie is dat één verblijfsobject zich in meerdere panden bevindt.

Vaak zie je dit bij winkelpanden die via een doorbraak uitbreiden met het winkelpand van de buren en er één nieuwe grote winkel van maken.

Deze situatie komt overigens niet vaak voor. In nieuwbouwsituaties ligt een verblijfsobject gewoon in één pand.

3 likes

Ach ja, natuurlijk. Nooit stil gestaan bij dat soort situaties, maar dat zorgt er inderdaad wel voor dat je er iets mee moet. Een paar huisen verderop bij mij in de straat zijn twee woningen samen gevoegd op die manier, maar van buitenaf is dat eigenlijk niet zichtbaar - dus je ziet inderdaad nog twee panden. Je kunt natuurlijk ook beargumenteren dat de panden samengevoegd zouden moeten worden, omdat ze inmiddels fysiek 1 geheel zijn geworden, maar ik kan me voorstellen dat dat wat meer voeten in de aaarde heeft dan alleen de vbo’s aanpassen.

Dank voor de uitleg!

@PieterDijkstraBAG bedankt voor deze uitleg! We hadden nooit een use-case hiervoor. In de BAG van Januari 2021 komt deze situatie plm 20000 keer voor. Soms hoort een VBO wel bij 4 Panden.

Interessante vraag is hoe zoiets in een database te modelleren. In NLExtract, voor BAG v1, hebben we een tussentabel voor de N-M VBO-PND relatie, ook omdat je met gerelateerde status/history-waarden van PND en VBO zit. Maakt e.e.a. wel complexer. Andere mogelijkheid is een array-veld (van Pand-id’s) in VBO tabel.

Hoe modelleert bijv PDOK en PDOKViewer dit?

Ik zou een koppeltabel met begin- en einddatum gebruiken. Daarmee kun je dan de laatste versie standaard opzoeken (Einddatum is null), en voor de history kun je naar de verschillende pseude-sleutels verwijzen. Betekent wel dat je koppeltabel enorm gaat groeien, maar als je die partitioneert op einddatum zitten alle meest bevraagde koppelingen in 1 partitie. Is ook het eenvoudigst te porten naar andere databases.

De relatie met een pand is een gegeven van een verblijfsobject. Binnen een voorkomen van een verblijfsobject is het aantal gerelateerde panden altijd gelijk. In de LV BAG zelf gebruiken we een koppeltabel waarin elk voorkomen van een verblijfsobject aan een één of meer panden koppelen. Hiervan houden we ook de historie bij.

1 like

ok, ja zoals NLExtract dat voor BAG v1 doet: met tussentabel (= koppeltabel) inclusief historie.

1 like