Belastingen inladen

Om inzicht te krijgen in de veiligheid van waterkeringen is het van belang om de belastingen op de waterkeringen in kaart te brengen. Dit kunnen waterstanden op het buitenwater (zee, rivieren of meren) zijn, maar ook grondwaterstanden.

In dit voorbeeld wordt het inlezen van waterstanden uit verschillende bronsystemen getoond: - RWS Waterinfo - FEWS - (Noos) Matroos - RWS WaterWebServices

Hierbij wordt gebruik gemaakt van csv bestanden voor uitwisselen van data.

Benodigde generieke Python packages

from pathlib import Path

Definitie configuratie: CSV bestanden

GlobalVariables:
    rootdir: "data_demo" 
    moments: [-24,0,24,48]  

    LoadsWaterinfo:
        parameters: ["waterhoogte"]
        MISSING_VALUE: 999

    LoadsFews:
        host: "https://fews.hhnk.nl"
        port: 443
        region: "fewspiservice"
        version: "1.25"
        filter: "HHNK_WEB"
        parameters: ["WATHTE [m][NAP][OW]", "WINDRTG [deg]"]
        aquo_equivalent: ["WATHTE","WINDRTG"]
        MISSING_VALUE: 999
    
    LoadsMatroos:
        website: "vitaal"
        model: "dcsm6_kf"
        parameters: ["WATHTE"]
        MISSING_VALUE: 999
    
    LoadsWaterwebservicesRWS:
        parameters: ["WATHTE"]
        MISSING_VALUE: 999

DataAdapter: 
    default_options:
        csv_source:
            sep: ";"
        csv:
            sep: ","
    BelastingLocaties_WaterInfo: 
        type: csv_source
        filter: "WaterInfo"
        path: "locaties.csv"
    Waterstanden_WaterInfo: 
        type: csv
        path: "waterstanden_waterinfo.csv"
    BelastingLocaties_FEWS: 
        type: csv_source
        filter: "FEWS"
        path: "locaties.csv"
    Waterstanden_FEWS: 
        type: csv
        path: "waterstanden_fews.csv"
    BelastingLocaties_Matroos: 
        type: csv_source
        filter: "NOOS Matroos"
        path: "locaties.csv"
    Waterstanden_Matroos: 
        type: csv
        path: "waterstanden_matroos.csv"
    BelastingLocaties_Waterwebservices_RWS: 
        type: csv_source
        filter: "RWS Waterwebservices"
        path: "locaties.csv"
    Waterstanden_Waterwebservices_RWS: 
        type: csv
        path: "waterstanden_waterwebservices_rws.csv"

Lees configuratie in en maak dictionary base.Config aan

from toolbox_continu_inzicht import Config

yaml_config_file = "demo_sprint2-I.yaml"
path = Path.cwd() / "data_demo" / yaml_config_file
config = Config(config_path=path)
config.lees_config()

Geef config mee aan base.Adapter

from toolbox_continu_inzicht import DataAdapter

data = DataAdapter(config=config)
print(f"Folder met data: {data.config.config_path}")
print(f"Globale variabelen: {data.config.global_variables}")
for data_adapter in data.config.data_adapters:
    print(f"Data apdater: {data_adapter}")

