Het is je vast niet ontgaan dat de nachten behoorlijk koud worden. Volgens het KNMI hebben we zelfs te maken met de koudste herfstnacht sinds 1998. Wat als je deze open data van het KNMI direct kunt integreren in je eigen toepassing? Gelukkig is dit mogelijk door middel van een webquery die rechtstreeks toegang biedt tot deze gegevens via een script.
Directe toegang tot KNMI-gegevens via webquery
Het Kennis- & datacentrum van het Koninklijk Nederlands Meteorologisch Instituut beschikt over een schat aan data. Op hun achtergrondpagina vind je een beschrijving van verschillende datasets die kunnen worden opgehaald. In dit voorbeeld maken we gebruik van het ophalen van uurlijkse data. De basislink die je hiervoor nodig hebt is: http://projects.knmi.nl/klimatologie/uurgegevens/getdata_uur.cgi. Door aan deze link enkele parameters toe te voegen, kun je specifiekere datasets ophalen.
Een belangrijke filter is het kiezen van het juiste weerstation. Het is meestal niet relevant om gegevens van alle beschikbare stations op te halen. Op deze pagina vind je een overzicht van de beschikbare stations: http://projects.knmi.nl/klimatologie/metadata/index.html.
Een volgende filtermogelijkheid is de datumfilter. Het KNMI biedt interessante opties voor het filteren op datum, die goed worden beschreven. Wanneer je het [end]-filter leeg laat, worden de gegevens tot en met gisteren opgehaald.
Het belangrijkste filter, namelijk de meetwaarden die je wilt ontvangen, moet nog worden opgegeven. Deze kunnen als groep of als individueel element worden opgehaald. Bijvoorbeeld, de groep TEMP bevat de elementen T, T10N en TD. Door de filters in de juiste volgorde achter de basislink te plaatsen, kun je bijvoorbeeld de volgende link krijgen: http://projects.knmi.nl/klimatologie/uurgegevens/getdata_uur.cgi?stns=260&vars=T:FH:RH&start=2014010101. Met deze link haal je gegevens op van station 260 (De Bilt), met de meetwaarden T (gemiddelde temperatuur), FH (gemiddelde windsnelheid) en RH (neerslag per uur) vanaf 1 januari 2014, het eerste uur.
Aanmaken van een SSIS-project voor datastructurering
Nu is het tijd om een SSIS-project aan te maken om deze gegevens te structureren in een SQL-database. Maak eerst een nieuwe verbinding aan van het type HTTP en voer daarbovenstaande link inclusief filters in. Nu kun je de data benaderen. Helaas is het in SSIS niet mogelijk om de link rechtstreeks te gebruiken als Flat File-input, dus sla ik eerst de queryresultaten op in een CSV-bestand. Hiervoor gebruik ik een Script Task (VB).
Plaats de volgende code in het gedeelte Main:
‘ Add your code here
Dim nativeObject As Object = Dts.Connections(“HTTP KNMI”).AcquireConnection(Nothing)
Dim connection As New HttpClientConnection(nativeObject)
‘ Save the file from the connection manager to the local path specified
Dim filename As String = Dts.Variables(“User::WeerDataUur_location”).Value.ToString()
connection.DownloadFile(filename, True)
Dts.TaskResult = ScriptResults.Success
[/dm_code_snippet]
De HTTP-verbinding die de link bevat, wordt hier “HTTP KNMI” genoemd. De locatie waar het bestand moet worden opgeslagen, is opgenomen in de variabele “WeerDataUur_location”.
Nadat de gegevens zijn gedownload naar een CSV-bestand, kun je ze importeren in SSIS door middel van een Flat File Connection. Let hierbij op de kopregels in het document, die je moet uitsluiten bij de import. Het KNMI plaatst voor elk gebruikt weerstation en elke meetwaarde een regel in de output.
Na het importeren van deze gegevens in een database zijn er talloze mogelijkheden voor visualisaties en verdere analyse! Met de KNMI-gegevens kun je waardevolle inzichten verkrijgen en bijdragen aan innovatie met behulp van open data.
Laat je creativiteit de vrije loop en ontdek welke waardevolle informatie je kunt ontsluiten met de gegevens van het KNMI.
Meer weten over onze oplossingen?
Onze consultants hebben veel ervaring binnen een grote verscheidenheid aan branches.
Eens verder brainstormen over de mogelijkheden voor jouw organisatie?
Maak kennis met onze specialist Arnoud van der Heiden.
2 reacties. Leave new
Hallo Gertjan,
Ik kwam dit artikel tegen tijdens een zoektocht naar een stukje VBA dat hetzelfde kan doen in Excel. Het enige dat ik voorlopig voor elkaar wil krijgen is het ophalen van de TG van Rotterdam voor een in te vullen periode. Waarschijnlijk dus met:
?stns=344&vars=TG&byear=2018&bmonth=1&bday=1&eyear=2018&emonth=3&eday=3
Heb je misschien een tip voor me hoe ik dit voor elkaar kan krijgen in VBAExcel?
Bedankt voor je moeite/aandacht.
He Ron,
Vroeg me af of het gelukt is om de gegevens van de knmi in te lezen in Excel.
Want ik probeer dit namelijk ook voor elkaar te krijgen.