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

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

Geef config mee aan base.Adapter

from toolbox_continu_inzicht import DataAdapter

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

Folder met data: D:-continu-inzicht-continu-inzicht_inzicht_sets\2.belastingen_inladen_sprint2-I.yaml Globale variabelen: {‘rootdir’: ‘data_sets/2.belastingen_inladen’, ‘moments’: [-24, 0, 24, 48], ‘aquo_alias’: {‘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(2026, 2, 3, 10, 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;3450;rosmalen.hinthamsluis.boven;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_adapter)

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
149 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2026-02-02 10:00:00+00:00 859.0 meting
150 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2026-02-02 10:10:00+00:00 857.0 meting
151 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2026-02-02 10:20:00+00:00 857.0 meting
152 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2026-02-02 10:30:00+00:00 857.0 meting
153 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte Oppervlaktewater t.o.v. Normaal Am... cm 2026-02-02 10:40:00+00:00 857.0 meting
... ... ... ... ... ... ... ... ... ... ...
571 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2026-02-05 05:20:00+00:00 837.0 verwachting
572 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2026-02-05 05:30:00+00:00 837.0 verwachting
573 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2026-02-05 05:40:00+00:00 837.0 verwachting
574 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2026-02-05 05:50:00+00:00 837.0 verwachting
575 1 Pannerdense-kop(PANN) Pannerdense kop 4724 WATHTE Waterhoogte verwacht Oppervlaktewater t.o.v. N... cm 2026-02-05 06:00:00+00:00 837.0 verwachting

427 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_adapter)
# 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_adapter)
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

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_adapter)
ds = waterwebservices_rws.run(
    input="BelastingLocaties_Waterwebservices_RWS",
    output="Waterstanden_Waterwebservices_RWS",
)
measuringlocations = waterwebservices_rws.df_in
measuringlocations
measurement_location_id measurement_location_description source tide measurement_location_code_name
measurement_location_code
3450 4 rosmalen.hinthamsluis.boven RWS Waterwebservices False rosmalen.hinthamsluis.boven
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 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-02 11:00:00+01:00 cm 469.0 meting
1 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-02 11:10:00+01:00 cm 467.0 meting
2 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-02 11:20:00+01:00 cm 467.0 meting
3 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-02 11:30:00+01:00 cm 470.0 meting
4 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-02 11:40:00+01:00 cm 471.0 meting
... ... ... ... ... ... ... ... ... ...
139 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-03 10:10:00+01:00 cm 471.0 meting
140 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-03 10:20:00+01:00 cm 472.0 meting
141 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-03 10:30:00+01:00 cm 471.0 meting
142 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-03 10:40:00+01:00 cm 469.0 meting
143 4 rosmalen.hinthamsluis.boven Rosmalen Hinthamsluis boven 4724 WATHTE 2026-02-03 10:50:00+01:00 cm 470.0 meting

144 rows × 9 columns