EN Availability

This is an English translation of the Dutch page Beschikbaarheid, which is leading. Translated on 8 November 2026 from the Dutch text committed together with this page, on top of wiki commit 2eddf6a.

Before locations become eligible for allocation, they are tested for availability. A location is available if it is not restrictive for the sector and subsector concerned. The availability assessment (referred to in the model as the sieve analysis) integrates information from restrictions, planning capacity, evidently in use, the building regime and a number of sector-specific conditions. This page describes the structure and working of this sieve.

The sieve analysis

The sieve assesses per grid cell whether it is available for a given combination of sector, subsector and projection year. The result is a binary map (available/restrictive) per subsector that serves as a filter for the allocation procedure: only available cells are eligible.

The sieve operates in two steps: first in the base year, then per projection year. Both steps decide on the 25-metre cells of the compacted domain, the same unit on which the allocation chooses (#770). That is not a detail: the allocation is cell-exclusive per 25-metre cell, and what is lost in a takeover is the state of that cell, not that of the hectare around it. A test on a coarser unit would give an empty cell next to a full building the verdict of the building.

Base-year sieve

The base-year sieve (Zeef_Basisjaar_T) is built once per variant and contains the tests that do not depend on the projection year: the restriction maps, evidently in use, the environmental zoning around existing work locations, the soil and landscape tests, the building regime, the construction method test for employment and the energy label limit. The tests are in three groups, according to the exemption that planning capacity gives on them:

  1. Applies everywhere, also within planning capacity (IsRestrictief_Overal): evidently in use within planning capacity, the very hard restriction layer if it is treated separately, the building regime from the hazard zoning and from the landscape types, the construction method test for employment, the reservation for river discharge, motor roads with cloverleaf interchanges, zoos and open-air museums from the BRT, and the Stichtse Rotonde.
  2. Applies outside hard planning capacity (IsRestrictief_BuitenHardePlancapaciteit): the restriction maps of the variant, the energy label limit, the soil tests, beautiful and very beautiful landscape, the Natura 2000 buffer and the environmental zoning around existing work locations.
  3. Applies outside all planning capacity, hard and soft (IsRestrictief_BuitenPlancapaciteit): evidently in use outside planning capacity, seaports and locations far from public transport.

Cells that are already used by the sector concerned in the base year are marked as evidently in use and are not allocated again (unless they are displaced). The base-year sieve delivers three outcomes: IsRestrictief with the plan exemptions, IsRestrictief_ZonderPlanvrijstelling without them, and for housing IsRestrictief_OpVrijgekomenPerceel; the projection-year sieve chooses which one applies, see The protection has an expiry date and Redevelopment of existing dwellings below.

Projection-year sieve

The projection-year sieve (Zeef_T) builds on the base-year sieve and adds the tests that change per projection year. A cell is restrictive if at least one of the following conditions is met:

  1. Restrictive in the base year: the cell is restrictive in the base-year sieve, in the outcome with or without plan exemption depending on whether the planning capacity still applies in this projection year. On a parcel that the redevelopment probability for housing has released, the sieve reads a third outcome, see Redevelopment of existing dwellings below.
  2. Restrictive also within planning capacity (IsRestrictief_OokBinnenPlancapaciteit), with a different test per sector: for solar and wind the building test (a BAG building in the cell), for employment the density increase and the full-site test on IBIS, for the other sectors nothing.
  3. Construction year too recent, for every sector except housing: the youngest building in the cell is too young to demolish (see Demolition protection below).
  4. Exogenously imposed: the model imposes a different land use here, nature or water, and where new nature comes there should be no new construction. This test applies to all sectors, unlike the landscape regime in the base-year sieve, which closes only housing and employment.
  5. Too shallow for water storage: only for that sector, where the cell does not reach the minimum water layer.
  6. Parcel not yet due, only for housing: the cell has dwellings and lies on a cadastral parcel that the Redevelopment probability (in Dutch) has not yet released in this projection year.

The projection-year sieve has no branch that applies only outside planning capacity; what the plans exempt is in the base-year sieve. For housing there is also a sieve per development package (Zeef_Wonen_perOP_T), which tests per package for high-rise and density in beautiful landscape, the maximum density of the surroundings (widened on a released parcel, see Redevelopment of existing dwellings below), the density increase compared with what stands on the parcel, the development balance, the package’s area of application, the restriction of the default packages to the planning capacity in a variant that asks for it, and the construction method.

The distinction between the groups is crucial: some restrictions apply everywhere, others only outside the planning capacity. Locations with planning capacity are therefore less readily declared restrictive, which reflects the policy intention that planned development locations are protected against certain restrictions. The switches HardePlannenGeldigInZeef and ZachtePlannenGeldigInZeef determine whether hard and soft plans give that exemption; both sieves read them, and the exemption lapses in projection years after ModelParameters/Advanced/PlancapaciteitGeldigTotEnMet, because plans have a limited duration.

Restrictions

Restrictions are spatial constraints that exclude locations for certain sectors. They are supplied as boolean raster maps (25×25 m) by a separate GeoDMS project that translates policy sources at EU, national and provincial level to the model grid. See Restrictions (in Dutch) for a complete overview of the source data, the classification method and the exported map layers.

Per sector there are four hardness categories (ZeerHard, Hard, Middel, Zacht) that reflect the legal or policy binding force. The parameter RestrictiesVariant_<sector> in VariantK.dms selects which combination of hardness levels is active in a given policy variant. For example, ZeerHardHardMiddel activates the first three levels. The available options must match the container names in the restrictions file (controlled via Restricties_filedate in ModelParameters.dms). For wind, its own wind restrictions are added and the whole restriction test lapses where a turbine already stands in the base year; agriculture has no restriction maps.

Sector-specific restrictions

In addition to the generic restrictions per hardness level, there are sector-specific booleans in VariantK.dms that activate additional restrictions. The Sector column gives the sector gate in Zeef_Basisjaar_T: outside those sectors the switch does nothing, even if it is on.

Parameter Sector Description
NietBouwenInNatura2000Buffer Housing, employment Buffer zone around Natura 2000
NietBouwenVerVanOV Housing, employment except industry and logistics Locations far from public transport
NietBouwenOpZeehaven All sectors except wind and solar Seaport areas
NietBouwenWaarSlap Housing, employment Soft soils
NietBouwenWaarNat Housing, employment Wet soils, per climate scenario of the variant
NietBouwenWaarZettingsgevoelig Housing, employment Settlement-sensitive soils
NietBouwenWaarBeheerkostenInfraTeHoog Housing, employment Subsidence up to 2050 above ModelParameters/Wonen/MaxBodemdaling on soft or settlement-sensitive soil
NietBouwenInMooiLandschap Housing, employment, holiday accommodation Beautiful landscape
NietBouwenInZeerMooiLandschap<sector> Housing, employment, holiday accommodation, each with its own switch Very beautiful landscape
RestrictiesOokGeldigBinnenHardePlancapaciteit All sectors with planning capacity Cancels the exemption of the whole group outside hard planning capacity
ZeerHardOokGeldigBinnenHardePlancapaciteit All sectors except wind and agriculture The very hard restriction layer also applies within hard plans
HardePlannenGaanVoorOpLandschapsregime, ZachtePlannenGaanVoorOpLandschapsregime Housing, employment A plan of that hardness exempts the cell from the landscape regime

These parameters can be set per variant; which ones are on belongs to the application, see Application NL2120 (in Dutch).

Land ownership is not a test in the sieve and not an axis in the ladders: there is no current map of land positions, and what such a map was meant to approximate, who can develop where, is captured in the planning capacity and, for existing dwellings, in the redevelopment probability (#874). For housing, the share of owner-occupiers in the neighbourhood is a term in the Redevelopment probability (in Dutch), which determines which parcels with dwellings become available: whoever redevelops where many owner-occupiers live must buy from many owners, and that lowers the probability but does not exclude the location (#861).

Building regime, construction method and demolition

Three things can affect the same cell but do not mean the same, and are therefore kept separate (#614).

Imposing says which land use will come, nature or water, regardless of what was there (VariantData/<variant>/ExogeenOpleggen). That affects the land-use map, NDVI, carbon and the agricultural claim.

The building regime says whether building is still allowed (VariantData/<variant>/Bouwregime). That runs via the sieve and affects only new allocation, never the existing state.

Demolition says whether the existing buildings make way (VariantData/<variant>/Sloop). That affects the stock, and thereby, via the residual claim, the replacement new construction elsewhere in the allocation region, plus the buy-out and demolition costs.

The building regime as a map

The building regime is a property of the location and is stored per variant as one classified map, Bouwregime/BouwregimeK_rel on the compacted domain. The classes are in Classifications/Modellering/BouwregimeK and increase in strictness: Bouwen, BouwenMetMaatregelen, NietBouwen, Slopen. Two flags on the class carry the meaning, MagBouwen and MoetSlopen, so that no comparison on ordinal number is needed anywhere.

There are two causes for a regime, which are independent of each other:

  1. The flood hazard zoning. Per zone (0 up to and including 5, increasing hazard) the variant chooses a regime with GevaarRegimeZone0 up to and including GevaarRegimeZone5 in VariantK.dms. The class Slopen is forbidden there, guarded by an IntegrityCheck: a hazard zone covers a large part of the low Netherlands, and demolition on that scale has no test on existing built-up area, no land use that takes its place and no allocation region that can absorb the residual claim.
  2. The landscape types peat, coast, sand and rivers, filled only in a variant that reads a landscape delivery (VariantK/Landschap_Levering); in the other variants Bouwen applies everywhere.

If both affect the same cell, the strictest wins. That is a max over the sources, which is possible because the classes increase.

The regime of peat follows from the allocated building block: the building block table (Classifications/Grondgebruik/NbSBouwsteen) gives a built-form type per building block, and that category maps one to one onto the classes:

Category in the building block table Regime
as current Bouwen
existing built-up Bouwen
adapted building BouwenMetMaatregelen
living on water BouwenMetMaatregelen
demolish and lock Slopen
new open water on land Slopen

The last row is the building block that puts open water on land: buildings can stand there, whereas a building block on existing water has nothing to demolish. Besides this, the built-form type map for peat only gives the construction method axis: where it says adapted building or living on water, it sets a requirement on the construction method (see below).

Coast gives NietBouwen over the entire land take: no new construction, but the existing buildings remain standing (#707). Sand gives NietBouwen in the brook valleys, for the same reason: the delivery wants no more new construction there but leaves the existing buildings standing (#630). Rivers is the only landscape type with two regimes side by side: Slopen in the demolition area, which is the new floodplains minus the dykes that are retained and minus the buildings that fall only partly within that area, and NietBouwen on the rest of the land take, the river stretches and the retained dykes (#620).

The regime closes only housing and employment; the tests TeGevaarlijk and OpSlotDoorLandschap in the base-year sieve carry the sector gate IsThisSectorWonenOfWerken. Holiday accommodation, wind, solar, agriculture and water storage may still land in a hazard zone or a landscape area, unless the exogenous imposition stops them in the projection-year sieve. The landscape regime moreover carries its own plan exemption, HardePlannenGaanVoorOpLandschapsregime and ZachtePlannenGaanVoorOpLandschapsregime, separate from the exemption for the other restrictions: the mask is drawn at the scale of whole polders, brook valley systems and river stretches, which is the right scale for a search area but not for a hard exclusion within an adopted plan.

The construction method: what the package allows and what the location chooses

The construction method says how building is done: GeenMaatregelen, GebouwMaatregelen, Opgehoogd, OpPalen or Drijvend (Classifications/Modellering/BouwwijzeK). Each construction method has a maximum flood depth at which it still works (0.2 to 6.0 metres), a flag for whether it anticipates subsidence and a flag for whether it floats.

Building regime versus construction method

A development package carries a list of permitted construction methods, in the column BouwwijzeToegestaan of the package table. The choice rule is stated once, in Templates/Beschikbaarheden/Bouwwijzekeuze_T: of the permitted construction methods that meet all requirements of the cell, the lightest wins, which is the one with the smallest maximum flood depth. That rule is well defined without cost figures and economically the right one, because a developer does the minimum that is allowed. As soon as the construction method costs from #505 are available, the choice here should be made on costs, with the lightest as the tie-breaker.

The sieve links regime and construction method. Where the regime is NietBouwen or Slopen, every development package drops out. Where it is BouwenMetMaatregelen, a package drops out if no permitted construction method meets the requirements of that area. Which requirement that is differs per cause and is therefore stored separately, in VariantData/<variant>/BouwwijzeEis: the flood zones test on maximum flood depth, adapted building on peat tests on subsidence resistance, and living on water tests on floating construction. The two peat requirements apply only when VariantK/BouwwijzeVeenGeldtVoorOPs is on, and that switch is set separately per variant; which setting an application chooses is on the application page. As long as the construction method costs from #505 are not included, that switch works as a restriction and not as a price, whereas #505 aims precisely to replace that restriction with a price.

Where the depth map gives no value, the depth counts as zero metres, so as no constraint. That convention is in the choice rule itself and not with the callers, so that all readers share it. It is needed because the depth map also has gaps within the hazard zone: without that convention the comparison breaks there on a missing value, every construction method drops out and the sieve closes those cells for all housing construction and all employment, not because the water is deep but because there is no measurement. It is moreover the convention that the cost side uses: the subsidence costs read those same cells as zero metres of water.

The same choice carries through beyond the sieve: the flood damage reads the damage-free depth of the construction method chosen on the cell (#681), the green fractions read per cell whether floating construction is used, and the construction cost hook reads the cost mark-up of the chosen construction method.

The lists per package follow a rule on bearing capacity supplied by Deltares (#726). Water-resistant building and raising can carry any residential environment, building on piles and floating construction only the single-family environments, and every package may in addition be built without a measure, because that is the normal course of affairs and not a measure. A single-family package thus reaches 6.0 metres and a multi-family package 2.0 metres. The employment side has the same column, there per subsector in Classifications/Actor/Jobs6/BouwwijzeToegestaan.

That employment side sits at a different place in the sieve. Housing tests per development package and therefore in the projection-year sieve; employment has no packages and tests per subsector in the base-year sieve, in Zeef_Basisjaar_T/Impl/GeenToegestaneBouwwijzeVoldoet, alongside the other static location restrictions. That is not only a matter of where it fits neatly. The potential state masks both the numerator and the denominator of the density test on base-year availability, so only there do the two run over the same partial area; in the projection-year sieve the density test would include potential and state on cells where the subsector can never build. The test has no plan exemption, just as on the housing side: an adopted plan does not make the ground drier. The two peat requirements also apply to employment, behind the same switch, because according to Deltares the built-form type map for peat applies to all buildings (#793).

What is allowed for a subsector comes from an expert judgement by Deltares (#727). Water-resistant building and raising can carry all six subsectors, building on piles not for industry and logistics, and floating construction for no job subsector at all. Industry and logistics thus reach 2.0 metres and the four other job subsectors 2.5, compared with 6.0 metres for a single-family residential environment, so in the deep parts of the requirement zone people can live but not work. See Employment elaboration (in Dutch).

The package sets per variant

The package table consists of a fixed and a variable set: Ontwikkelpakketten/NettoBuurt/Default_src.dms carries the regular packages and PerVariant_src.dms the variant-specific blocks. VariantK/OP_Aanvulling names per variant which block is appended after the default, or none. The parsing logic is stated once, in OPTabel_T, and packages that do not belong to the variant are not in the set, so they do not need to be sieved out per cell.

Because the state files OP_rel and SubSector_rel are written as positions, the allocation writes a legend next to the OP_rel tif, and reading refuses a state whose legend does not match the current sets. A state from a different package set therefore fails hard instead of silently pointing to the wrong packages.

High and low grounds

Besides the building regime, the sieve has a second spatial division: high versus low grounds, in BaseData/Omgeving/HogeGronden and passed on as Toepassingsgebied/Hoog_NL and Laag_NL. Each development package carries a column that says where it may land, high, low or everywhere, and outside that area it drops out. The same column has two more areas that together divide the country: Toepassingsgebied/BebouwdGebiedMetRand, the built-up area of the larger settlements with a margin around it, for a package that belongs in and directly around the city, and BuitenBebouwdGebiedMetRand, everything outside it, for a package that is precisely not meant to be there; see Housing elaboration (in Dutch).

High ground is the Pleistocene half of the Basiskaart Natuurlijk Systeem Nederland: river terraces, ice-pushed ridges, boulder clay area, cover sand, former raised bogs and hill country. The five Holocene classes form the low Netherlands. Which main class falls on which side is stored as the column IsHoogNederland in Classifications/Landschap, so that the division can be read and changed.

The division does not answer a flooding question. Whoever wants to test depth does so elsewhere and better: the construction method test above compares the actual water depth per cell with what the package can handle. What the split between high and low does is the choice between green and blue. The packages for the high Netherlands create green, those for the low Netherlands create water, and whether infiltration makes sense is a soil and groundwater question. The same reasoning applies to the other readers of this division: the carbon indicator, the water supply in the storage indicator and the rung.

Where the base map gives no main class, mainly large waters and the edge along the coast and the border, the definition falls back on the depth reading NietOverstroombaar: high ground there is every cell where the maximum depth map shows no flooding.

When demolition takes place

There are two routes, both in VariantData/<variant>/Sloop, each with a switch in ModelParameters/Natuur.

The first route follows the building regime: demolition takes place where the regime is Slopen. With SloopVereistNieuwLandgebruik on, it is additionally required that a new land use actually lands on the cell. The demolition in the peat delivery is the consequence of the conversion to a management type and not a separate task, so where the conversion does not land, the buildings do not make way. The demolition area of rivers is an exception to this and demolishes unconditionally, because there the demolition may have been chosen for safety; whether that is so is an open question in #684. An emptied cell without imposition keeps its current land-use class and from then on has zero dwellings.

The second route follows the imposition: demolition takes place where the model imposes a new land use, because a cell cannot carry new nature and dwellings at the same time. That route sits behind SloopVolgtExogeneOplegging. On TRUE, the state goes to zero where nature or water is imposed, and without a landscape delivery that is the only ground for demolition. On FALSE, scattered buildings outside existing built-up area remain standing and coexist with the new nature, unless a delivery designates the cell as a demolition area; the cell is, however, locked for new allocation and the land-use map shows the imposed class, so that a cell can count as nature while there are dwellings in the state. The latter is the wish from Deltares; which setting an application chooses is on the application page.

Both routes pass through the same test as the imposition itself, so not in existing built-up area (#641) and not over exogenous land use such as airports, main roads, railways and cemeteries.

The emptying happens in the first projection year, in Templates/Allocatie/Zichtjaar_T, and affects housing, employment, holiday accommodation, solar, wind and the associated building footprints. After that the sieve keeps the cells empty, so the emptying only needs to happen once. Because the claim is a stock target per allocation region, the demolished stock automatically returns as residual claim and is rebuilt elsewhere in the region.

The two deliveries do not coincide

Each landscape type supplies two separate maps with their own boundaries: a no-building map and a nature map. Only for coast do they coincide; for peat they are two separate maps, for rivers the land take is larger than the imposed nature, and for sand the imposition is an allocation that lands partly inside and partly outside the brook valley mask. As a result the two demolition rules diverge, and Sloop/Verschil measures that, in hectares and in dwellings from the base year:

  • OpSlotMaarGeenNatuur: the landscape type designates the cell as a demolition area, but the imposition does not land there. Three causes come together here: the two deliveries do not coincide, for rivers the agricultural ecotopes within the demolition area by definition get no imposition, and the open water of the peat building blocks does not go into the imposition but to the water storage sector. With the link to a new land use these cells are left standing (GespaardDoorKoppeling), except in the demolition area of rivers (GeleegdZonderNieuwLandgebruik).
  • NatuurMaarNietOpSlot: the imposition lands on a cell that the landscape type does not designate as a demolition area. As long as demolition does not follow the imposition, this is exactly what that switch spares: new nature comes here and the existing buildings remain standing. With a landscape delivery this is mainly sand, where the delivery wants to spare the buildings while the sand allocation puts nature on them, plus the river stretches.

The nature allocations of sand and peat put their task on the map without avoiding cells with a BAG building, as long as NatuurNietOpPanden in NatuurAlloc_T is off: the building block or the nature is laid over the existing buildings, and these remain standing with their dwellings and jobs, except where a demolition building block or the demolition area of rivers lands. Switching that building test on makes the sieve of the nature allocation smaller and can make a task that fitted at first too tight. See also Nature elaboration (in Dutch).

Stimuli

Stimuli work as the opposite of restrictions: they mark locations that are particularly suitable for certain functions. Like restrictions, they are built in the restriction generation process (in Dutch) from policy sources and classified by hardness (Hard, Middel, Zacht), and selected per variant via StimuliVariant_<sector>.

Stimuli do not influence availability (the sieve) but suitability. They are included in the suitability assessment as part of the design component (rungs).

Planning capacity

Planning capacity indicates where concrete building plans exist. The model distinguishes hard plans (irrevocable zoning plan, granted permit) and soft plans (still in procedure, intention). The planning capacity is supplied externally as a map per sector and hardness and is static; what changes per projection year is whether it still applies.

Planning capacity plays a special role in the sieve: locations with planning capacity are protected against part of the restrictions. The parameters HardePlannenGeldigInZeef and ZachtePlannenGeldigInZeef determine whether hard and/or soft plans offer this protection.

Two switches limit that protection. RestrictiesOokGeldigBinnenHardePlancapaciteit cancels the exemption for the whole group outside hard planning capacity, so also for the landscape and soil tests in that group. ZeerHardOokGeldigBinnenHardePlancapaciteit removes only the very hard restriction layer from the exemption: it then moves as a statutory prohibition to the group that applies everywhere, because a statutory prohibition is not something a municipal plan can set aside. Wind falls outside this because there the whole restriction test hangs on the exception for existing turbines, and agriculture because that sector has no restriction maps.

The protection has an expiry date

Plans have a limited duration, and ModelParameters/Advanced/PlancapaciteitGeldigTotEnMet sets up to and including which projection year the protection applies. In later projection years the restrictions also apply within planning capacity.

That requires a detour in the structure. The substantive restrictions are in the base-year sieve, which is built once per variant and structurally does not know the projection year. The base-year sieve therefore delivers an outcome with and an outcome without plan exemption (IsRestrictief and IsRestrictief_ZonderPlanvrijstelling), and the projection-year sieve chooses one of them per projection year (BasisjaarZeefItem). The third outcome, IsRestrictief_OpVrijgekomenPerceel, is outside that choice: the projection-year sieve reads it for housing on a released parcel, in every projection year. The three exemptions that lapse in the second outcome are the one on the group outside all planning capacity, the one on the group outside hard planning capacity and the one on the landscape regime. The priority that planning capacity gives in the rungs of suitability lies outside the sieve, but lapses on the same date (#739).

See Planning capacity (in Dutch) for more details.

Employment-specific tests

For the employment sector, the projection-year sieve has two extra tests, both also within planning capacity:

  1. Full business parks: an IBIS work location counts as full when the provincial register says so or when the issued fraction is above ModelParameters/Werken/BedrijfsterreinUitgegevenFractieAlsVolBeschouwen. Full sites are excluded for all six job subsectors, also within hard planning capacity. It is a binary threshold per site: below it there is no capacity brake at all, above it the part still available for issue is closed as well. Without this test every patch of a site without a building footprint would be built up. The full status is a snapshot of the IBIS edition (ModelParameters/IBIS_Year) and does not change during the run; the sites are rasterised at 25 metres.
  2. Minimum density increase (VariantK/MinimumDichtheidToenameWerken): the potential of the subsector in the cell must exceed the existing employment of the whole cell by at least that fraction. The potential of the cell is the density of the hectare times the cell area, compared with the state of that same cell. Per 25-metre cell this is a sharp test: a building cell with more than a few jobs fails, and an empty cell passes via the greenfield exemption. Existing employment area thus becomes a mosaic of dense building cells and open yard cells, and what limits the filling-in of those yards is the full-site test and the shape test of the clustered allocation.

That second test is more than a brake on thinning out. The allocation is cell-exclusive: if a subsector wins the cell, the state of all other subsectors there goes to zero, see the update expressions in Templates/Allocatie_T.dms. The density test is therefore the trade-off of whether a takeover yields more jobs on balance than it demolishes; hence the numerator and denominator are the whole employment state of the cell and not that of the subsector itself. On an empty cell there is nothing to demolish, so the test does not apply there and the cell is available. That is stated explicitly in the configuration, with the employment state of the cell as its own item (StateSectorVoorAllocatie), instead of relying on the outcome of a division by zero. For housing, that same exemption has been made explicit for the same reason in the sieve per development package.

The test therefore burdens only existing employment area, and hits low-density subsectors harder than high-density ones: a subsector with a low potential per cell only passes the test on cells where even less stands. Swapping the denominator for the state of the subsector itself is not the answer to this, because then the demolition guard that this test is disappears. A test on the share of the subsector in the cell is not an alternative either: it only refuses takeovers that the density test has already approved and hits inner-city opportunities much more often than opportunities outside the city (#670).

Numerator and denominator cover the same partial area, the part of the cell that is available for the testing subsector (StandInBereik), and at 25 metres that is the cell itself. In this way the jobs of a subsector that is restrictive on the cell do count, because those are lost in a takeover, and a subsector is not charged with jobs on cells where it may not build itself.

For business services and for government and quaternary services, the intensification exemption applies on cells where the subsector itself dominates the employment state in the base year (BaseData/Omgeving/KantoorDominantie and OverheidDominantie, with the dominance threshold and a lower bound on the cell state in ModelParameters/Werken): the full-site test, the demolition age tests and the evidently-in-use test of the base-year sieve lapse there, because assignment there is intensification of the existing building and no new land take. The other tests, including the restrictions and the environmental zoning in the base-year sieve, continue to apply on those cells. See #668 and the page Density for the full mechanism.

Environmental zoning

Environmental zoning keeps sensitive functions away from (new) business activity. The buffer distances per environmental category follow the largest VNG indicative distance per main category (ModelParameters/Wonen/MilieuCat: category 2 = 30 m, 3 = 100 m, 4 = 300 m, 5 = 1000 m, 6 = 1500 m; source VNG, Bedrijven en milieuzonering, 2009 edition). Where a province supplies subcategories, such as 3.1 or 4.2, these carry their own indicative distance. There are two mechanisms:

  1. Around existing IBIS sites (base-year sieve): housing is restrictive within the buffer of sites with category 2 and higher; environmentally sensitive employment functions (all job subsectors except industry and logistics) and holiday accommodation only within the buffer of heavy sites with category 4 and higher. Sites with category 1 and economic zones do not block housing, because the test is a brake on high categories and not a ban on every work location. With AanvullenBijOnbekend, a site without a usable category gets an assumption based on its work location type, because the gap in the register includes precisely heavy seaport sites; on FALSE such a site keeps a buffer of zero. The test is in the group that is exempted only within a hard plan, and in exactly one group, so that it never counts twice and never disappears.
  2. Around newly allocated polluting employment (industry and logistics, dynamically during the allocation): within the buffer distance (ModelParameters/Werken/MilieuCatDist_restrictief_anderesectoren_Nijverheid and MilieuCatDist_restrictief_anderesectoren_Logistiek, as a category from the same VNG table) no sensitive functions may land. The buffer lies only around cells that the allocation itself gave industry or logistics (SectorAllocRegio_T/RestrictiesVoorSectorenAlsGevolgVanVervuilendWerken/DoorAllocatieGegeven); around businesses from the initial state the first mechanism applies, with the indicative distance of the work location itself. Business activity from the initial state outside an IBIS site, such as a workshop in a residential area, thus has no buffer. Water storage is exempt from this, because it is not an environmentally sensitive function. The test also works the other way round: new industry and logistics themselves keep their distance from existing and previously allocated housing, so that the zoning does not depend on the order in which housing and employment allocate.

The reverse direction has two limits, adjustable in ModelParameters/Werken/OmgekeerdeMilieuzonering. First, the buffer lies around contiguous residential area and not around every cell with a dwelling: a residential cell only counts when at least WoongebiedAandeel of the cells within WoongebiedStraal have dwellings, determined with Templates/Allocatie/Buurtaandeel_gridcel_T. Without that limit a single dwelling in the rural area would impose the same buffer as a residential neighbourhood, and most of the rural area would close for new industry; the downside is that the most scattered buildings have no buffer protection in this direction. Second, the test lapses on existing business parks, because the VNG indicative distances do not apply against existing permitted business activity. This covers the IBIS work locations of the types business park, seaport site, platform-bound business activity and agribusiness complex (IsBedrijfsmatigTerrein), plus cells that themselves already have jobs in the subsector concerned. The buffer distance in this direction is set separately from the forward direction in MilieuCatDist_Nijverheid and MilieuCatDist_Logistiek, so that the VNG step down for mixed areas and the environmental category per activity can be set without affecting the forward direction; that choice lies with PBL (#669).

Evidently in use

“Evidently in use” marks locations that are already in use by a particular sector in the base year and therefore do not need to be allocated again. This is a classification of existing land use that can be set per sector and per variant via EvidentBenutVariant_<sector> in VariantK.dms.

Evidently in use is defined in VariantParameters/EvidentBenut.dms and is built from two sources. The Land Use Statistics (BBG) of Statistics Netherlands (CBS) give per sector a selection of classes, separately for within and outside planning capacity, because within planning capacity fewer classes are considered in use; which set a variant reads is in EvidentBenutVariant_<sector>. The BGT supplements this with local, generic use that the BAG does not capture, such as petrol stations, water storage areas and cemeteries, as a class set that EvidentBenutVariant_BGT designates and that applies to all sectors and also within plans; wind counts only motor roads and railways from the BGT as in use, and solar reads the same class set with an exception for watercourses. Which set a variant uses is a variant setting; see Application NL2120 (in Dutch) for how it is filled in there.

MinimalLandAvailability

The column MinimalLandAvailability in VariantK.dms is not read by any test; it is there because ExportSettings writes it along. For employment, the full-site test on IBIS fulfils the role of a lower bound on the available space, and for housing the sieve per development package does.

What does work is the threshold for agriculture, MinimalLandAvailability_Landbouw, defined as hectares available per 100-metre cell, so as a share of a hectare. The agricultural allocation reads it as a disc test from the projection-year sieve (Zeef_T/Src/GeeftOnvoldoendeRuimte_Landbouw):

PotentieleRuimte                := available hectares in a disc of 50 metres around the cell
                                   (thirteen cells of 25 metres, together 0.81 ha)
GeeftOnvoldoendeRuimte_Landbouw := PotentieleRuimte / area of the disc < MinimalLandAvailability_Landbouw / 1 ha

The disc moves with the cell and has no block boundaries; the threshold is applied as a share of that disc, so that 0.60 hectare per hectare remains 60 per cent. The availability in the disc is that of the base-year sieve of the subsector.

See Density for the relation with density parameters.

Demolition protection

The projection-year sieve contains, for every sector except housing, a demolition protection based on the age of existing buildings; for housing the Redevelopment probability (in Dutch) determines which parcels with dwellings become available, see Redevelopment of existing dwellings below. The building age is the projection year minus BouwjaarPand, the construction year of the youngest BAG building in the cell. It is the youngest building and not an average building, because the test decides on demolition of the whole cell: then every building in it is razed, so the building with the most objection to that should give the answer. A weighted cell average would leave a cell with a building from 1900 and one from 2020 unprotected. Two parameters regulate the protection, and they are mutually exclusive:

  • GeenSlooptotLeeftijd_BinnenHardePlancapaciteit (fixed, in ModelParameters/Wonen): applies at locations with hard planning capacity for the subsector concerned.
  • GeenSlooptotLeeftijd_BuitenHardePlancapaciteit (per variant, in VariantK.dms): the stricter threshold, which applies outside them.

Despite its place in ModelParameters/Wonen, the first parameter applies to every sector that passes through the projection-year sieve, except precisely housing. There is one exception: within hard planning capacity for employment, on a cell that has dwellings in the base year, the outside threshold applies (Zeef_T/Impl/VolgtWoonregelInHardePlannen). Employment that wins such a cell demolishes the dwellings, and employment has no development balance in which their value counts; without this rule an employment plan would already release dwellings from the lower age that applies within hard plans (#868).

Both tests are masked on hard planning capacity, so that each applies only where its name says. Without that mask the outcome would rely on the invariant that the inside threshold lies below the outside threshold, and that is not guarded anywhere. Cells without buildings have no building age and fall outside the protection in both tests; that also applies to a cell in which no building has a known construction year.

The protection within hard planning capacity works only as long as that planning capacity is valid. HeeftHardePlannenDezeSector carries IsPlancapaciteitNogGeldig, so after ModelParameters/Advanced/PlancapaciteitGeldigTotEnMet everything in this sieve falls under the outside threshold.

The protection fades out with the horizon

BouwjaarPand is static base-year data and the projection-year sieve does not see what the model itself builds, so the building age only increases. The test therefore becomes more lenient every projection year and ceases to exist as soon as the projection year passes the youngest construction year in the BAG plus the threshold. That is not a design choice but a consequence of the length of the series of projection years relative to the age of the source data.

The number of cells that the outside threshold sieves out thus runs monotonically to zero, and a higher threshold only shifts the projection year in which that happens. A threshold that still bites in the last projection year of a long series must be above the age that the youngest building in the country has by then, and that is no longer a depreciation period but a demolition ban.

The age rule is thus a transitional brake and not the lasting brake on demolition. For housing, the lasting brake is the redevelopment probability, which says per parcel when it is due, backed by the development balance via MinimumExploitatieSaldo in the sieve per development package: that sets the acquisition and demolition costs of the existing stock against the revenue of the package and does not fade with the projection year. For employment no such brake exists, because employment suitability is a probability function without a cost side; there only the density test remains.

What the model itself builds is not unprotected, but that runs along a different path: IterSubsector_T/Beschikbaar_Init permanently excludes cells with an allocated subsector that fixes the cell from further allocation. Agriculture does not fix its cells, because that sector is allocated anew every projection year. The existing stock therefore has a declining protection and the model’s new construction an unlimited one.

That asymmetry is deliberate, see #735. Applying the same rule to model new construction requires an allocation year per cell in the rolling state, and the permanent exclusion is moreover more than a protection: four mechanisms rely on the invariant that a cell is allocated at most once. The development package and the subsector are first-wins in the state, the end-of-year derivation of the building footprint requires an empty input value, and the demolition and new construction indicator counts from that same difference. On a reallocated cell, package and subsector would therefore point to the previous situation while the quantities follow the new one, and demolition and new construction would count as zero. In addition, acquisition and demolition costs are tied to the base-year BAG, so that model new construction has an acquisition value of zero and demolition costs of zero in the development balance; released model new construction would thus be the cheapest redevelopment land and would be the first to be due. The order is therefore first those four mechanisms and the valuation, and only then the age rule.

For business services and for government and quaternary services, both age tests and the IBIS full-site test lapse on cells where the subsector itself dominates the employment state in the base year. Assignment there is intensification of the existing stock and not demolition and new construction: the building stays and fills further, and the dwellings on the cell also remain standing (#868), so a demolition guard is out of place there. The other tests, including the restrictions and the environmental zoning in the base-year sieve, simply continue to apply there. See #668 and the page Density for the full mechanism.

In addition, an energy label limit applies in the base-year sieve (GeenSloopvanafELabel, per variant): a cell in which the most common energy label of the dwellings is better than the threshold may not be demolished. The labels come from EP-online, per dwelling the newest valid label (SourceData/Vastgoed/Energielabels); a cell without labelled dwellings carries no label and falls outside the limit, and an employment cell carries a label only if there are dwellings in it. The limit is in the group that is exempted within hard planning capacity, applies to every sector that passes through the sieve except housing, and does not apply on the intensification cells of business services and government, because nothing is demolished there (#668). Unlike the age rule it does not fade out, because the label is that of the base year and stays until the final year. At threshold A the limit excludes nothing, because no label is better than A.

For housing, the label is a term in the Redevelopment probability (in Dutch), with an effect that shrinks towards a fixed year. A limit is a cliff on a characteristic that in reality shifts the probability of demolition and new construction and does not exclude it; that is why for housing the label works only via the probability (#860).

Redevelopment of existing dwellings

For housing, the sieve does not itself decide whether a parcel with dwellings may make way. That is done by the Redevelopment probability (in Dutch): per cadastral parcel with dwellings, the probability that it is redeveloped in a year, from the estimation of demolition and new construction in the BAG, with a fixed draw per parcel that says in which projection year it is due. The sieve reads three things from it.

A cell with dwellings on a parcel that is not yet due is not available for housing (Zeef_T/Impl/PerceelNietAanDeBeurt). For housing, that replaces the demolition age tests and the energy label limit: the construction period and the label are terms in the probability. A cell with dwellings that lies in no parcel falls outside the probability and remains available like any other cell.

On a parcel that is due, the projection-year sieve reads a separate outcome of the base-year sieve, IsRestrictief_OpVrijgekomenPerceel: the group that applies everywhere, without evidently in use, plus the very hard restriction layer as a statutory area ban. The restrictions that a hard plan lifts, such as the restriction maps of hard and medium, the environmental zoning, the soil tests, the landscape, the Natura 2000 buffer and the distance to public transport, do not apply there. The reason is that the probability has been estimated on all demolition and new construction in the BAG, also in noise zones, next to business parks and in protected landscape: what holds back redevelopment there in reality is already in the probability, and the sieve would count it twice. Evidently in use does not apply there because on a parcel with dwellings that layer only says that the public space or the land use statistics dominate the cell, and not that there is nothing to redevelop.

In the sieve per development package, two tests clash on a built-up parcel: a package must be denser than what stands on the parcel (MinimumDichtheidToenameWonen), and it may not be denser than the maximum density of the surroundings, a block density smoothed over two kilometres that in the city usually lies below the density of the parcel itself. On a released parcel, therefore, the larger of that surroundings maximum and ModelParameters/Wonen/Herontwikkelingskans/MaxDichtheidFactorVrijPerceel times the parcel’s own density applies, so that a package fits that densifies the parcel. The balance threshold does not apply there, because the probability has already weighed the economics of the parcel, with the same items as the balance. Of the density increase only the requirement remains that the package is denser than what stood on the parcel; any increase suffices, because the threshold of MinimumDichtheidToenameWonen excluded every package on a dense parcel.

Overview: from base-year sieve to allocation

The complete chain of the availability assessment is as follows:

Input data (restrictions, planning capacity, BAG, BBG and BGT, IBIS, building regime, nature delivery)
    │           │
    │           └─→ Restrictions and stimuli built in a separate project (see Restricties)
    │
    ├─→ Base-year sieve (per sector × subsector, once per variant, on CompactedAdminDomain 25 m)
    │     Three groups: everywhere, outside hard planning capacity, outside all planning capacity
    │     Determines: evidently in use, restriction maps, soil and landscape tests, building regime,
    │                 construction method test for employment, environmental zoning around existing sites, energy label
    │     Delivers: IsRestrictief (with plan exemption), IsRestrictief_ZonderPlanvrijstelling and
    │               IsRestrictief_OpVrijgekomenPerceel (housing)
    │
    └─→ Projection-year sieve (per sector × subsector × projection year, on CompactedAdminDomain 25 m)
          Combines:
          ├── Base-year sieve, with or without plan exemption according to PlancapaciteitGeldigTotEnMet
          ├── Density increase and full IBIS sites (employment only)
          ├── Building test (solar and wind only)
          ├── Demolition protection by building age (not for housing)
          ├── Parcel due according to the redevelopment probability (housing only)
          ├── Exogenous imposition (all sectors)
          └── Minimum water layer (water storage only)
          │
          Result: IsBeschikbaar (yes/no per cell)
                │
                ├─→ Housing: sieve per development package (construction method, density, development balance)
                │
                └─→ Allocation (available cells only), including the environmental zoning around
                    new polluting employment, the wind buffers, the disc test for agriculture and the
                    permanent exclusion of cells already allocated