BAG verwerking
De Basisregistratie Adressen en Gebouwen (BAG) is de belangrijkste bron voor de gebouwde omgeving in het model. Uit de BAG worden panden en verblijfsobjecten (vbo’s) afgeleid, inclusief hun gebruiksdoel, oppervlakte, bouwjaar en status. Deze pagina beschrijft hoe de BAG wordt verwerkt: van de ruwe XML-levering van het Kadaster tot de jaarlijkse snapshots waarmee het model rekent.
Het kernidee van de BAG-verwerking is dat niet één momentopname wordt ingelezen, maar de volledige levensloop van elk object: alle statussen en geldigheidsperioden. Daardoor kan het model on-the-fly een snapshot maken van de BAG op elke gewenste peildatum, zonder dat per jaar een aparte BAG-levering nodig is. Dit gebeurt ook daadwerkelijk: voor elk jaar vanaf 2012 tot en met BAG_RecentYear wordt een snapshot per 1 januari gegenereerd.
De verwerkingsketen
LVBAG-extract (XML, Kadaster)
│
│ BAG-tools: XML2FSS (buiten RSopen)
▼
FSS-bestanden per objecttype %BAG_DataDir%/<BAG_file_date>/
│
│ MaakVolledigeBAG (eenmalig per BAG-levering)
▼
VolledigeTabel %RSo_DataDir%/Vastgoed/VolledigeTabel_<BAG_file_date>/
│ (pand.mmd, vbo.mmd, nummeraanduiding.mmd, ...)
│
│ VolledigeBAG (inlezen + verrijken)
▼
On-the-fly snapshots per jaar BAG/PerJaar/Y2012 ... Y<BAG_RecentYear>
(peildatum 1 januari)
Stap 1: downloaden van de BAG (XML)
Het Kadaster levert de BAG als LVBAG-extract: een verzameling XML-bestanden met daarin alle voorkomens van alle objecten, dus inclusief de volledige mutatiehistorie. Dit extract wordt gedownload en lokaal opgeslagen.
Stap 2: XML naar FSS met BAG-tools
Met het script XML2FSS uit de BAG-tools (een aparte GeoDMS-configuratie van Object Vision) worden de XML-bestanden omgezet naar FSS-bestanden, het binaire opslagformaat van GeoDMS. Het resultaat staat in %BAG_DataDir%/<BAG_file_date>/, met per objecttype een bestand; de grote objecttypen pand en vbo zijn opgeknipt in een reeks deelbestanden (“filesets”: pand/fs_1.fss tot en met pand/fs_N.fss). Deze stap valt buiten de RSopen-configuratie.
Stap 3: MaakVolledigeBAG genereert de VolledigeTabel
De container MaakVolledigeBAG leest de FSS-deelbestanden in, voegt ze samen tot één tabel per objecttype, vereenvoudigt de geometrieën en schrijft het resultaat weg als de VolledigeTabel. Deze stap hoeft maar één keer per BAG-levering te draaien. Zie VolledigeBAG voor de details.
Stap 4: VolledigeBAG leest in en verrijkt
De container VolledigeBAG leest de VolledigeTabel in en leidt per record attributen af, waaronder:
status_rel: koppeling van de statusstring aan de statusclassificatie (zie BAG statussen en voorraad);Begindatum/Einddatum: de geldigheidsperiode van het voorkomen, alsyyyymmdd-getal;IsVoorraad: telt dit object mee in de voorraad volgens de CBS-definitie?Bouwjaar_trunc: bouwjaar, getrunceerd (implausibele bouwjaren tot en met 1005 en bouwjaren naBAG_RecentYearworden null, bouwjaren voor 1500 worden 1500);Footprint: pandoppervlakte op maaiveldniveau (m²);oppervlakte_trunc: de gebruiksoppervlakte van het vbo, met de foutcodes van de BAG op null en een ondergrens voor elk object. Voor woonobjecten gelden twee bovengrenzen op een woningmaat (ModelParameters/Wonen/VBO_opp_truncation_upperen vijf keer de pandvoetafdruk); voor niet-woonobjecten wordt de oppervlakte geklemd op wat er fysiek in het pand past, uit de voetafdruk en de pandhoogte van de AHN-pandenset (ModelParameters/Advanced/VBO_opp_LaaghoogteNietWoonenVBO_opp_TolerantieNietWoon);- gebruiksdoel-vlaggen per vbo (zie hieronder);
- selectiecondities: alleen records met een geometrie binnen de bounding box van Nederland, panden met een omvang kleiner dan 1×1 km, en binnen het gekozen studiegebied (
ModelParameters/StudyArea).
Eén pand of vbo kan in deze tabel meerdere records hebben: elk voorkomen (elke statuswijziging) is een eigen record met een eigen geldigheidsperiode. Dat is precies wat de on-the-fly snapshots mogelijk maakt.
Stap 5: snapshots per jaar
De container BAG/PerJaar maakt via het sjabloon PerJaar_T voor elk jaar een snapshot met als peildatum 1 januari. Een record telt mee in het snapshot van jaar JJJJ als:
Begindatum < JJJJ0101 && Einddatum >= JJJJ0101
Per jaar worden drie selecties gemaakt, voor zowel panden als vbo’s:
| Selectie | Aanvullend criterium | Gebruik |
|---|---|---|
pand / vbo (“Voorraad”) | IsVoorraad | De voorraad volgens de CBS-definitie. Dit is de hoofdselectie waar de startstaat, geschiktheden en de meeste analyses op draaien. |
pand_alle_statussen / vbo_alle_statussen | geen (alle statussen) | Identificatie van objecten in aanbouw of gevormd, ten behoeve van BAG nieuwbouw. |
pand_alle_statussen_toekomst / vbo_alle_statussen_toekomst | Begindatum >= JJJJ0101 (in plaats van <) | Voorkomens die pas na de peildatum geldig worden: verleende bouw- en sloopvergunningen. Ook ten behoeve van BAG nieuwbouw. |
Welke statussen wel en niet tot de voorraad horen staat uitgewerkt op BAG statussen en voorraad.
Afgeleiden per snapshot
Binnen elk jaarsnapshot worden vervolgens de modelrelevante grootheden berekend:
- Woonpandtype (WP5): op basis van de pandgeometrie (buurpanden) en het aantal woon-vbo’s wordt elk pand getypeerd als vrijstaand, twee-onder-één-kap, hoekwoning, tussenwoning of appartement (
AfleidingPandType, inSourceData/Vastgoed/BAG/AfleidingPandtype.dms). Hieruit worden de grovere indelingen WP4/WP3/WP2/WP1 afgeleid. De typering is een ontkoppeld bestand per pandenset en jaar, gelezen metBAG_WP5_rel_Ontkoppeld; omdat het een positionele array zonder sleutel is, toetst eenIntegrityCheckof het bij de pandenset hoort met de regel dat een pand met meer dan één woon-vbo een appartement is. - Gebruiksdoelen: een vbo kan meerdere van de elf BAG-gebruiksdoelen hebben; deze worden opgeslagen als bitmask (
functie_code). Het dominante gebruiksdoel volgt de CBS-methodiek: heeft het vbo een woonfunctie, dan woon; anders bij precies één utiliteitsfunctie die functie; bij meerdere utiliteitsfunctiesutiliteit_combi. Voor de oppervlaktekolommen wordt het oppervlak van zo’n combi-object verdeeld over de functies die het zelf heeft, met een verdeelsleutel uitModelParameters/Werken/UtiliteitCombi; de tellingen blijven het object bijutiliteit_combitellen, want een verblijfsobject valt niet te halveren. Aanvullend kent RSopen de categorie Logistiek. Die is gebaseerd op een statische pandenlijst met logistieke panden (stand 2021, zie Referenties); met de schakelaarModelParameters/Werken/BAG_LogistiekDynamischwordt die lijst aangevuld met een uit LISA afgeleide typering van nieuwbouw vanaf 2021, zodat ook recente distributiecentra als logistiek tellen in plaats van als nijverheid. Een pand in aanbouw of vergund telt pas als logistiek zodra LISA er banen ziet. Verder wordt voor panden zonder vbo (loodsen, kassen) het gebruiksdoel afgeleid uit ligging op IBIS-bedrijventerreinen of BRT-glastuinbouw. - Oppervlaktes en counts: vbo-oppervlakte per pand, footprint per gebruiksdoel, aantallen vbo’s per pand en per gridcel. Voor grootheden die over panden worden gesommeerd telt elk vbo precies één keer, bij het eerste gerelateerde pand binnen de jaarset (
eerste_pand_rel); voor de typering van een pand (welke functies zitten erin) telt een vbo bij elk gerelateerd pand mee. - Uitsmeermatrix: een toedelingsmatrix die panden verdeelt over de 25m-gridcellen die ze overlappen (
Uitsmeer_key.dms), zie de uitleg bij BAG nieuwbouw in details.
Sturende parameters
| Parameter | Locatie | Betekenis |
|---|---|---|
BAG_file_date | ModelParameters.dms | Welke BAG-levering (bestandsdatum, yyyymmdd) wordt gebruikt; bepaalt de map VolledigeTabel_<datum>. |
BAG_RecentYear | ModelParameters.dms | Het meest recente jaar waarvoor een snapshot wordt gemaakt; tevens het “recentste jaar” in het BAG-nieuwbouwmechanisme. |
BAG_DataDir | ConfigSettings.dms | Map met de FSS-bestanden uit BAG-tools (bron voor MaakVolledigeBAG). |
StudyArea | ModelParameters.dms | Studiegebied-selectie; alleen objecten binnen dit gebied worden meegenomen. |
BAG_WP5_rel_Ontkoppeld | ModelParameters.dms | Leest de WP5-typering uit het ontkoppelde bestand (TRUE) of rekent haar opnieuw (FALSE). |
BAG_LogistiekDynamisch | ModelParameters/Werken.dms | Vult de statische logistieke pandenlijst (stand 2021) aan met een LISA-afgeleide typering van nieuwbouw vanaf 2021, via een ontkoppeld bestand met alleen pand-id’s; de drempels staan in ModelParameters/Werken/LogistiekAanvulling. Hergenereren na een BAG- of LISA-vintagewissel: schakelaar tijdelijk uit, WritePrivData/LogistiekAanvulling/Generate draaien, schakelaar weer aan. |
UtiliteitCombi/Verdeelsleutel | ModelParameters/Werken.dms | Hoe het oppervlak van een combi-object over zijn eigen functies wordt verdeeld: naar de typische omvang van elke functie, in gelijke delen, of helemaal niet (dan blijft de klasse heel en gaat zij naar nijverheid). |
Gebruik in het model
De jaarsnapshots worden op veel plekken gebruikt, onder andere:
- de startstaat voor wonen, werken en verblijfsrecreatie (snapshot van
Model_StartYear); - het BAG-nieuwbouwmechanisme, dat het snapshot van het modeljaar vergelijkt met dat van
BAG_RecentYear; - geschiktheidskaarten (onder andere nabijheid detailhandel, monumentale panden, sloopkosten);
- de eigendomsstaat (verdeling vrije sector / sociale huur) en de koppeling met LISA-banen.
Relevante bronbestanden
| Bestand | Rol |
|---|---|
SourceData/Vastgoed/BAG.dms | Hoofdbestand: VolledigeBAG (inlezen VolledigeTabel) en PerJaar (snapshots via PerJaar_T) |
SourceData/Vastgoed/BAG/MaakVolledigeBAG.dms | Genereert de VolledigeTabel uit de FSS-bestanden van BAG-tools |
SourceData/Vastgoed/BAG/AfleidingPandtype.dms | Afleiding woonpandtype (WP5) per snapshot |
SourceData/Vastgoed/BAG/Uitsmeer_key.dms | Toedelingsmatrix van pand naar gridcellen |
Classifications/Vastgoed/BAG.dms | Statusclassificaties, voorraad-vlaggen, gebruiksdoelen, WP-indelingen en de verdeelexpressies voor utiliteit_combi |
WritePrivData/LogistiekAanvulling.dms | Genereert de LISA-afgeleide aanvulling op de logistieke pandenlijst (ontkoppeld bestand met alleen pand-id’s); de replicatie-toets waarmee de regel is gekalibreerd staat ernaast in WritePrivData/LogistiekReplicatie.dms |
Verantwoording
De keuzes hierboven zijn gemaakt in de volgende issues; daar staat de afweging en de meting die eraan ten grondslag ligt.
- #48 in de fork pbl-nl/model-RSopen: elk vbo telt in sommeerbare grootheden precies één keer, bij het eerste gerelateerde pand binnen de jaarset.
- #222: panden zonder vbo krijgen een gebruiksdoel uit hun ligging op IBIS-bedrijventerreinen of BRT-glastuinbouw.
- #667: het oppervlak van een combi-object wordt verdeeld over de functies die het zelf heeft.
- #700: de bovengrenzen op de vbo-oppervlakte gelden alleen voor woonobjecten; niet-woonobjecten worden geklemd op wat er fysiek in het pand past.
- #703: de logistieke typering van nieuwbouw volgt LISA en niet een heuristiek op pandkenmerken.