Data
Nederland verwelkomt eerste water API
Hoogheemraadschap de Stichtse Rijnlanden is het eerste waterschap in Nederland dat open waterdata vrijgeeft. Een API geeft toegang tot de waterkwantiteit en de hoogte in NAP van afvalwater, oppervlaktewater en grondwater. Martijn van Exel doet een verkenning van deze API en ziet schone kansen voor Nederland.
Waterschap?!
Waterschappen zijn de oudste openbare bestuurslichamen die Nederland kent en ons lage landje voert al sinds mensenheugenis strijd tegen het water. Waterschappen zorgen voor meer dan veiligheid: schoon zwem- en drinkwater, maar ook watermanagement voor landbouw, natuur en scheepvaart.
Meten aan het water
‘Meten is weten’ is een belangrijk dogma voor de waterschappen . Ze hebben een uitgebreid netwerk van mensen die meten en – in toenemende mate – volautomatische sensoren. Met de informatie die ze zo verzamelen kunnen ze de waterkwaliteit en -standen zodanig beïnvloeden dat de belangen van natuur, landbouw en ruimtelijke ordening op een afgewogen manier worden behartigd.
Monitoring en trendwatching
De voortdurende stroom inkomende meetwaarden wordt in de gaten gehouden, zodat snel op afwijkingen kan worden ingespeeld. Ook worden alle meetwaarden toegevoegd aan een grote historische databank, waar met behulp van modellen trends worden ontdekt; kennis die de beleidsvorming mede bepaalt.
Unieke eerste Water-API
De eerste waterschaps-API die nu op mijn werkbank ligt, legt een schat aan meetwaarden bloot. Voor het eerst kan iedereen die geïnteresseerd is in water – en laten we eerlijk zijn, hoe kun je dat in Nederland nu níet zijn – aan de slag met een rijkdom van actuele en historische gegevens. De API met bijbehorende uitleg is via http://hdsrapi.lizard.net te raadplegen.
De HDSR API spec
Er zijn vier groepen gegevens te onderscheiden in de ‘HDSR API’, waarbij voor zover mogelijk de data volgens de (open) UM Aquo-standaard gecodeerd is.
● Afvalwater – per rioolgemaal kun je twee meetreeksen opvragen: Q_METING_AFVAL en HGTE_METING_AFVAL. Deze geven de hoogte van het rioolwater en het volume water dat doorgepompt wordt.
● Grondwater – per grondwaterpeilbuis kun je vier categorieën meetgegevens opvragen: Freatisch, Deklaag, Eerste Watervoerend Pakket (ondiep) en ten slotte Eerste Watervoerend Pakket (diep). Per laag wordt de waterdruk (bar) gemeten en vertaald naar hoogte van de waterstand. Deze informatie wordt gebruikt om te bepalen of water wegloopt of blijft staan (bv. na hevige regenval), maar ook om te kijken of landbouw-gewassen genoeg water hebben om te groeien (bv. in tijden van droogte).
● Oppervlaktewater – Middels een peilschaal aan de zijkant van een watergang wordt de hoogte van het water gemeten in meter NAP. Er zijn ook metingen aan kunstwerken zoals sluizen, pompen en schuiven op te vragen om te bepalen hoeveel water een gebied ingaat of uitgaat.
● Waterkwaliteit – Middels een meetinstrument aan de zijkant van de watergang op een negental locaties is er informatie beschikbaar over de geleidendheid, de temperatuur en het zuurstofgehalte van het oppervlaktewater.
Alle gegevens zijn op twee niveaus beschikbaar: productie en operationeel. De productie-gegevens zijn door een controleproces heengegaan. Deze gegevens zijn gevalideerd – ongeldige of foute meetwaarden zul je in de productie-data niet aantreffen. Daar staat tegenover dat de productie-data minder actueel kan zijn.
De operationele gegevens zijn nog niet gecontroleerd en zullen bijna altijd actueler zijn. Welke set je wilt gebruiken hangt af van hoe de afweging tussen actualiteit en betrouwbaarheid voor jouw use case uitvalt. Goed dat deze keuze geboden wordt en de keuze niet voor de gebruiker wordt gemaakt.
De data consumeren
De API heeft HTML-, JSON-, JSONP- en XML-endpoints. HTML is vooral geschikt voor het visueel inspecteren van de API: wat zit erin, hoe kom ik bij de gewenste data? Met name handig om snel een gevoel voor de data en de API te krijgen, en zodoende uit te zoeken welke HTTP requests je moet doen om bij de data te komen die je wilt gebruiken.
De overige drie endpoints maken het bevragen van de data via JavaScript (JQuery of dergelijke) of een server-side script in python, perl of Java makkelijk. Ik zal het gebruik illustreren met een Python-voorbeeldje. Omdat veel van de data tijdreeksen zijn ligt een grafiekje voor de hand met de tijd in de X-as en de waterstand in de Y-as als demonstratie voor de hand.
De code om dit voor elkaar te krijgen is te vinden op GitHub. Het lijkt nog heel wat maar het is vooral het initialiseren en configureren van het grafiek-object in MatPlotLib dat een hoop gedoe is. De stappen zijn:
1. Bouw een URL naar de gewenste meetwaarden-set in JSON
2. Vuur een HTTP-request af op deze URL
3. Vang de response op in een JSON-object
4. Vis de datum-tijd en waterstand-velden eruit
5. Voer deze aan een grafiek-object
6. Bewaar de grafiek op schijf.
Wensenlijstje
Als geograaf kijk ik altijd meteen naar de ruimtelijke dimensie van data. Die ruimtelijke dimensie zit zonder meer in de data die deze API beschikbaar maakt – alle meetpunten en kunstwerken hebben immers een locatie – maar die blijven voor de API-gebruiker behoorlijk verborgen. Zo zijn (eind)gebruikersvragen als ‘geef mij de waterstanden binnen een straal van 10 kilometer van mijn locatie’ niet mogelijk. Met name bij mobiele toepassingen biedt deze data potentie.
De documentatie kan nog verder uitgewerkt worden. We hoeven natuurlijk niet meteen een college in waterhuishouding, maar uitleg over velden en datatypes is wel handig. Met linkjes naar Wikipedia of andere websites met uitleg kan men snel aan de slag.
Ook waren er nog enkele systeemstoringen in de API, hier is meteen hard aan gewerkt, en de afgelopen dagen was de API goed bereikbaar.
Samenvattend
De beknoptheid van de documentatie en de enkele storing die ik ondervond zijn het gevolg van de aanpak om zo snel mogelijk deze API open te maken en met echte gebruikers te gaan testen. Liever aanstaande 16e aan de slag, dan wachten tot oktober! Een werkwijze die de overheid vaker mag overwegen, want het waterschap heeft alsnog naar aanleiding van deze review uitleg de locatie-informatie toegevoegd aan de metingen (voorbeeld).
Er zijn leuke dingen met deze API te doen. Een grafiekje met waterstanden uitgezet tegen de tijd is natuurlijk nog niet echt innovatief, kansrijke apps liggen waarschijnlijk bij specifiek gebruik voor boeren, natuurbeheerders, in de scheepvaart of wellicht voor recreatie.
Ik hoop dat het voorbeeld en de verkenning samen je op ideeën brengen. Veel succes met de competitie!
Martijn van Exel
Martijn van Exel is neogeograaf , onderzoeker en specialist in open geodata, OpenStreetMap en open source GIS. Hij adviseert overheden en bedrijven over deze thema’s vanuit zijn standplaats Salt Lake City, alwaar hij ook doceert aan de universiteit.
Natasja
Laatste berichten van Natasja (toon alles)
- Hacken voor Democratie - 2 augustus 2012
- Post Hackathon: alle data en workshops op een rijtje! - 26 juni 2012
- Datablog: mode, mode, mode! - 14 juni 2012