Folder met data: D:-continu-inzicht-continu-inzicht_inzicht_demo_sprint2-I.yaml Globale variabelen: {‘rootdir’: ‘data_demo’, ‘moments’: [-24, 0, 24, 48], ‘aquo_allias’: {‘WATHTE [m][NAP][OW]’: ‘WATHTE’}, ‘LoadsWaterinfo’: {‘parameters’: [‘waterhoogte’], ‘MISSING_VALUE’: 999}, ‘LoadsFews’: {‘host’: ‘https://fews.hhnk.nl’, ‘port’: 443, ‘region’: ‘fewspiservice’, ‘version’: ‘1.25’, ‘filter’: ‘HHNK_WEB’, ‘parameters’: [‘WATHTE [m][NAP][OW]’], ‘MISSING_VALUE’: 999}, ‘LoadsMatroos’: {‘website’: ‘noos’, ‘model’: ‘dcsm6_kf’, ‘parameters’: [‘WATHTE’], ‘MISSING_VALUE’: 999}, ‘LoadsWaterwebservicesRWS’: {‘parameters’: [‘WATHTE’], ‘MISSING_VALUE’: 999}, ‘calc_time’: datetime.datetime(2025, 8, 13, 15, 0, tzinfo=datetime.timezone.utc)} Data apdater: default_options Data apdater: BelastingLocaties_WaterInfo Data apdater: Waterstanden_WaterInfo Data apdater: BelastingLocaties_FEWS Data apdater: Waterstanden_FEWS Data apdater: BelastingLocaties_Matroos Data apdater: Waterstanden_Matroos Data apdater: BelastingLocaties_Waterwebservices_RWS Data apdater: Waterstanden_Waterwebservices_RWS

Invoerbestand (CSV) met data van belastinglocaties

De functie verwacht de volgende verplichte velden, dit wordt ook wel een schema genoemd in de code: - measurement_location_id: int64 - measurement_location_code: object (string) - measurement_location_description: object (string)

Het csv bestand ziet er als volgt uit:

measurement_location_id;measurement_location_code;measurement_location_description;source;tide\
1;Pannerdense-kop(PANN);Pannerdense kop;WaterInfo;false\
2;MPN-N-24;Meetpunt Spijkerboor;FEWS;false\
3;hoekvanholland;Hoek van Holland;NOOS Matroos;true\
4;9889;Hintham beneden;RWS Waterwebservices;false

Laad module (functie) LoadsWaterinfo voor inlezen belastingen uit RWS Waterinfo

from toolbox_continu_inzicht.loads import LoadsWaterinfo

waterinfo = LoadsWaterinfo(data_adapter=data)

Run module (functie) LoadsWaterinfo voor inlezen waterstanden uit Waterinfo

Zoek op basis van een measurement_location_code die in RWS WaterInfo overeenkomt met ‘locationCodes’

ds = waterinfo.run(input="BelastingLocaties_WaterInfo", output="Waterstanden_WaterInfo")
measuringlocations = waterinfo.df_in
measuringlocations
measurement_location_id measurement_location_code measurement_location_description source tide
0 1 Pannerdense-kop(PANN) Pannerdense kop WaterInfo False
waterlevels = waterinfo.df_out
waterlevels
measurement_location_id measurement_location_code measurement_location_description parameter_id parameter_code parameter_description unit date_time value value_type
152 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2025-08-12 15:00:00+00:00 820.0 meting
153 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2025-08-12 15:10:00+00:00 821.0 meting
154 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2025-08-12 15:20:00+00:00 821.0 meting
155 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2025-08-12 15:30:00+00:00 820.0 meting
156 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2025-08-12 15:40:00+00:00 820.0 meting
... ... ... ... ... ... ... ... ... ... ...
526 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2025-08-15 03:20:00+00:00 788.0 verwachting
527 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2025-08-15 03:30:00+00:00 788.0 verwachting
528 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2025-08-15 03:40:00+00:00 788.0 verwachting
529 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2025-08-15 03:50:00+00:00 788.0 verwachting
530 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2025-08-15 04:00:00+00:00 788.0 verwachting

379 rows × 10 columns

Laad en run module (functie) LoadsFEWS voor inlezen belastingen uit FEWS

Zoek op basis van een measurement_location_code die in FEWS overeenkomt met ‘locationId’
image info

FEWS is niet extern bereikbaar en kan dus niet in de documentatie worden getoond

# from toolbox_continu_inzicht.loads import LoadsFews

# fews = LoadsFews(data_adapter=data)
# ds = fews.run(input="BelastingLocaties_FEWS", output="Waterstanden_FEWS")
# measuringlocations = fews.df_in
# measuringlocations
# waterlevels = fews.df_out
# waterlevels

Laad en run module (functie) LoadsMatroos voor inlezen belastingen uit Matroos

Zoek op basis van een measurement_location_code die in (NOOS) Matroos overeenkomt met ‘Location’ -> loc_id!

from toolbox_continu_inzicht.loads import LoadsMatroos

matroos = LoadsMatroos(data_adapter=data)
ds = matroos.run(input="BelastingLocaties_Matroos", output="Waterstanden_Matroos")
measuringlocations = matroos.df_in
measuringlocations
measurement_location_id measurement_location_code measurement_location_description source tide
2 3 Hoek van Holland Hoek van Holland NOOS Matroos True
waterlevels = matroos.df_out
waterlevels
measurement_location_id measurement_location_code measurement_location_description parameter_id parameter_code date_time unit value value_type
0 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-12 15:00:00+00:00 cm 86.15 meting
1 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-12 15:10:00+00:00 cm 99.85 meting
2 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-12 15:20:00+00:00 cm 108.34 meting
3 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-12 15:30:00+00:00 cm 117.21 meting
4 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-12 15:40:00+00:00 cm 123.30 meting
... ... ... ... ... ... ... ... ... ...
410 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-15 11:20:00+00:00 cm -17.47 verwachting
411 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-15 11:30:00+00:00 cm -18.00 verwachting
412 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-15 11:40:00+00:00 cm -19.28 verwachting
413 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-15 11:50:00+00:00 cm -22.34 verwachting
414 3 Hoek van Holland Hoek van Holland 4724 WATHTE 2025-08-15 12:00:00+00:00 cm -25.36 verwachting

415 rows × 9 columns

Laad en run module (functie) LoadsWaterwebservicesRWS voor inlezen belastingen uit RWS Waterwebservices

Zoek op basis van een measurement_location_code die in RWS WaterWebservices overeenkomt met Locatie_MessageID!
image info

from toolbox_continu_inzicht.loads import LoadsWaterwebservicesRWS

waterwebservices_rws = LoadsWaterwebservicesRWS(data_adapter=data)
ds = waterwebservices_rws.run(
    input="BelastingLocaties_Waterwebservices_RWS",
    output="Waterstanden_Waterwebservices_RWS",
)
measuringlocations = waterwebservices_rws.df_in
measuringlocations
measurement_location_id measurement_location_code measurement_location_description source tide
3 4 9889 Hintham beneden RWS Waterwebservices False
waterlevels = waterwebservices_rws.df_out
waterlevels
measurement_location_id measurement_location_code measurement_location_description parameter_id parameter_code date_time unit value value_type
0 4 9889 Hintham beneden 4724 WATHTE 2025-08-12 17:00:00+01:00 cm 202.0 meting
1 4 9889 Hintham beneden 4724 WATHTE 2025-08-12 17:10:00+01:00 cm 199.0 meting
2 4 9889 Hintham beneden 4724 WATHTE 2025-08-12 17:20:00+01:00 cm 202.0 meting
3 4 9889 Hintham beneden 4724 WATHTE 2025-08-12 17:30:00+01:00 cm 202.0 meting
4 4 9889 Hintham beneden 4724 WATHTE 2025-08-12 17:40:00+01:00 cm 202.0 meting
... ... ... ... ... ... ... ... ... ...
136 4 9889 Hintham beneden 4724 WATHTE 2025-08-13 15:40:00+01:00 cm 203.0 meting
137 4 9889 Hintham beneden 4724 WATHTE 2025-08-13 15:50:00+01:00 cm 197.0 meting
138 4 9889 Hintham beneden 4724 WATHTE 2025-08-13 16:00:00+01:00 cm 201.0 meting
139 4 9889 Hintham beneden 4724 WATHTE 2025-08-13 16:10:00+01:00 cm 203.0 verwachting
140 4 9889 Hintham beneden 4724 WATHTE 2025-08-13 16:20:00+01:00 cm 199.0 verwachting

141 rows × 9 columns