Waterberging is als sector in RSopen opgenomen (issue #394). De sector wijst gebieden aan die ingezet kunnen worden voor het vasthouden van water, met als achterliggend doel het natter houden van veengebieden en het bufferen van water in het regionale watersysteem. Deze pagina beschrijft de opzet: de sectordefinitie, de geschiktheid, de opgave, de allocatie, de doorwerking in de landgebruikskaart en de indicatoren, en de stand van zaken.
Let op: dit is de sector waterberging, een landgebruiksklasse die het model per waterbergingsregio alloceert. Niet te verwarren met de indicator Piekbuiberging in bebouwd gebied, die de bergingsopgave bij hevige neerslag in de stad afzet tegen wat groene en blauwe daken, halfverharding, wadi’s en holle wegen opleveren. Die indicator heette tot #720 ook waterberging; sindsdien draagt hij een eigen naam, juist om deze verwarring te voorkomen. Twee verschillende vragen, twee verschillende rekenwijzen.
Waterberging is volop in ontwikkeling. Een aantal keuzes (definitieve kwel-wegzijgingskaart, exacte vraagbepaling, maximale gebiedsomvang) is nog voorlopig. Zie Status en open punten.
Waterberging is een eigen sector (Classifications/Actor/Sector/V/Waterberging) met een subsector (WaterbergingK). De eenheid is volume: een gealloceerde cel levert bergingscapaciteit in m3, bijgehouden in de standvariabele meter3_Waterberging. Restricties worden gelezen onder de noemer Waterbergingsgebied.
De klasse telt in de CBS-aggregatie als water en draagt LGN-code 41 (moeras en rietland) voor de landgebruikskaart en de NDVI. In de hedonische groenwaardering is de sector de uitzondering die als water telt en niet als natuur: een bergingsgebied is voor de woningmarkt open water (#637). Zie Woningwaarde agv groenveranderingen.
In de sequentie van sectoren komt waterberging na wonen en werken aan bod. Het idee daarbij is dat de aangewezen waterbergingsgebieden voor de meeste latere sectoren op slot gaan, met uitzondering van windenergie. Waterberging draait niet mee in latere sequenties: de sector kan door de sectoren die erna komen niet verdrongen worden.
De allocatieregio is de waterbergingsregio (SourceData/RegioIndelingen/Waterbergingsregio), niet het waterschap. Dat is een union_unit van de acht veen-deelgebieden waarvoor Deltares een opgave levert, plus een restregio “0. Rest van Nederland” die de rest van het land dekt en claim 0 krijgt. Die restregio maakt de indeling landsdekkend; zonder zou een cel buiten het veen geen allocatieregio hebben. De koppeling tussen de opgave en de indeling gaat op naam en niet op rijnummer, want de rijvolgorde in de aangeleverde shapefile wijkt af van die in de aanlevering.
De geschiktheid voor waterberging wordt opgebouwd uit een aantal variant-onafhankelijke criteria (BaseData/Suitabilities/Waterberging) die per variant tot een gewogen som worden gecombineerd (Templates/Suitabilities/Suitability_Zichtjaar_T/Waterberging). Alle criteria worden naar 0..1 geschaald.
| Criterium | Bron | Richting | Gewicht |
|---|---|---|---|
| Waterdiepte | dieptekaart (SourceData/Water/Dieptekaart) |
dieper is beter, want meer m3 berging per m2 | 0,20 |
| Inverse urban attractivity index | SourceData/Diversen/UAI_dynamisch |
minder aantrekkelijk voor stad is geschikter | 0,10 |
| Nabijheid bestaande meren | BBG-binnenwater, afstandsverval 1000 m | clustering rond bestaand water | 0,15 |
| Nabijheid veengebieden | BOFEK-veen, afstandsverval 5000 m | zo dicht mogelijk naast of in het veen | 0,35 |
| Kwel | kwel-wegzijgingskaart (positieve waarden) | meer kwel is geschikter | 0,20 |
| Wegzijging | kwel-wegzijgingskaart (negatieve waarden) | sterkere wegzijging is ongeschikter (negatieve term) | 0,20 |
De positieve gewichten tellen bij voorkeur op tot 1,0; wegzijging wordt als negatieve term afgetrokken. De gewichten staan per variant in VariantParameters/VariantK als Weight_*_Waterberging. In de vier varianten van Toepassing NL2120 zijn deze zes gewichten allemaal gelijk; het variantverschil zit sinds #664 in een zevende term, de voorkeurslocatie hieronder.
Een paar keuzes zitten in de criteria zelf:
ModelParameters/Waterberging/Minimum_Waterschijf (standaard 1 m) zijn niet beschikbaar voor waterberging: ze worden in de zeef uitgesloten (Zeef_T/Impl/TeOndiepVoorWaterberging). Ze krijgen daarnaast geschiktheid 0 (IsDiepGenoeg), maar dat volstaat op zichzelf niet. De allocatie zet een geschiktheid van 0 om in undefined, en undefined sorteert vooraan in index(), dus zulke cellen komen onderaan de rangorde maar zijn daarmee niet uitgesloten.ModelParameters/Waterberging/Maximum_Waterschijf (10 m) is de waarde in de dieptekaart geen bergingsschijf meer maar het waterlichaam dat er al ligt: van de cellen boven die grens is 41 procent water volgens BBG 2022 en de mediane diepte is 11,4 meter. Zulke cellen krijgen geen diepte, en dus geen geschiktheid en geen bergingscapaciteit. Die grens stond tot #665 als een kale tien in SourceData/Water.dms op de dieptekaart zelf, waar ook de zeef en de overstromingsschade uit lezen; daar betekent null iets anders dan een grote diepte. Hij staat nu op een plek, BaseData/Suitabilities/Waterberging/Diepte, die zowel de geschiktheid als de bergingscapaciteit voedt. Tien meter is bovendien een ruwe invulling van de waterschijf van 1 tot 2 meter die in #394 is aangedragen; wie die eis alsnog wil, verlaagt deze parameter.Kwel_AfkapBoven, Wegzijging_AfkapOnder, beide in mm/d) en daarna lineair geschaald.Waterberging is verder de enige sector die van de milieuzonering is vrijgesteld: een bergingsgebied is geen milieugevoelige functie en mag dus wel direct naast nieuw vervuilend werk landen. Zie Beschikbaarheid.
De veenlevering van NbSGenuanceerd bevat in bouwsteen 9a nieuw open water voor waterbuffering en in 9b bestaand open water met extra buffercapaciteit. Dat water draagt bij aan dezelfde opgave als deze sector, dus zonder koppeling zou het model de berging dubbel tellen (#664). De koppeling: de veenallocatie bepaalt waar dat water komt (zie Uitwerking natuur), en de geschiktheid van deze sector krijgt op die cellen een voorkeursterm (VariantK/Weight_VeenWater_Waterberging, 1,0 in NbSGenuanceerd en 0 in de andere varianten). Omdat de zes basistermen samen hoogstens tot 1 optellen is dat een vrijwel strikte rangorde: de bergingsopgave landt eerst op de voorkeurscellen en raakt daar verzadigd. De som wordt teruggeschaald met 1 plus het gewicht, zodat de rangorde binnen en buiten de voorkeursgebieden intact blijft en er bij gewicht 0 letterlijk niets verandert.
Bestaand open water valt buiten de term: bouwsteen 9b ligt op bestaande plassen en boezems en verandert het ruimtebeslag niet. Twee kanttekeningen. De exogene oplegging van dit water (ExogeenWaterOpleggen) moet uit blijven, anders gaan de cellen op slot voor de allocatie en is de dubbeltelling terug. En de voorkeursterm garandeert niet dat de berging daar ook landt: de cellen moeten door de zeef komen, vooral de minimale waterschijf van een meter hieronder.
De opgave komt van Deltares en staat in ModelParameters/Waterberging/Claims: benodigde berging in m3 per maand, berekend voor de maand juli, per veen-deelgebied. De tabel bevat alle aangeleverde kolommen, namelijk twee scenario’s (BAU en BAU2) maal twee jaren (2050 en 2100) maal wel of geen peilopzet van 15 cm op bestaand oppervlaktewater. Welke kolom een variant gebruikt bepalen VariantK/WaterbergingClaimBron en VariantK/WaterbergingOpBestaandWater.
Of een variant uberhaupt waterberging alloceert bepaalt VariantK/WaterbergingClaimActief. Sinds #664 staat die in de referentievarianten BAU en BAU2 uit: de opgave is daar 0 voor alle regio’s en zichtjaren en de sector alloceert niets. De aangeleverde reeksen blijven wel in de tabel staan.
De zichtjaren daartussen worden geinterpoleerd: lineair opgebouwd vanaf nul in het basisjaar naar de waarde van 2050, en daarna lineair door naar die van 2100. Sinds de horizon van het model op 2120 staat (#658) wordt diezelfde helling doorgetrokken voorbij 2100: 2120 krijgt de 2050-waarde plus 1,4 maal het verschil tussen 2100 en 2050. Dat is extrapolatie en geen aanlevering. Kiest een variant de kolom met peilopzet, dan is de resterende opgave voor nieuwe berging kleiner, en staan drie van de acht deelgebieden op nul.
Een regio zonder claim faalt hard in plaats van stil op null te gaan: er zit een IntegrityCheck op de koppeling.
Waterberging wordt gealloceerd met dezelfde procedure als de andere sectoren (zie Allocatie procedure in formules): per waterbergingsregio bepaalt de weighted nth element een afkapgrens op de geschiktheid, waarna arg_max de winnende cellen kiest. Het gewicht in die nth element is de bergingscapaciteit per cel, dus de zaaglijn zakt tot het opgetelde volume de opgave haalt. Die capaciteit is de bergbare waterschijf maal het celoppervlak (Templates/Densities/DichtheidZichtjaar_T, in m3 per ha), met dezelfde onder- en bovengrens als de geschiktheid.
Versnippering wordt tegengegaan met geclusterd alloceren. Voor waterberging geldt een eigen, uniforme minimale clustergrootte (ModelParameters/Advanced/Minimum_alloc_group_size_Waterberging, 2 ha), zonder het binnen- versus buitenstedelijke onderscheid dat de stedelijke sectoren hebben, en dezelfde erosie-eis van zes van de acht buren.
Een waterbergingsgebied is een laagte die je in de zomer kunt inunderen. Dat is een object met een omvang en een vorm, en niet een verzameling los gekozen cellen. Bij de controle van zichtjaar 2030 bleek dat het standaardalgoritme daar op twee punten niet op aansloot, waardoor de opgave maar voor 89 procent werd ingevuld terwijl er 14 tot 214 keer zoveel bergingsvolume beschikbaar was als geclaimd. Zie #575.
Het eerste punt zat in de vormtoetsen. De erosiestap eist dat een cel minstens zes van zijn acht buren gealloceerd heeft, en telde daarbij alleen de cellen van de lopende iteratie mee. Een bestaand bergingsgebied kon daardoor nooit aangroeien: de randcellen halen die eis niet, worden afgewezen en worden vanaf een instelbare iteratie blijvend uitgesloten. Elke iteratie moest zo op eigen kracht een compleet nieuw gebied van minimaal 2 ha vormen, en verloor daarbij opnieuw zijn eigen rand. Sindsdien kijken de erosie, de dilatie en de districtenbepaling naar wat er in eerdere iteraties van hetzelfde zichtjaar al ligt, waarmee een gebied wel kan aangroeien.
Dat aangroeien is bewust binnen het zichtjaar gehouden. Wat er in eerdere zichtjaren al lag telt niet mee, anders werkt het model zich over een reeks zichtjaren cel voor cel het landschap in. En anders dan bij de stedelijke sectoren telt bij waterberging alleen de eigen sector mee: bij wonen en werken gaat het om versnippering in het landschap, en dan mag een woning naast een nieuw bedrijventerrein aanhechten, maar de minimale clusteromvang van een bergingsgebied is een functionele eis, en die wordt niet anders van woningen ernaast.
Het tweede punt zit in de rangorde. De zaaglijn rangschikt op de geschiktheid van de losse cel. Omdat de opgave klein is ten opzichte van het aanbod snijdt hij een dunne schil van de top af, en de top van een golvend geschiktheidsoppervlak bestaat uit losse toppen en niet uit aaneengesloten gebieden. ModelParameters/Waterberging/GeschiktheidGeclusterd (standaard aan) rangschikt daarom op de gemiddelde geschiktheid over een schijf met straal ClusterPotentiaal (standaard 100 m, dus 3,1 ha, ruim boven de minimale clustergrootte). Deze schakelaar raakt alleen waterberging. Dezelfde ingreep is later ook bij de natuurallocatie gebruikt, zie Uitwerking natuur.
Samen brachten die twee de claimrealisatie voor 2030 van 89,0 naar 99,99 procent, daalde het aantal afgewezen cellen van 23.689 naar 2.917, en convergeerde de allocatie ook echt: op iteratie 13 werd nog een cel gealloceerd, op iteratie 14 geen enkele meer. De eis van minimaal 2 ha bleef daarbij ongewijzigd.
Het ligt voor de hand te denken dat IterVanafWaarWeAfgewezenCellenUitsluitenInAlloc de rem is. Het omgekeerde is waar: het is de motor. Cellen die losliggend boven de zaaglijn uitkomen hebben geen gealloceerde buren en halen de erosie-eis nooit, ook niet met de cumulatieve vormtoets. Zolang ze beschikbaar blijven kiest de allocatie ze elke iteratie opnieuw en wijst ze elke iteratie opnieuw af, zonder dat er iets gealloceerd wordt. Bij waterberging in 2030 waren dat 1.992 cellen, en stond het proces daardoor in de eerste iteraties volledig stil.
De parameter staat inmiddels op 1, dus een afgewezen cel blijft meteen uitgesloten voor de rest van deze sector en allocregio. Op 5, de eerdere waarde, kostte dat vier lege iteraties met precies dezelfde eindstand. Twee mildere varianten zijn geprobeerd en allebei afgevallen, zie #643.
De regionale opgave per waterbergingsregio stuurt hoeveel waterberging wordt aangewezen. Het potentiele aanbod per locatie volgt uit de dieptekaart: de waterdiepte maal het celoppervlak geeft de bergingscapaciteit in m3. Die dieptekaart is de maximale waterdiepte bij overstroming, dus een afgeleide van een overstromingskaart en niet van een bergingsontwerp.
Of de opgave gehaald wordt is te volgen via de claimrealisatie per waterbergingsregio (zie Claimrealisatie). Het diagnoseharnas in cfg/main/Diagnose.dms heeft daarnaast drie containers die specifiek over deze sector gaan: waterberging_perregio (opgave naast gerealiseerd volume, met de regionaam erbij), WaterbergingVolume (past de opgave uberhaupt in het beschikbare bergingsvolume) en WaterbergingClusters (aaneengesloten beschikbaar areaal, met dezelfde district_8-methode als de allocatie maar zonder die te herrekenen).
De vraag van #761, en het antwoord is deels ja.
Wat er automatisch uit een run komt is claimreal_Waterberging. Dat is een rij in de tabel Checks, dus elke productierun schrijft hem per zichtjaar. Het getal is de stand gedeeld door de claim per regio, dus onder de een is onderrealisatie en boven de een overrealisatie; beide zijn eruit te lezen, ze worden alleen niet als zodanig benoemd.
Die uitdraai is wel slecht leesbaar. Hij gebruikt AsList, en dat slaat null-waarden over, dus een regio zonder opgave verschijnt er niet in en alle posities schuiven op. Daarom staat er een aparte uitdraai waterbergingsregio_namen naast, die de regio’s in de volgorde van de unit noemt met de vlag welke de restregio is. En er staat alleen een verhouding in, geen kubieke meters, dus je ziet niet of een tekort van een procent over 48.000 of over 28 miljoen m3 gaat.
De uitdraai die dat wel geeft is waterberging_perregio, en die staat sinds #761 in GenerateAll, dus elke productierun schrijft hem. Hij noemt per waterbergingsregio de naam en vijf getallen:
| kolom | wat er staat |
|---|---|
benodigde_berging_m3 |
de aangeleverde opgave voor de maand juli, opgebouwd tot en met dit zichtjaar |
berging_uit_nieuw_water_9a_m3 |
het bergingspotentieel van bouwsteen 9a, nieuw open water voor waterbuffering |
nieuw_water_9a_min_benodigd_m3 |
het verschil van die twee; positief betekent dat het plan van team Veen de opgave alleen al zou dekken |
aangewezen_berging_m3 |
het volume van de cellen die het model aan de sector heeft toegewezen |
aangewezen_min_benodigd_m3 |
het saldo, negatief bij onderrealisatie en positief bij overrealisatie |
Daarnaast staan het areaal van 9a en de twee kolommen voor bouwsteen 9b in de uitdraai. De naam van elke verschilkolom is de formule, zodat er over de richting geen twijfel kan bestaan.
Bouwsteen 9b hoort daarbij apart gelezen te worden en mag niet bij 9a worden opgeteld om met de opgave te vergelijken. 9b is bestaand open water waarvan het peil 15 cm wordt opgezet, en dat effect zit al aan de vraagkant verwerkt: een variant die WaterbergingOpBestaandWater aan heeft staan leest de aangeleverde kolommen OokBestaand_*, waarin de opgave met precies die peilopzet is verlaagd. Wie 9b er als aanbod naast legt telt hem twee keer, en in drie van de acht deelgebieden is de resterende opgave door die verlaging nul.
Hoe groot die verlaging is, is uit de claimtabel zelf af te lezen. Voor BAU2 in 2050 staat de opgave zonder peilopzet op 190.585.751 m3 en met peilopzet op 112.242.876 m3; het verschil van 78.342.875 m3 is dus wat de peilopzet volgens de levering oplevert, ruim veertig procent van de onverminderde opgave. Bij 15 cm komt dat neer op ongeveer 52.000 ha bestaand open water waarop de levering rekent.
Het bergingspotentieel van 9a is een potentieel en geen geleverde berging: het is de bergbare waterschijf maal het celoppervlak op de cellen waar 9a is gealloceerd, gesommeerd over het hele voetspoor van die bouwsteen. Volgens de brontabel wordt 93 procent van dat voetspoor water, dus het getal ligt ruwweg zeven procent te hoog.
Ter illustratie, gemeten in de toepassing NL2120 op NbSGenuanceerd zichtjaar 2040, stand 3 september 2026. Van de vijf deelgebieden met een opgave dekt het potentieel van 9a er drie ruimschoots: Noord-Holland 73,8 mln m3 tegen een opgave van 3,2 mln, Rivierengebied 50,5 tegen 27,9 en Randstad-Groene Hart 35,8 tegen 17,3. Twee halen het niet: Friesland-Groningen komt op 5,2 mln m3 tegen 18,9 mln, en in 3.2 Veluwe ligt geen 9a terwijl daar 3,4 mln m3 wordt gevraagd. In beide gevallen wordt de opgave wel gerealiseerd, op 15.228 en 785 m3 na; de berging komt daar dus wel, maar buiten het plan van team Veen om. Die getallen horen bij dit project en niet bij de indicator.
Van een restclaim die blijft liggen houdt het model geen aparte administratie bij, en dat hoeft ook niet: de opgave is cumulatief per zichtjaar en de stand loopt mee, dus wat een regio in het ene zichtjaar niet haalt kan in het volgende alsnog gevuld worden. Het allocatiedoel per iteratie is de claim min de stand, geklemd op nul, precies zoals bij de andere sectoren. Een regio die boven haar opgave uitkomt wordt dus niet teruggebracht en het overschot wordt nergens gecompenseerd.
In de landgebruikskaart landt waterberging via het gewone allocatieresultaat: een cel die aan de sector is toegewezen krijgt het bijbehorende LU_ModelType uit de stand. Dat gaat dus niet via de exogene oplegging; die route is er voor natuur en water uit de landschapstyperingen. Wel geldt de voorrangsregel van de kaart: bestaand wonen, bestaand water, verblijfsrecreatie en exogeen grondgebruik schermen de cel af, en de exogene oplegging gaat voor. Zie Landgebruikskaart.
Dat waterberging gealloceerd wordt en niet opgelegd, bepaalt ook hoe de indicatoren eromheen zijn gebouwd:
SloopAlsGevolgVanWaterbergingVeen (#636). Het masker is de allocatie zelf (Stand/Sector_rel) en niet de oplegging, begrensd tot de acht veen-deelgebieden, en met aftrek van de cellen die de oplegging al had geleegd. Zie Uitkoop en sloopkosten.WaterbergingVeen is een van de drie bestemmingsindicatoren, en WaterbergingVeenOpVruchtbareLandbouwgronden legt hem naast de ABCD-kaart. Zie Grondgebruiksverandering en Vruchtbare landbouwgrond.ModelParameters/SectorAllocRegio, dan bestaat de klasse niet en zouden die indicatoren een parsefout geven; nu zijn ze in dat geval simpelweg overal onwaar.