Dichtheid
Dichtheid bepaalt hoeveel actoren of objecten per eenheid oppervlak aan een locatie worden toegewezen. Het is een van de meest invloedrijke onderdelen van het model: hogere dichtheden leiden tot meer binnenstedelijke ontwikkeling en minder uitbreiding, en vice versa. Deze pagina beschrijft per sector hoe dichtheden worden berekend, welke parameters daarbij een rol spelen en welke aannames daaraan ten grondslag liggen.
Rol in het model
Dichtheid wordt gebruikt in fase 4 van de pre-allocatiestappen (zie Modelstructuur op hoofdlijnen). Zodra de allocatie een locatie toewijst aan een subsector, bepaalt de dichtheid hoeveel woningen, banen of megawatt op die locatie worden gerealiseerd. De dichtheid bepaalt daarmee indirect ook hoeveel locaties nodig zijn om een regionale claim te vervullen: bij hogere dichtheid zijn minder locaties nodig.
Dichtheden zijn variant-specifiek en worden ingesteld via VariantK.dms en de ontwikkelpakketten. Ze veranderen ook in de tijd: per zichtjaar worden groeifactoren toegepast.
Woningdichtheid
De woningdichtheid (woningen per hectare) wordt per subsector (woningtype × eigendomsvorm) bepaald via ontwikkelpakketten. Een ontwikkelpakket specificeert per woningtype de dichtheid op netto-buurtniveau, die vervolgens wordt vertaald naar celniveau.
Ontwikkelpakketten
De ontwikkelpakketten zijn gedefinieerd in VariantParameters/Ontwikkelpakketten/NettoBuurt/ en worden per variant samengesteld via de kolom OP_Aanvulling in VariantK.dms. Die kolom wijst sinds #721 geen complete tabel meer aan, maar een aanvullingsblok: de set van een variant is de default-set met de eigen rijen van die variant erachter, of alleen de default wanneer de kolom geen zegt. Daarvoor zaten alle pakketten in elke variant en gooide de zeef de variantvreemde er per cel weer uit. Elk pakket specificeert per woningtype (eengezins/meergezins, vrijstaand/rijtjes/appartement, etc.) de dichtheid in woningen per hectare op netto-buurtniveau.
De netto buurt is het enige schaalniveau dat de pakketten nog kennen. Tot #722 zat er een tussenlaag die de keuze tussen netto en bruto buurt openhield; met het uitfaseren van de bruto buurt zijn die keuze en die laag vervallen.
De dichtheid is overigens geen ingevoerde kolom maar een afgeleide: FSI maal tienduizend gedeeld door het bruto vloeroppervlak per woning, en dat laatste volgt weer uit de woninggrootte en de vormfactor. Wat een pakket verder vastlegt en hoe het winnende pakket per cel wordt gekozen staat op Uitwerking wonen.
Maximale woningdichtheid
Naast de dichtheid uit het ontwikkelpakket gelden er bovengrenzen die locatiespecifiek zijn. De maximale woningdichtheid wordt opgebouwd uit meerdere componenten:
-
Waargenomen dichtheid in het basisjaar, berekend op meerdere schaalniveaus (cel, buurt, wijk, gemeente, NVM-regio, COROP, provincie). Per cel wordt het maximum van deze niveaus genomen.
-
Dichtheidsfactoren: vermenigvuldigingsfactoren die de waargenomen dichtheid verhogen op basis van locatiekenmerken. Per combinatie van woningtype (EG/MG) en locatiekenmerk wordt een factor ingesteld:
DichtheidFactorGeneriek: basisfactor, geldt overal. Bestaat net als de locatiespecifieke factoren in drie smaken:_EG,_MGen_NietWonen. In de toepassing NL2120 staat hij op 1,0, met een uitzondering: eengezins in de variant NbSGenuanceerd staat op 0,80. Die getallen horen bij het project en niet bij de methodeDichtheidFactorOV: bij nabijheid van een railhalteDichtheidFactorWater: bij nabijheid van groot water binnen bestaand bebouwd gebiedDichtheidFactorBevKern100kPlus/20kPlus/20kMin: bij ligging rond een bevolkingskern van die grootte
Elk van de locatiespecifieke factoren bestaat in drie smaken: eengezins, meergezins en niet-wonen. Ze worden additief gecombineerd, niet multiplicatief: de uiteindelijke factor is
1 + (OV - 1) + (Water - 1) + (Kern - 1) + (Generiek - 1). Van de drie kernfactoren telt er hooguit een mee; een cel valt in de grootste categorie die van toepassing is.De uitkomst wordt niet rechtstreeks als plafond gebruikt. De waargenomen dichtheid maal de factor wordt eerst ruimtelijk uitgesmeerd met een afstandsgewogen potentiaal over 2000 meter, zodat een enkele hoge cel geen scherpe piek in het plafond geeft, en daarna afgezet tegen de minimumdichtheid. Het maximum staat op
AllocDomain, dus op 100 meter. -
Landschapsbeperkingen: in mooi en zeer mooi landschap gelden afzonderlijke maxima (
MaxDichtheidInMooiLandschap,MaxDichtheidInZeerMooiLandschap). -
Minimale dichtheden: het plafond zakt nooit onder de laagste dichtheid die de ontwikkelpakketten van dat woningtype kennen. Die ondergrens komt dus uit de pakketten zelf en niet meer uit aparte variantparameters per woningtype; die zijn verwijderd.
MinimumDichtheidToenameWonen
De parameter MinimumDichtheidToenameWonen stelt een ondergrens aan de relatieve dichtheidstoename. Het referentiepunt is niet de stand aan het begin van het zichtjaar maar de basisjaarstate: de toets deelt het verschil tussen de potentiële stand en de basisjaarstand door die basisjaarstand, en dat in elk zichtjaar opnieuw. Een cel komt alleen in aanmerking voor woningbouw als die relatieve toename boven de drempel uitkomt. Op greenfield, waar de basisjaarstand nul is, geldt de toets niet: daar valt niets te verliezen. Dit voorkomt dat het model marginale verdichtingen doorvoert die in de praktijk onrealistisch zijn. In de toepassing NL2120 staat de drempel in alle vier de varianten op 0,10, oftewel tien procent; die waarde hoort bij het project en niet bij de methode.
Werkdichtheid
De werkdichtheid wordt uitgedrukt in m² pandfootprint per hectare en is conceptueel anders dan de woningdichtheid: ze wordt niet voorgeschreven via pakketten, maar afgeleid uit waargenomen verhoudingen tussen pandfootprint en banen.
Pandfootprint per baan
De kernberekening is de pandfootprint per baan (PandFootprint_baan.dms). Per Jobs6-subsector (nijverheid, logistiek, detailhandel, overige consumentendiensten, zakelijke dienstverlening, overheid/kwartaire diensten) wordt de verhouding m² pandfootprint / aantal banen berekend. Dit kan op twee manieren:
- Smoothed (standaard): teller en noemer worden per cel uitgesmeerd met een potentiaalfunctie met afstandsverval over 5000 m, waardoor overgangen tussen regio’s geleidelijk verlopen. Beide krijgen daarbij een ondergrens (
PandFootprint_Ondergrens,Job_Ondergrens) om uitschieters uit de deling te houden. - PerRegio: de verhouding wordt op NVM-regioniveau berekend en teruggeprojecteerd naar gridcellen. Dit geeft scherpe overgangen op de regiogrenzen.
De keuze wordt ingesteld via ModelParameters/Werken/Type_m2perBaan, die op Smoothed staat. Deze pagina noemde tot september 2026 PerRegio als standaard, en dat klopte niet.
Het berekeningsjaar voor de pandfootprint-per-baan ratio is expliciet gekoppeld aan het LISA-peiljaar (PandFootprint_per_job_calc_yr). Dit waarborgt dat teller (pandfootprint uit BAG) en noemer (banen uit LISA) uit hetzelfde jaar komen. Zie Tijdsdynamiek voor de achtergrond.
Maximale werkdichtheid
Analoog aan wonen wordt de maximale werkdichtheid afgeleid uit waargenomen dichtheden in het basisjaar, vermenigvuldigd met een dichtheidsfactor. De dichtheidsfactoren voor werken (DichtheidFactorOV_NietWonen, DichtheidFactorWater_NietWonen, etc.) volgen dezelfde structuur als bij wonen.
De parameter MinimumDichtheidToenameWerken werkt op dezelfde manier, en ook hier is het referentiepunt de basisjaarstand en niet de stand aan het begin van het zichtjaar. Er is wel een verschil met wonen: bij werken is de noemer de hele werkgelegenheid in de cel die binnen bereik van de subsector ligt, en niet die van de subsector zelf. Dat is bewust, want de subsector die een cel wint sloopt alle andere die er staan; de toets werkt daarmee als een saldotoets die verlies voorkomt. Ook hier geldt: staat er niets, dan geldt de toets niet. In de toepassing NL2120 staat de drempel op 0,10; ook die waarde is projectspecifiek.
Groeifactoren
Per zichtjaar worden de pandfootprint-per-baan verhoudingen aangepast via jaarlijkse groeifactoren. Deze zijn gedefinieerd in VariantK.dms per Jobs6-subsector (bijv. Nijverheid: 1% per jaar, Logistiek: 0.5% per jaar). De groeifactor wordt toegepast over de periode tussen het voorgaande zichtjaar en het huidige:
PandFootprint_perJob_zichtjaar = PandFootprint_perJob_vorig × (1 + groeifactor × aantal_jaren)
Het aantal jaren in die formule is niet de volle periode tussen twee zichtjaren maar de helft ervan (Groeifactor_WanneerToepassen, 0,5), zodat de verdunning halverwege het interval aangrijpt. De effectieve verdunning is daarmee de helft van de ingestelde voet: 0,5 procent per kalenderjaar voor nijverheid en 0,25 voor logistiek. Beide liggen bewust onder de trend uit het rapport Ruimte voor werken, dat 2 en 1 procent geeft; die trend vlakt sinds 2012 af. Vanaf JaarVanafWaarGeenWerkdichtheidMeerAangepastWordt wordt de verdunning helemaal niet meer toegepast.
Dit mechanisme modelleert de trend dat industriële en logistieke functies in de loop der tijd meer ruimte per baan innemen. Voor kantoren geldt een apart mechanisme via de kantoorcoefficient (m2BVO_job_Kantoor_groeifactor), die de thuiswerkeffecten op de m² per baan verdisconteert.
Thuiswerkverdikking bij kantoren
Voor zakelijke dienstverlening werkt de kantoorcoefficient anders dan de trendmatige groeifactoren hierboven. De verdikkingsfactor volgt uit de verhouding tussen het doel (VariantK/m2BVO_job_Kantoor, 17,5 m2 BVO per baan) en de coefficient in het basisjaar (ModelParameters/Werken/m2BVO_job_Kantoor_Basisjaar). Die noemer was tot ObjectVision/RSopen#668 de pre-coronawaarde 2020, terwijl de pandvoetafdruk per baan waarop de factor aangrijpt uit het waarnemingsjaar komt; bureaudeling van voor het basisjaar telde daardoor dubbel. De factor is een niveauverschuiving die elk zichtjaar opnieuw op de basisjaarwaarneming wordt gelegd en dus niet compoundt; de zichtjaarketen loopt via Subsectoren0, zonder de override.
Tot #668 bestond er daarnaast een tweede kanaal: een eenmalige ophoging van het aantal kantoorbanen in elke bestaande cel (Thuiswerk_verdikking_ook_op_bestaandekantoren, nu FALSE). Banen zijn echter exogeen en vormen de claim, dus die ophoging ging rechtstreeks van de restclaim af en zette de kantoorallocatie stil: geen enkele NVM-regio hield een positieve restclaim over.
Sinds #668 landt de bureaudeling in de bestaande voorraad via de schakelaar KantoorVerdikkingInBestaand met KantoorDominantieDrempel (0,90). Het reguliere potentieel is het omgevingsgemiddelde (max over de eigen cel en de regiogemiddelden, over 2000 m uitgesmeerd) en geen pandcapaciteit; dichte kantoorcellen hadden daardoor een potentieel onder hun eigen stand en konden nooit verdichten, terwijl daar 40 procent van de kantoorbanen stond. Drie ingrepen, alle op cellen waar kantoor in het basisjaar de werkstand domineert (BaseData/Omgeving/KantoorDominantie):
- een potentieelvloer van de eigen werkstand maal de verdikkingsfactor, sinds #770 per cel van 25 meter in de potentiële stand (
PotentieleStates/PerSectorxSubsector_T/Vloer); tot #770 stond hij per hectare in de dichtheidsketen (DichtheidZichtjaar_T), wat met een saldotoets per cel niet meer werkt omdat de werkstand van de dominante cellen dan over de hele hectare wordt uitgesmeerd - trede-voorrang boven greenfield (
Tredes/Werken/Zak_dienstverlening) plus prioriteit 4 in de subsectorkeuze - het vervallen van de sloopleeftijd- en IBIS-vol-toetsen voor deze subsector in de zichtjaarzeef, en sinds #770 ook van de evident-benut-toets in de basisjaarzeef, want toewijzing is daar verdikking en geen sloop-nieuwbouw
De vloer rekent met de totale werkstand van de cel, omdat een vloer op alleen de kantoorstand pas boven een aandeel van 0,9624 door de dichtheidstoets van 10 procent komt. In een A/B-meting (wonen en werken op NVM, zichtjaar 2040) ging het aandeel nieuwe kantoorbanen op dominante kantoorcellen van 13 naar 71 procent, bij een gelijkblijvende landelijke toename.
MinimalLandAvailability
De parameter MinimalLandAvailability stelt een drempel aan de minimale beschikbare ruimte rond een cel: haalt de potentiële ruimte die drempel niet, dan wordt de cel restrictief verklaard. Sinds #770 is die ruimte de beschikbare oppervlakte in een schijf van 50 meter rond de cel van 25 meter en geldt de drempel als aandeel van die schijf; tot #770 was het de beschikbare oppervlakte binnen de cel van 100 meter. Van die toets is alleen de landbouwtak nog actief. Voor de stedelijke functies staan zowel de parameteruitlezing als de toets zelf uitgecommentarieerd in de zeef, zodat de waarde daar niets meer doet; alleen MinimalLandAvailability_Landbouw wordt nog uitgelezen, en die is nul zodra landbouw niet als sector meedraait.
De waarden staan nog wel in VariantK.dms; in de toepassing NL2120 op 0,40 ha voor de stedelijke functies en 0,60 ha voor landbouw, gebaseerd op expert judgement. Die getallen horen bij het project en niet bij de methode. Zolang de stedelijke toets uitstaat verandert het aanpassen van die 0,40 niets aan de uitkomst. Wordt de toets weer aangezet, dan geldt de gebruikelijke gevoeligheid: lagere waarden laten meer verdichting toe, want het model mag dan cellen vullen die al grotendeels bebouwd zijn, en hogere waarden duwen de ontwikkeling naar minder bebouwde locaties.
Dichtheid waterberging
De bergingscapaciteit van een cel is de bergbare waterschijf (BaseData/Suitabilities/Waterberging/Diepte, afgekapt op Maximum_Waterschijf) maal het celoppervlak van 625 m2. Sinds #770 leest de potentiële stand die schijf per cel van 25 meter. Tot #770 was de dichtheid het hectaregemiddelde van de schijf, zodat een toegelaten cel niet zijn eigen volume kreeg maar dat van zijn buren, inclusief de cellen onder een meter die de zeef er per cel uithaalt; de bergingsboekhouding sloot daardoor per cluster niet op de kaart. De dichtheid per hectare staat nog in DichtheidZichtjaar_T, maar niets leest hem meer.
Dichtheid zon en wind
Voor zon en wind worden dichtheden uitgedrukt in megawatt per hectare en zijn ze gebaseerd op technische kentallen, niet op waargenomen waarden.
Zonne-energie
Het vermogen per hectare wordt ingesteld via ModelParameters/Zon/Vermogen_ha en kent drie klassen (laag/midden/hoog). De parameter ZonCombinerenMetBestaandGroen in VariantK.dms bepaalt of zonnevelden mogen worden gecombineerd met bestaand groen landgebruik. Bij combinatie wordt het vermogen per hectare vermenigvuldigd met FractieVermogenHaIndienZonCombinerenMetBestaandGroen.
Windenergie
De dichtheid van windturbines wordt bepaald door het turbinetype (TurbineType in VariantK.dms) dat het vermogen per turbine en de benodigde onderlinge afstand specificeert. De ruimtelijke plaatsing volgt een stempelpatroon met instelbare parameters voor aantal rijen, tussenruimte en oriëntatie.
Verblijfsrecreatie
De dichtheid voor verblijfsrecreatie (recreatiewoningen per hectare) wordt afgeleid uit waargenomen dichtheden per regio, analoog aan de werkdichtheid. Er worden geen ontwikkelpakketten of groeifactoren toegepast.
Overzicht parameters
| Parameter | Sector | Eenheid | Standaard | Effect |
|---|---|---|---|---|
| MaxDichtheidInMooiLandschap | Wonen | woning/ha | 100 | Bovengrens in mooi landschap |
| MaxDichtheidInZeerMooiLandschap | Wonen | woning/ha | 50 | Bovengrens in zeer mooi landschap |
| DichtheidFactorGeneriek_EG/_MG/_NietWonen | Wonen/Werken | factor | 0.80 tot 1.00 | Generieke vermenigvuldigingsfactor |
| DichtheidFactorOV_* | Wonen/Werken | factor | 1.10–2.00 | Extra dichtheid nabij OV |
| MinimumDichtheidToenameWonen | Wonen | fractie | 0.10 | Min. relatieve verdichting, per cel van 25 meter sinds #770 |
| MinimumDichtheidToenameWerken | Werken | fractie | 0.10 | Min. relatieve verdichting, per cel van 25 meter sinds #770 |
| MinimalLandAvailability | Wonen/Werken | ha | 0.40 | Min. beschikbare ruimte per cel |
| MinimalLandAvailability_Landbouw | Landbouw | ha | 0.60 | Idem voor landbouw, sinds #770 als aandeel van een schijf van 50 meter |
| Groeifactor (per subsector) | Werken | per jaar | 0.00–0.01 | Jaarlijkse groei m²/baan |
| Vermogen_ha | Zon | MW/ha | instelbaar | Vermogen per hectare zon |
De uitvoerindicator Dichtheid_Wonen
Naast de dichtheden die de allocatie sturen rapporteert het model per zichtjaar een dichtheidsindicator, Dichtheid/Wonen onder /Indicatoren/<casus>/Zichtjaren/<jaar>, weggeschreven als raster Dichtheid_Wonen en als regionale tabel. Die maat vraagt om een leesregel, want hij meet iets anders dan zijn naam suggereert.
De teller is de hele woningvoorraad van de cel, dus inclusief de woningen die er in het basisjaar al stonden, gedeeld door het aantal hectare van de cel. Het masker eromheen is beperkend: AllocatieHeeftPlaatsgevonden toetst of het veld SubSector_rel in de stand naar de sector wonen wijst, en dat veld is alleen gevuld waar de allocatie sinds het basisjaar heeft toegeslagen. Cellen zonder allocatie vallen weg. Het landelijke getal is vervolgens een ongewogen gemiddelde over de overgebleven cellen, dus een cel met twee woningen weegt even zwaar als een cel met tweehonderd.
Het getal is daarmee noch de dichtheid van de nieuwbouw, want de bestaande voorraad zit in de teller, noch de landelijke woningdichtheid, want de cellen zonder allocatie tellen niet mee. Lees het als: hoe dicht zijn, gemiddeld genomen, de cellen waar het model in dit zichtjaar of eerder iets heeft neergezet. Voor de dichtheid van de nieuwbouw zelf zijn de ontwikkelpakketten de bron; voor een landelijk beeld is er de basisjaarvariant van dezelfde indicator, die op alle cellen met woningen maskeert in plaats van op de gealloceerde cellen. Voor werken gelden Dichtheid/Werken/Banen_ha en PandFootprint_ha op precies dezelfde constructie, met hetzelfde voorbehoud.
De inbreidingsindicator
Naast de dichtheid zelf rapporteert het model welk deel van de nieuwe woningen binnen bestaand bebouwd gebied terechtkomt. Die indicator staat onder /Indicatoren/<casus>/Zichtjaren/<jaar>/Inbreiding en levert twee landelijke fracties:
| Indicator | Betekenis |
|---|---|
FractieWoningenErbijInBestaandBebouwdGebied | Aandeel van de woningen die erbij zijn gekomen, dat in bestaand bebouwd gebied ligt |
FractieWoningenErbijInBestaandGroenInBestaandBebouwdGebied | Idem, maar op cellen die in het basisjaar groen waren binnen dat bebouwde gebied |
Beide delen bruto door bruto: de teller en de noemer tellen alleen de toename per cel (WoningenErbij), niet het netto verschil. Met het netto verschil kantelt de maat zodra er ergens gesloopt wordt en kan hij zelfs negatief worden. De netto verandering binnen bestaand bebouwd gebied staat er los naast als NettoVeranderingInBestaandBebouwdGebied; dat is een zinnig getal op zichzelf, maar geen inbreidingsaandeel.
Bestaand bebouwd gebied is hier BegrenzingBebouwdGebied, de eigen afleiding per peiljaar (ModelParameters/BegrenzingBebouwdGebied_jaar; in NL2120 het peiljaar 2022). Die begrenzing verving het VROM-raster uit 2003 en de oudere unie die elke cel met een woning of werklocatie meetelde, waardoor verspreide bebouwing als bebouwd gebied gold. Let op dat de verstedelijkingsindicator in Grondgebruiksverandering een andere afbakening gebruikt, de bevolkingskernen van 2011.
Het peiljaar raakt meer dan deze indicator alleen: via de grondproductiekosten werkt het door in de residuele waarde en daarmee in de allocatie zelf. Van peiljaar wisselen vraagt dus een volledige herberekening van alle zichtjaren.