Uitwerking waterberging

Waterberging is een gealloceerde sector in RSopen. 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 open punten. Enkele keuzes, zoals de kwel-wegzijgingskaart, de opgave voorbij 2100 en de maximale gebiedsomvang, zijn voorlopig; zie Status en open punten.

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. Twee verschillende vragen, twee verschillende rekenwijzen; de indicator draagt daarom een eigen naam.


Sectordefinitie

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. De restrictiekaarten van de sector komen, net als bij wonen en werken, per hardheidscategorie uit SourceData/Restricties/Waterberging; welke hardheden gelden bepaalt VariantK/RestrictiesVariant_WaterBerging.

De klasse telt in de CBS-aggregatie als water en draagt LGN-code 41 (overige moerasvegetatie) als LGN-tegenhanger, waarop de NDVI-indicator leest. 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. Zie Woningwaarde agv groenveranderingen.

In de volgorde van sectoren in ModelParameters/SectorAllocRegio, de tabel waarin een toepassing haar sectoren aan- en uitzet en hun volgorde bepaalt, komt waterberging na wonen en werken. Een cel die aan waterberging is toegewezen ligt vast (LegtCelVast): de sectoren die daarna aan bod komen kunnen haar niet meer innemen, ook niet in latere zichtjaren. Waterberging hoeft daarom niet in een vervolgsequentie opnieuw te draaien (UseInLaterSequences): 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.

Geschiktheid

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 tot 1 geschaald: de diepte op haar 95e percentiel, zodat uitschieters de schaal niet bepalen, de twee nabijheden op hun maximum, kwel en wegzijging lineair tot de afkapgrens. De criteria hangen niet van variant of zichtjaar af en worden eenmaal per studiegebied gerekend.

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. De gewichten in de tabel zijn die van de NL2120-toepassing, waar ze in alle varianten gelijk zijn; die waarden horen bij het project en niet bij de sector. Het variantverschil zit daar in een zevende term, de voorkeurslocatie hieronder.

Een paar keuzes zitten in de criteria zelf:

Waterberging is geen milieugevoelige functie en is daarom vrijgesteld van de buffer rond nieuw vervuilend werk (IsSubsectorMilieuOngevoelig): een bergingsgebied mag direct naast nieuw vervuilend werk landen. Zie Beschikbaarheid.

Voorkeurslocatie: het open water van de veenbouwstenen

De veenlevering 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. 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). Omdat de zes basistermen samen hoogstens tot 1 optellen is een gewicht van 1,0 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. Alleen een variant met een veenlevering mag hier een gewicht hebben, anders verwijst de geschiktheid naar een levering die niet bestaat. In de NL2120-toepassing staat het gewicht op 1,0 in NbSGenuanceerd en op 0 in de andere varianten; die waarde hoort bij het project en niet bij de sector.

Bestaand open water valt buiten de term: bouwsteen 9b ligt op bestaande plassen en boezems en verandert het ruimtebeslag niet. Twee kanttekeningen. Het water van 9a en 9b gaat niet de exogene oplegging in: de veenlevering splitst het af (Veen_Water_Sector) en laat het aan deze sector, want opgelegd water zet de cellen voor de allocatie op slot en brengt 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 hierboven.

De opgave

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. Staat die uit, dan is de opgave 0 voor alle regio’s en zichtjaren en slaat de allocatie de sector over; de aangeleverde reeksen blijven wel in de tabel staan. Welke varianten van een toepassing de sector aanzetten en welke reeks zij lezen staat op de toepassingspagina, zoals Toepassing NL2120.

De zichtjaren tussen de aangeleverde jaren worden geinterpoleerd: lineair opgebouwd vanaf nul in het basisjaar naar de waarde van 2050, en daarna lineair door naar die van 2100. Voorbij 2100 trekt het model diezelfde helling door: 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; in de aangeleverde reeksen staan dan 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.

Allocatie

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 de cellen boven die grens worden toegewezen. 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 van de cel maal haar oppervlak van 625 m2 (Templates/PotentieleStates/PerSectorxSubsector_T, in m3 per cel van 25 meter), gelezen uit hetzelfde item Diepte als de geschiktheid en dus met dezelfde bovengrens; een hectaregemiddelde zou een cel het volume van haar buren geven, ook van de cellen die de zeef eruit haalt, waardoor de boekhouding per cluster niet op de kaart sluit. Cellen onder de minimale waterschijf zijn al door de zeef uitgesloten.

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 (MorfologischeCleaning_BuurCellen_Waterberging).

