Reading Matroos observations

This notebook introduces how to use the hydropandas package to read, process and visualise data obtained using the Matroos API.

[1]:
import contextily as ctx
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

import hydropandas as hpd
from hydropandas.io.matroos import load_parameter_metadata, select_parameters

# enabling debug logging so we can see what happens in the background
hpd.util.get_color_logger("INFO");
[2]:
# get data from a certain location and grootheid
tmin = pd.Timestamp("2020-1-1")
tmax = pd.Timestamp("2020-1-3")
o1 = hpd.WaterlvlObs.from_matroos(
    location="schoonhoven", unit="waterlevel", source="observed", tmin=tmin, tmax=tmax
)
o1
[2]:

hydropandas.WaterlvlObs

schoonhoven_observed_waterlevel
x 118175.351641
y 439646.935095
location schoonhoven
filename
source Matroos
unit
metadata_available NaN

waterlevel
datetime
[3]:
extent = [100_500, 120_000, 430_000, 457_000]  # Schoonhoven
oc = hpd.read_matroos(
    extent=extent, units="waterlevel", sources="observed", keep_all_obs=False
)
oc
INFO:hydropandas.io.matroos.get_obs_list_from_extent:downloading 4 observations from 4 locations
location:   0%|          | 0/4 [00:00<?, ?it/s]
INFO:hydropandas.io.matroos.get_obs_list_from_extent:no measurements found for location='gouda', source='observed', unit='waterlevel', between tmin='202602021630', tmax='202602121630' not adding to obs_list
location: 100%|██████████| 4/4 [00:03<00:00,  1.19it/s]
[3]:
x y location filename source unit metadata_available obs
name
gouda_brug_observed_waterlevel 109219.996474 446687.818137 gouda brug Matroos NaN WaterlvlObs gouda_brug_observed_waterlevel ---...
krimpen_ad_lek_observed_waterlevel 102823.508782 433956.075932 krimpen a/d lek Matroos NaN WaterlvlObs krimpen_ad_lek_observed_waterlevel...
schoonhoven_observed_waterlevel 118175.351641 439646.935095 schoonhoven Matroos NaN WaterlvlObs schoonhoven_observed_waterlevel --...
[4]:
oc.plots.interactive_map()
[4]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Find selection criteria

You may not know which location, unit and source keywords you have to use. The code below will give you some guidance on how to find them.

[5]:
# find all units and sources for schoonhoven
selected = select_parameters(
    locations="schoonhoven", astype="dataframe", keep_coords=False
)
print("All units and sources available for Schoonhoven:")
display(selected)
print("\n")

# find all sources for multiple locations and unit waterlevel
selected = select_parameters(
    locations=["schoonhoven", "Nieuwpoort"],
    units="waterlevel",
    astype="dataframe",
    keep_coords=False,
)
print("Units and source for Schoonhoven and Nieuwpoort:")
display(selected)
print("\n")

