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, als yyyymmdd-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 na BAG_RecentYear worden 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_upper en 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_LaaghoogteNietWoon en VBO_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, in SourceData/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 met BAG_WP5_rel_Ontkoppeld; omdat het een positionele array zonder sleutel is, toetst een IntegrityCheck of 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 utiliteitsfuncties utiliteit_combi. Voor de oppervlaktekolommen wordt het oppervlak van zo’n combi-object verdeeld over de functies die het zelf heeft, met een verdeelsleutel uit ModelParameters/Werken/UtiliteitCombi; de tellingen blijven het object bij utiliteit_combi tellen, 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 schakelaar ModelParameters/Werken/BAG_LogistiekDynamisch wordt 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.

Table of contents