Waarom een bergingsgebied een object is en geen verzameling cellen

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. Het generieke algoritme sluit daar op twee punten niet vanzelf op aan, en beide zijn in de allocatie opgevangen; de meting die dat liet zien staat in #575.

Het eerste punt zit in de vormtoetsen. De erosiestap eist dat een cel minstens zes van haar acht buren gealloceerd heeft. Zou die toets alleen naar de cellen van de lopende iteratie kijken, dan kon een bergingsgebied nooit aangroeien: de randcellen halen de eis niet, worden afgewezen en zijn vanaf een instelbare iteratie blijvend uitgesloten, zodat elke iteratie op eigen kracht een compleet nieuw gebied van minimaal 2 ha moet vormen en daarbij opnieuw zijn eigen rand verliest. Daarom kijken de erosie, de dilatie en de districtenbepaling ook naar wat er in eerdere iteraties van hetzelfde zichtjaar al ligt, zodat een gebied 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 (Gealloceerd_EerdereIters): 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 geschiktheid. 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. De geschiktheid waarop deze sector rangschikt is daarom de gemiddelde geschiktheid over een schijf met straal ModelParameters/Waterberging/ClusterPotentiaal (100 m, dus 3,1 ha, ruim boven de minimale clustergrootte), zodat er aaneengesloten gebieden boven de zaaglijn uitkomen (Totaal_Geclusterd); de geschiktheid van de losse cel staat ernaast als Totaal_PerCel. Dezelfde ingreep wordt ook bij de natuurallocatie gebruikt, zie Uitwerking natuur.

Samen maken die twee dat de allocatie een bergingsgebied als object kan vormen en laten aangroeien, en dat zij binnen het aantal iteraties convergeert, zonder dat de eis van minimaal 2 ha wordt losgelaten.

Waarom de uitsluiting van afgewezen cellen nodig blijft

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, en staat het proces stil.

De parameter staat op 1, dus een afgewezen cel blijft meteen uitgesloten voor de rest van deze sector en allocregio; een hogere waarde kost alleen lege iteraties aan het begin, met dezelfde eindstand. Twee mildere varianten, terugkomen zodra er een gealloceerde buur is en terugkomen zodra de erosiedrempel gehaald zou worden, laten de allocatie vastlopen of leveren per saldo niets op; de afweging staat in #643.

Vraag en aanbod

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 een container Waterberging met vier onderdelen: Veenwater (het bergingsvolume op de cellen van bouwsteen 9a en 9b), PerRegio (opgave naast aangewezen volume en het potentieel van de bouwstenen, per regio met de naam erbij), Volume (past de opgave uberhaupt in het bergingsvolume van alle beschikbare cellen samen; het aantal regio’s met een tekort staat als waterberging_regios_met_tekort in de tabel Checks) en Diepte (op aanvraag: splitst de gerealiseerde berging naar cellen die de minimale waterschijf wel en niet halen).

Wat er over onder- en overrealisatie wordt gerapporteerd

Of onder- en overrealisatie van de opgave uit een run te lezen zijn, de vraag van #761, wordt op twee plekken beantwoord.

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 tienduizenden of over tientallen miljoenen m3 gaat.

De uitdraai die dat wel geeft is waterberging_perregio (Diagnose/Waterberging/PerRegio), en die draait mee 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.

Hoe groot die verlaging is, is uit de claimtabel zelf af te lezen. Ter illustratie, uit de aangeleverde reeks BAU2 voor 2050: zonder peilopzet is de opgave over alle deelgebieden 190.585.751 m3 en met peilopzet 112.242.876 m3; het verschil van 78.342.875 m3 is 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. Die getallen horen bij de levering voor NL2120 en niet bij de sector.

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.

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.

Doorwerking

In de landgebruikskaart landt waterberging via het gewone allocatieresultaat: een cel die aan de sector is toegewezen draagt die sector in de stand (Stand/Sector_rel) en krijgt op de kaart een eigen klasse. 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: de exogene oplegging en bestaand water gaan voor. Een cel die al water was houdt haar waterklasse, want een bergingsgebied is dezelfde uitspraak over hetzelfde oppervlak, alleen nieuw in plaats van bestaand, en op bestaand water verandert het ruimtebeslag niet. Bestaand wonen, verblijfsrecreatie en exogeen grondgebruik komen in die regel pas na de waterberging en schermen een gealloceerde bergingscel dus niet af. Zie Landgebruikskaart.

Dat waterberging gealloceerd wordt en niet opgelegd, bepaalt ook hoe de indicatoren eromheen zijn gebouwd:

Status en open punten

Verantwoording

De keuzes hierboven zijn gemaakt in de volgende issues; daar staan de afweging en de metingen die eraan ten grondslag liggen.