# find all locations for observed waterlevels
selected = select_parameters(
    units="waterlevel", sources="observed", astype="dataframe", keep_coords=False
)
print("Locations for observed waterlevels:")
display(selected)
All units and sources available for Schoonhoven:
area_of_flow discharge water_velocity waterlevel waterlevel_max waterlevel_min
schoonhoven [fews_rmm_sobek3_lph2012_ha, fews_rmm_sobek3_l... [fews_rmm_sobek3_lph2012, fews_rmm_sobek3_lph2... [fews_rmm_sobek3_lph2012, fews_rmm_sobek3_lph2... [fews_rmm_sobek3_lph2012, fews_rmm_sobek3_lph2... [fews_rmm_sobek3_lph2012, fews_rmm_sobek3_lph2... [fews_rmm_sobek3_lph2012, fews_rmm_sobek3_lph2...


Units and source for Schoonhoven and Nieuwpoort:
waterlevel
schoonhoven [fews_rmm_sobek3_lph2012, fews_rmm_sobek3_lph2...
Nieuwpoort [dcsm6_hirlam, dcsm6_hirlam_kf, dcsm6zuno4_hir...


Locations for observed waterlevels:
waterlevel
A121 {observed}
aalesund {observed}
aarhus {observed}
Aberdeen {observed}
almen {observed}
... ...
wuerzburg {observed}
zaltbommel {observed}
zeebrugge {observed}
zutphen {observed}
zwartsluis {observed}

324 rows × 1 columns

[6]:
params_dic = load_parameter_metadata()

# print all locations
all_locations = list(params_dic.keys())
print("all locations:")
print(all_locations, "\n")

# print all units
all_units = np.unique(
    [unit for loc in params_dic.values() for unit in loc["units"].keys()]
)
print("all units:")
print(all_units, "\n")

# print all sources
all_sources = np.unique(
    [s for loc in params_dic.values() for unit in loc["units"].values() for s in unit]
)
print("all sources:")
print(all_sources, "\n")
all locations:
['A121', 'A122', 'aalesund', 'aarhus', 'Aberdeen', 'Aetran', 'alblasserdam', 'Almeerderstrand', 'almen', 'Almere Haven', 'altenahr', 'amay', 'amelander zeegat, boei 1-1', 'amelander zeegat, boei 1-2', 'amelander zeegat, boei 2-1', 'amelander zeegat, boei 2-2', 'amelander zeegat, boei 3-1', 'amelander zeegat, boei 3-2', 'amelander zeegat, boei 4-1', 'amelander zeegat, boei 4-2', 'amelander zeegat, boei 5-1', 'amelander zeegat, boei 5-2', 'amelander zeegat, boei 6-1', 'amelander zeegat, boei 6-2', 'amerongen beneden', 'amerongen boven', 'Amsterdam IJ-eiland', 'anasuria', 'andernach', 'angleur', 'antifer (Fr)', 'appelzak', 'Aranmore Island', 'Arkersluis (WSVV)', 'arnhem', 'Aukfield platform', 'avonmouth', 'AWG', 'baalhoek', 'ballycotton', 'ballyglass', 'balmoral', 'bangor', 'Barmouth', 'barseback', 'bath', 'bathse spuikanaal zuid', 'beerkanaal', 'Bekaaide Maatkade', 'belfeld beneden', 'belfeld boven', 'beneluxhaven', 'bergen (N)', 'bergse diepsluis west', 'berkhout', 'BG2', 'BG8', 'bilbao', 'bingen', 'Binnen Kievitswaard', 'Bjoernegaardsvingen', 'bol van heist', 'bonn', 'borgharen dorp', 'borgharen julianakanaal', 'borkum', 'Borkum Fischerbalje Pegel', 'Borkum Sudstrand', 'borssele', 'Borssele Alpha', 'Borssele Beta', 'Boschgat Zuid', 'botlek nieuwe waterweg', 'botlekbrug', 'boulogne', 'Bournemouth', 'breesem boei 1', 'breezanddijk buiten boei 1', 'Brekke_bru', 'Bremerhaven', 'brest', 'brienenoordbrug', 'Broekerhaven recreatie gebied', 'brouwershavensegat 2 boven', 'brouwershavensegat 2 onder', 'brouwershavensegat 8 boven', 'brouwershavensegat 8 onder', 'BSH03', 'buesum', 'Bulken', 'bunde', 'buoy, station 62052 (Fr)', 'buoy_K5, station 64045 (UK)', 'buoy_K7, station 64046 (UK)', 'buoy_M1 (Ire)', 'buoy_M2 (Ire)', 'buoy_M3 (Ire)', 'buoy_M4 (Ire)', 'buoy_M5 (Ire)', 'buoy_M6 (Ire)', 'cadzand boei', 'Cadzand meetpaal', 'calais', 'Camping en haven Uitdam', 'Camping Nieuw Hulckesteyn', 'Camping t Raboes', 'castletownbere', 'Centrum Monnickendam', 'chaudfontaine', 'cherbourg', 'chooz', 'cochem', 'Coupure Gemaal - vier noorder koggen', 'Coupure RWS te Lelystad', 'Coupure scheepswerf Balk', 'Coupures polder IJdoorn', 'Cromer', 'culemborg brug', 'cuxhaven', 'D151', 'dantziggat', 'darssersillwr', 'daverdisse', 'De Blocq van Kuffelder', 'de kooij', 'de steeg haven', 'De Zeilhoek', 'Deko Marina', 'Delfzijl', 'Den Helder', 'den oever binnen', 'den oever buiten', 'deurlo', 'deventer', 'devonport', 'dintelhaven2', 'dodewaard', 'doesburg brug', 'domburger rassen', 'dordrecht', 'Dover', 'driel beneden', 'driel boven', 'drontermeer.ijsseleilanden', 'dublin_Port', 'duesseldorf', 'Duivelseiland 000', 'Duivelseiland 300', 'Dukegat', 'dundalk', 'dunkerque', 'dunmore east', 'Durgerdam Polder IJdoorn', 'echt', 'edam', 'Edam Galgenveld haven', 'Edam Kleine Weel', 'Edam ten noorden van de Zeesluis', 'EEM_00', 'eemhaven', 'Eemsboei 11', 'Eemsboei 17', 'Eemsboei 27', 'Eemsboei 30', 'Eemsboei 51', 'eemshaven', 'eijsden grens', 'elbe', 'elburg', 'elsloo', 'Emden', 'Emden Neue Seeschleuse', 'emhoern', 'emmerich', 'emshorn', 'Enkhuizen Krabbersplaat', 'Enkhuizen-Sassluis', 'Enkhuizerzand recreatie gebied', 'esbjerg', 'eurogeul', 'eurogeul DWE', 'eurogeul E13', 'eurogeul E5', 'euromaasgeul_-01km', 'euromaasgeul_04km', 'euromaasgeul_15km', 'euromaasgeul_37km', 'euromaasgeul_61km', 'europahaven', 'Europlatform', 'europlatform 2', 'europlatform 3', 'F161', 'F3', 'fanoebugt', 'felixstowe', 'ferrol', 'FINO', 'FINO1_-33m', 'FINO1_0m', 'FINO1_10m', 'FINO1_15m', 'FINO1_20m', 'FINO1_25m', 'FINO1_30m', 'FINO1_3m', 'FINO1_6m', 'fino3', 'Fishguard', 'fjaltring', 'Flaksvatn', 'Flevomarina', 'Fosseroed', 'frederikshavn', 'friedrichsthal', 'galway city', 'galway port', 'Gannet platform 1', 'geldersesluis', 'Gemaal Lovink', 'Gemaal Zedemuden', 'gendron', 'genemuiden', 'gennep', 'german bight', 'gijon', 'Gjedlakleiv', 'Gjerstad', 'Glomma', 'Goeta', 'goidschalxoord', 'Gooise zomerkade tot Stichtse Brug en Huizen 4e kwadrant', 'gorinchem brug', 'goteborg torshamnen', 'gouda', 'gouda brug', 'grave beneden', 'grave boven', 'grebbe', 'Greenwich Lightship, station 62305', 'grenaa', 'Grevelingensluis wind', 'grevenbicht', 'grolsheim', 'gullfaks-c', 'GWEms', 'haccourt', 'hagestein', 'hagestein beneden', 'hagestein boven', 'hanstholm', 'hansweert', 'hansweert, punt 02', 'Happen Hennip', 'Haringvliet 10', 'haringvliet 10 boven', 'haringvliet 10 onder', 'haringvlietbrug 02', 'haringvlietsluizen binnen', 'Haringvlietsluizen Schuif 1', 'Harlingen', 'hartel-kuwait', 'hartelbrug', 'hartelhaven', 'hartelkering zeezijde', 'hasselt.industrieterrein', 'hattingen', 'Haugland', 'Haven(dam) Durgerdam', 'havneby', 'hedel', 'heel beneden', 'heel boven', 'heerjansdam', 'heesbeen', 'heimdal', 'heinenoord', 'helgeroa', 'Helgoland', 'Helgoland North', 'hellevoetsluis', 'heysham', 'Hindeloopen jachthaven', 'Hinkley point', 'hirtshals', 'Hoegfoss', 'Hoek van Holland', 'hoek van holland noorderdam', 'hoekvanholland maasgeul noordboei', 'hoekvanholland maasmond', 'hoekvanholland NAP-2.5m', 'hoekvanholland NAP-4.5m', 'hoekvanholland NAP-9.0m', 'hoekvanholland stroompaal -2,-10m', 'hoekvanholland stroompaal -2,-15m', 'hoekvanholland stroompaal -2,-5m', 'hoekvanholland stroompaal 1', 'hohensaaten-finow', 'hollandse brug', 'Hollandse Kust Noord', 'Hollandse Kust West Alpha', 'Hollandse Kust West Beta', 'Hollandse Kust Zuid Alpha', 'Hollandse Kust Zuid Beta', 'holwerd', 'holyhead', 'honte sloehaven', 'hoofdplaat', 'hoofdplaat meetpaal2', 'Hoorn Grashaventerrein', 'Hoorn recreatieterrein Schellinkhouterdijk', 'Hoorn Schelphoek', 'Hoorn sportcomplex Julianapark', 'Hoorn Visserseiland', 'hoorn-terschelling', 'hornbaek1', 'hornbaek2', 'Hornindalsvatn', 'houtribdijk', 'Houtribhaven', 'houtribsluizen noord', 'houtribsluizen zuid', 'Houtribstrand', 'Hovefoss', 'howth', 'Huibertgat', 'Huizen Afvalwaterzuivering', 'husum', 'huvudskarOst', 'hvide sande havn', 'ij-geul IJ5', 'ij-geul stroompaal 1', 'ijgeul_04km', 'ijgeul_16km', 'ijgeul_30km', 'ijgeul_40km', 'ijmond erosieput', 'ijmond stroompaal', 'ijmond stroompaal 2', 'IJmuiden', 'ijmuiden 05 a', 'ijmuiden kop pier', 'ijmuiden munitiestort 1', 'ijmuiden munitiestort 2', 'ijmuiden noordersluis', 'ijmuiden spuisluis zeezijde', 'IJmuiden Ver Alpha', 'IJmuiden Ver Beta', 'IJmuiden Ver Gamma', 'ijsselkop', 'IJsselmeer Midden -b', 'IJsselmeer Midden N', 'IJsselmeergebied', 'ilfracombe', 'Immingham', 'inishmore', 'Inlaat duiker Lemmer', 'Inlaat duiker Zwartemeerdijk', 'Inlaatduiker ten ZW Gemaal Buma', 'intschede', 'J6', 'Jachthaven - Het Huizer Hoofd', 'Jachthaven de Eemhof', 'Jachthaven Monnickendam', 'K13a', 'K13a2', 'K13a3', 'K14', 'Kade Lelystad haven', 'kadoelen', 'Kadoelersluis', 'kalkofen', 'kampen', 'kampen.haatlandhaven', 'kamperhoek', 'katerveer', 'kats buiten', 'katwijk', 'Katwoude 34-35', 'kaub', 'keeten boei', 'keizersveer', 'kessel', 'keteldiep', 'Ketelhaven', 'Ketelsluis', 'killybegs', 'kimstergat', 'kinderdijk', 'kinlochbervie', 'klagshamn', 'klein beerkanaal', 'Kleine Zalm', 'Knock', 'koblenz', 'koeln', 'kop van het land', 'Kornwerderzand binnen', 'Kornwerderzand buiten noord', 'Kornwerderzand buiten zuid', 'krabbersgatsluizen noord', 'krabbersgatsluizen zuid', 'krammersluizen west', 'krimpen a/d ijssel', 'krimpen a/d lek', 'kungsvik', 'Kvina_Sira', 'kwintebank', 'L91', 'Laagen', 'Lagan', 'lanaken', 'laso ost 10m', 'laso ost 2m', 'Lauwers Oost', 'Lauwersoog', 'Le Conquet', 'le havre', 'Leith', 'lelystad.parkhaven.binnen', 'lemmer', 'Lemmer bij Hooibergen', 'Lemmer Friesche Hoek', 'Lemmer Huitebuurster buitenpolder', 'Lemmer Sluisweg', 'Lemmer Uitheiingpolder', 'lerwick', 'les pierres noires', 'Lichteiland Goeree 1', 'Lichteiland Goeree 2', 'linne beneden', 'lith boven', 'lith dorp', 'Liverpool', 'llandudno', 'lobith', 'Lovatn', 'Lowestoft', 'LTKiel', 'maaseik', 'maassluis', 'maeslantkering rivierzijde', 'maeslantkering zeezijde', 'maeslantkering zeezijde noord meetpaal', 'maeslantkering zeezijde zuid meetpaal', 'mainz', 'Makkumer Zuidwaard', 'malin head', 'malzwin boei 1', 'mannheim', 'marche', 'Marker Wadden', 'Markermeer Midden -b', 'Markermeer Midden -o', 'marknesse', 'marollegat', 'marollegat meetpaal', 'martinrive', 'maxau', 'Maxima Centrale', 'meeswijk veer', 'Meetboei PBW1', 'Meetboei RZGN1', 'Meetboei UHW1', 'Meetboei WEO1', 'Meetboei WEW1', 'Meetpaal Emden', 'megen', 'membre', 'menden', 'Meppelerdiepsluis', 'middelharnis', 'Middelste Kievitswaard', 'Milford haven', 'millport', 'mississippihaven', 'Mjoendalenbru', 'Mobiele Kering Kampen', 'moerdijk', 'mond der vecht', 'Monnickendam Hemmeland', 'mook', 'moray firth', 'muiderberg', 'mumbles', 'Naarderbos-west', 'neer', 'negenoord', 'Nelson platform 1', 'nes', 'Nesbos/Koopmanspolder', 'neu darchau', 'neubrueck', 'neustadt', 'Newhaven', 'Newlyn', 'newport', 'Nidelv', 'nieuw beerta', 'nieuw-vossemeer', 'nieuwe maas boompjes (km 1008)', 'nieuwe maas waalhaven', 'nieuwe statenzijl', 'nieuwegein', 'Nieuwpoort', 'nijkerk.nuldernauw.zuid', 'nijkerkersluis oost', 'nijkerkersluis west', 'nijmegen', 'Nissan', 'noorderbalgen', 'noorderklip', 'Noordersluis', 'Noordwijk meetpost', 'NOOStransect00', 'NOOStransect01', 'NOOStransect02', 'NOOStransect03', 'NOOStransect04', 'NOOStransect05', 'NOOStransect06', 'NOOStransect07', 'NOOStransect08', 'NOOStransect09', 'NOOStransect10', 'NOOStransect11', 'NOOStransect12', 'NOOStransect13', 'NOOStransect14', 'NOOStransect15', 'NOOStransect16', 'NOOStransect17', 'NOOStransect18', 'NOOStransect19', 'NOOStransect20', 'NOOStransect21', 'NOOStransect22', 'NOOStransect23', 'NOOStransect24', 'NOOStransect25', 'NOOStransect26', 'NOOStransect27', 'NOOStransect28', 'NordreOldevatn', 'North Cormorant 1', 'North Shields', 'nsb3', 'nsbII_-10m', 'nsbII_11m', 'nsbII_15m', 'nsbII_20m', 'nsbII_25m', 'nsbII_30m', 'nsbII_35m', 'nsbII_3m', 'nsbII_6m', 'nsbIII_-10m', 'nsbIII_11m', 'nsbIII_15m', 'nsbIII_20m', 'nsbIII_25m', 'nsbIII_30m', 'nsbIII_35m', 'nsbIII_4m', 'nsbIII_6m', 'nymindegab', 'offharwi', 'olst', 'ommen brug', 'oostende', 'oosterschelde 04', 'oosterschelde 14', 'oosterschelde-4 boven', 'oosterschelde-4 onder', 'opladen', 'ortho', 'OS11', 'oscarsborg', 'oseberg-a', 'Oslofjord', 'Otra_Tovdalselv', 'Oude Westereems Noordboei', 'Oude Westereems Zuidboei', 'oudeschild', 'ouessant large (Fr)', 'overloop van hansweert', 'Overloop van Hansweert golf', 'overloop van valkenisse', 'P11 Platform', 'pannengat boei 1', 'pannerdensche kop', 'papendrecht', 'pas van terneuzen boei', 'Petten zuid', 'Pier Lelystad Haven', 'Platform, station 62145', 'platform, station 63113 (UK)', 'plochingen', 'plymouth', 'pogum', 'pollendam', 'port ellen', 'port erin', 'portpatrick', 'portrush', 'portsmouth', 'Prinses Margrietsluis', 'Q1 platform, boei', 'Q11', 'rak noord', 'ramspolbrug', 'ramspolkering.ketelmeer.zuid', 'ramspolkering_beneden', 'ramspolkering_boven', 'Randersfjord', 'raunheim', 'rees', 'reevediep.deslaper', 'reevediep.inlaat.ijsselzijde', 'reevediep.inlaat.reevediepzijde', 'reevediep.kamperveen.gemaal', 'reevediep.reevebuiten', 'Reevesluis', 'Reevesluis Noord', 'Reevesluis Zuid', 'rheinfelden', 'ringhals', 'robertville', 'rockenau', 'Roenne_aelv', 'roermond', 'Roeykenes', 'roggebotsluis noord', 'roggebotsluis zuid', 'Roggenplaat', 'roompot binnen', 'Roompot buiten', 'roompotsluis', 'roscoff', 'rotem', 'rotterdam', 'RotterdamseHoek', 'rozenburgsesluis noordzijde', 'rozenburgsesluis zuidzijde', 'ruhrort', 'RZGN1_protide', 's-gravendeel', 'saint-malo', 'salzinnes', 'sambeek beneden', 'sambeek boven', 'sandettie lightship, station 62304 (Fr)', 'Sandvenvatn', 'schaar', 'Schardam Oosterkoog', 'Scheepswerf Broekerhaven', 'scheeresluis.beneden', 'schellingwoude', 'schellingwoude inlaatsluis', 'schelphoek boei', 'schermbeeck', 'scheur oost', 'scheur west', 'scheur wielingen', 'Scheveningen', 'Schiermonnikoog Noord', 'Schiermonnikoog Wadden', 'schiermonnikoog westgat', 'Schokkerhaven (pier met woningen)', 'Schokkerhaven (woningen achter de pier)', 'schoonhoven', 'schouwenbank', 'schouwenbank 2', 'Schutsluis Almere Haven', 'Schutsluis bij gemaal Buma', 'Schutsluis Vissering Urk', 'Sheerness', 'sint pieter', 'skagen', 'skanor', 'Skotfoss', 'sleipner-a', 'sliedrecht', 'sligo', 'smogen', 'Solbergfoss', 'solre sur sambre', 'southend', 'Spakenburg camping haven', 'speyer', 'spijkenisse', 'spijkenissebrug w.doorvaart (km 1002.6)', 'spooldersluis', 'Station 62042', 'Station 62046', 'Station 62047', 'Station 62048', 'Station 62105', 'Station 62116', 'Station 62117', 'Station 62118', 'Station 62119', 'Station 62128', 'Station 62133', 'Station 62143', 'Station 62146', 'Station 62152', 'Station 62170', 'Station 62289', 'Station 62293', 'Station 63055', 'Station 63056', 'Station 63103', 'Station 63108', 'Station 63110', 'Station 63112', 'Station 63115', 'Stavanger', 'stavenisse', 'stavoren', 'Steenenmuur', 'stellendam buiten', 'stenungsund', 'Steurgat', 'stevensweert', 'Stichtse Brug tot Gemeente Eemnes', 'Stontelerschutsluis', 'Stordalsvatn', 'Stornoway', 'stortemelk boei', 'stortemelk oost', 'Stroommeetpaal Eemshaven', 'Stuvane', 'suurhofbrug noordzijde', 'sylt', 't Kooike', 'tabreux', 'Teita_bru', 'terneuzen', 'Terneuzen Westsluis', 'Terschelling Noordzee', 'texel noordzee', 'texelhors', 'tholen', 'thorsminde', 'thyboron', 'tiel', 'tobermory', 'Tregde', 'treignes', 'trier', 'troll-a', 'Tussen Naarden en A1', 'Tussen Valkeveen en A1', 'TW_Ems_-14m', 'TW_Ems_0m', 'TW_Ems_10m', 'TW_Ems_15m', 'TW_Ems_20m', 'TW_Ems_25m', 'TW_Ems_30m', 'TW_Ems_3m', 'TW_Ems_6m', 'UFS_Deutsche_Bucht_-14m', 'UFS_Deutsche_Bucht_0m', 'UFS_Deutsche_Bucht_10m', 'UFS_Deutsche_Bucht_15m', 'UFS_Deutsche_Bucht_20m', 'UFS_Deutsche_Bucht_25m', 'UFS_Deutsche_Bucht_30m', 'UFS_Deutsche_Bucht_3m', 'UFS_Deutsche_Bucht_6m', 'uikhoven', 'uithuizerwad 2', 'uithuizerwad 3', 'uk-Arctic IV', 'uk-Britannia', 'uk-Gryphon FPSO', 'uk-Janice', 'uk-Noble Ton van Langeveld', 'uk-Northern Producer', 'uk-Sedco 711', 'uk-Transocean John Shaw', 'ullapool', 'Urk Haven', 'Urk Scheepswerf', 'vaderoarna', 'valkenburg', 'vechterweerd', 'venlo', 'versen wehrdurchstich', 'vidaa', 'viken', 'viker', 'Viksvatn', 'vilsteren boven', 'vise beneden', 'Viskan', 'vlaardingen', 'Vlakte vd Raan', 'vlakte vd raan boven', 'vlakte vd raan onder', 'vlieland', 'vlieland haven', 'Vlissingen', 'Vogelenzang', 'Volendam parkeerterrein Spaander', 'Volendam Slobbeland', 'volkerak', 'vossemeer.roggebot.gemaal', 'vuren', 'wadden eierlandse gat', 'wandelaar', 'wantij ameland', 'wantij terschelling', 'well', 'werkendam buiten', 'wesel', 'West-Terschelling', 'Westerschelde boei 42A', 'Westerschelde boei 44', 'Westerschelde boei 46', 'Westerschelde boei 49', 'Westerschelde boei F44', 'Westerschelde boei F46', 'Westerschelde boei F51', 'Westerschelde boei F53', 'Westerschelde boei F53A', 'Westerschelde boei F55', 'Westerschelde boei FZG', 'Westerschelde boei MG14', 'westhinder', 'westkapelle', 'westkapelle oostgat noord', 'wexford', 'weymouth', 'Whitby', 'Wick', 'wieldrecht', 'wielingen', 'wielingen noord', 'Wierumergronden', 'wierumerwad 2', 'wierumerwad 3', 'wijdenes', 'wijhe', 'wilhelminadorp', 'Wilhelmshaven', 'wittduen', 'Workington', 'Workum Geele strand', 'worms', 'wuerzburg', 'zaltbommel', 'zeebrugge', 'Zeelandbrug noord', 'Zuidersluis', 'zutphen', 'ZW-Akkaert', 'zwartsluis', 'Zwembad Warder']

all units:
['air_pressure' 'air_temperature' 'area_of_flow' 'discharge'
 'discharge_diurnal' 'discharge_hourly' 'eastward_wind' 'northward_wind'
 'precipitation' 'salinity' 'seiches_probability' 'swellwave_dir'
 'swellwave_height_hm0' 'warning_level_lake_event' 'water_direction'
 'water_speed' 'water_temperature' 'water_velocity' 'waterlevel'
 'waterlevel_astro' 'waterlevel_astro_1min' 'waterlevel_astro_hwlw'
 'waterlevel_astro_max' 'waterlevel_astro_min' 'waterlevel_max'
 'waterlevel_min' 'waterlevel_model' 'waterlevel_model_max'
 'waterlevel_model_min' 'waterlevel_surge' 'wave_dir_th0' 'wave_direction'
 'wave_dirspread_s0bh' 'wave_height' 'wave_height_h1d10'
 'wave_height_h1d3' 'wave_height_h1d50' 'wave_height_hm0'
 'wave_height_hmax' 'wave_period' 'wave_period_t1d3' 'wave_period_th1d3'
 'wave_period_tm02' 'wave_period_tm10' 'wave_period_tp' 'wave_period_tz'
 'wind_blast' 'wind_direction' 'wind_speed' 'windstress_u' 'windstress_v']

all sources:
['bma2_05' 'bma2_25' 'bma2_50' 'bma2_75' 'bma2_95' 'bma2_fc' 'bma_noos_05'
 'bma_noos_95' 'bma_noos_fc' 'bsh_oper' 'bsh_waves' 'dcsm1_hirlam_swan'
 'dcsm6_hirlam' 'dcsm6_hirlam_kf' 'dcsm6zuno4_hirlam_kf'
 'dcsm_v6_harmonie' 'dcsm_v6_kf_harmonie' 'dmi_oper' 'dmi_waves'
 'dnmi_discharge' 'dnmi_oper' 'fcoo_oper' 'fcoo_waves' 'fews_rivieren'
 'fews_rmm_sobek3_lph2012' 'fews_rmm_sobek3_lph2012_bias'
 'fews_rmm_sobek3_lph2012_ha' 'fews_rmm_sobek3_lph2012_ha_bias'
 'fews_rmm_sobek3_lph2012_ha_ok' 'fews_rmm_sobek3_lph2012_ha_ok_bias'
 'fews_rmm_sobek3_lph84' 'fews_rmm_sobek3_lph84_bias' 'hf_radar_zuidergat'
 'imi_roms' 'knmi_ecmwf_hres' 'knmi_harmonie' 'knmi_noos'
 'knmi_noos_kalman' 'kuststrook1_hirlam_swan' 'mumm_omnecs_oper'
 'mumm_oper' 'mumm_waves' 'observed' 'rws_prediction' 'smhi_discharge'
 'swan_dcsm_harmonie' 'swan_kuststrook_harmonie' 'ukmo_oper' 'ukmo_waves'
 'waves_ijsselmeer_ijvd_harmonie' 'waves_markermeer_harmonie_fews'
 'zuno1_hirlam_swan']

[7]:
# plot all locations with waterlevel measurements
units = "waterlevel"
sources = "observed"

# get all locations with waterlevel measurements
selected = select_parameters(units=units, sources=sources, astype="geodataframe")
selected2 = select_parameters(units=units, sources=None, astype="geodataframe")
selected_other_sources = selected2.loc[~selected2.index.isin(selected.index)]

# plot locations
f, ax = plt.subplots(figsize=(10, 10))
selected_other_sources.plot(ax=ax, color="orange", marker="x", label="other sources")
selected.plot(ax=ax, label=f"source={sources}")
ax.set_title(f"locations with {units} measurements")
ax.legend()
ctx.add_basemap(ax=ax, crs=28992, alpha=0.5)
../_images/examples_11_matroos_8_0.png