{"id":41367151,"url":"https://github.com/alliander-opensource/weather-provider-api","last_synced_at":"2026-05-19T07:15:57.287Z","repository":{"id":40419274,"uuid":"337123896","full_name":"alliander-opensource/weather-provider-api","owner":"alliander-opensource","description":"This API is intended to help you fetch weather data from different data sources in an efficient and uniform way. By just supplying a list of locations and a time window you can get data for a specific source immediately. This project is licensed under the MPL-2.0 license.","archived":false,"fork":false,"pushed_at":"2026-05-16T10:32:42.000Z","size":4767,"stargazers_count":34,"open_issues_count":3,"forks_count":9,"subscribers_count":3,"default_branch":"main-2.0","last_synced_at":"2026-05-16T12:36:18.739Z","etag":null,"topics":["cds","knmi","weather-api"],"latest_commit_sha":null,"homepage":"https://alliander-opensource.github.io/weather-provider-api/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alliander-opensource.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-08T15:40:43.000Z","updated_at":"2026-04-20T09:12:38.000Z","dependencies_parsed_at":"2026-01-23T09:08:20.157Z","dependency_job_id":null,"html_url":"https://github.com/alliander-opensource/weather-provider-api","commit_stats":null,"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/alliander-opensource/weather-provider-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alliander-opensource%2Fweather-provider-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alliander-opensource%2Fweather-provider-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alliander-opensource%2Fweather-provider-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alliander-opensource%2Fweather-provider-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alliander-opensource","download_url":"https://codeload.github.com/alliander-opensource/weather-provider-api/tar.gz/refs/heads/main-2.0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alliander-opensource%2Fweather-provider-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33205852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"online","status_checked_at":"2026-05-19T02:00:06.763Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cds","knmi","weather-api"],"created_at":"2026-01-23T08:34:34.427Z","updated_at":"2026-05-19T07:15:57.277Z","avatar_url":"https://github.com/alliander-opensource.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\r\nSPDX-FileCopyrightText: 2019-2022 Alliander N.V.\r\nSPDX-License-Identifier: MPL-2.0\r\n--\u003e\r\n[![License: MIT](https://img.shields.io/badge/License-MPL2.0-informational.svg)](https://github.com/alliander-opensource/weather-provider-api/blob/master/LICENSE)\r\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-api\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=alliander-opensource_Weather-Provider-API)\r\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-api\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=alliander-opensource_Weather-Provider-API)\r\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-api\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=alliander-opensource_Weather-Provider-API)\r\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-api\u0026metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=alliander-opensource_Weather-Provider-API)\r\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-api\u0026metric=bugs)](https://sonarcloud.io/dashboard?id=alliander-opensource_Weather-Provider-API)\r\n[![PyPI Downloads](https://static.pepy.tech/personalized-badge/weather-provider-api?period=total\u0026units=INTERNATIONAL_SYSTEM\u0026left_color=BLACK\u0026right_color=GREEN\u0026left_text=downloads)](https://pepy.tech/projects/weather-provider-api)\r\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-api\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=alliander-opensource_Weather-Provider-API)\r\n\r\n\u003e :warning: **Due to changes in the way that CDS delivers data, ERA5 data does not currently process sea level data \r\n\u003e for the time being. This will be fixed in a future release.**\r\n\r\n\r\n# Weather Provider Library and API\r\n\r\nThis API is intended to help you fetch weather data from different data sources in an efficient and uniform way.\r\nBy just supplying a list of locations and a time window you can get data for a specific source immediately.\r\n\r\nThis project can currently be found on the following location:\r\nhttps://github.com/alliander-opensource/Weather-Provider-API\r\n\r\n**For more information also check out this webinar:**\r\n\r\n[![Webinar Weather Provider API](https://img.youtube.com/vi/pjE0DZmSphQ/0.jpg)](https://www.youtube.com/watch?v=pjE0DZmSphQ)\r\n\r\n**And the GitHub Pages at:**\r\nhttps://alliander-opensource.github.io/weather-provider-api/\r\n\r\nThe project uses a number of data sources for the acquisition of weather data. Currently being supported by this API \r\nare the following weather data sources:\r\n\r\n**DATA SOURCE #1: KNMI Historical data per day / hour**\r\n\r\nConsists of the data from 35 weather stations for temperature, sun, cloud, air pressure, wind and precipitation.\r\n\r\nA full description of available weather variables is available for the data per day:\r\nhttp://projects.knmi.nl/klimatologie/daggegevens/selectie.cgi\r\n\r\nA full description for the data per hour consists only of a subset of the previous list:\r\nhttp://projects.knmi.nl/klimatologie/uurgegevens/selectie.cgi\r\n\r\n**DATA SOURCE #2: KNMI prediction data (14 day prediction, per block of 6 hours)**\r\n\r\nPrediction data for weather stations:\r\nDe Bilt, Den Helder(De Kooy), Groningen(Eelde), Leeuwarden, Maastricht(Beek), Schiphol, Twente en Vlissingen\r\n\r\nAvailable weather variables are temperature, wind, precipitation, cape for summer, and snow for winter.\r\n\r\nAn interactive graph can be found at:\u003cBR\u003e\r\nhttps://www.knmi.nl/nederland-nu/weer/waarschuwingen-en-verwachtingen/weer-en-klimaatpluim\r\n\r\n**DATA SOURCE #3: KNMI prediction data (48 hour, per hour prediction)**\r\n\r\nPrediction data is updated every 6 hours (00, 06, 12 and 18 UTC+00) based on the HARMONIE AROME model of KNMI.\r\n\r\nGeographical resolution is 0.037 grades west-east and 0.023 grades north-south.\r\n\r\nA full description of available weather variables is available at:\r\nhttps://www.knmidata.nl/data-services/knmi-producten-overzicht/atmosfeer-modeldata/data-product-1\r\n\r\n**DATA SOURCE #4: KNMI current weather data()**\r\n\u003e\u003e Actuele waarnemingen\r\n\r\n**DATA SOURCE #5: CDS (Climate Data Store) hourly data from 1979 to present**\r\n\r\nERA5 is the fifth generation ECMWF (European Centre for Medium Range Weather Forecast)\r\natmospheric reanalysis of the global climate.\r\nERA5 data released so far covers the period from 1979 to 2-3 months before the present.\r\nERA5 provides worldwide data for temperature and pressure, wind (at 100 meter height),\r\nradiation and heat, clouds, evaporation and runoff, precipitation and rain, snow, soil, etc.\r\nThe spatial resolution of the data set is approximately 80 km.\r\n\r\nA full description of available weather variables is available at:\r\nhttps://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels?tab=overview\r\n\r\nNOTE: The Weather Provider Library and API currently only stores only a selection of the available variables\r\nin its archives.\r\n\r\n## Input parameters to use the API\r\n\r\n### General input parameters\r\n\r\n- coords: nested 3-layer list representing a list of polygon.\r\nIn case of points, they are treated as one-point polygon\r\n- start: start time of output data, for prediction data this is not needed\r\n- end: end time of output data, for prediction data this is not needed\r\n- data_time: history or prediction data\r\n- data_source: KNMI, Climate Data Store(CDS, not available yet), DarkSky (not available yet)\r\n- data_timestep: day, hour, or day_part (6 hour)\r\n- weather_factors: list of weather factors,\r\n            default is all available weather factors\r\n- output_unit: org (original), human_readable or SI (International System of Units),\r\n            default is the original names and units in data sources.\r\n### Case specific input parameters\r\n#### Choosing (a group of) weather variables for historical data from KNMI\r\nFor historical data from KNMI the value for ``` weather_factors ``` in input can be a list of desired variables in random order,\r\nindicated by their acronyms separated by ':',\r\nfor example ``` TG: TN: EV24 ```.\r\n\r\nThe following acronyms are defined to indicate groups of variables:\r\n* **WIND = DDVEC:FG:FHX:FHX:FX** - *wind*\r\n* **TEMP = TG:TN:TX:T10N** - *temperature*\r\n* **SUNR = SQ:SP:Q** - *sunshine duration and global radiation*\r\n* **PRCP = DR:RH:EV24** - *precipitation and evaporation*\r\n* **PRES = PG:PGX** - *pressure at sea level*\r\n* **VICL = VVN:VVX:NG** - *visibility and clouds*\r\n* **MSTR = UG:UX:UN** - *humidity*\r\n* **ALL** - *all variables (default)*\r\n\r\n#### Choosing the name and unit for output\r\nThe output data from the four data sources of KNMI may have different names and units for the same weather variable,\r\nwhich may not easy to use in analytics.\r\n\r\nThis API provides an option to chose a standard name/unit for the mostly used weather variables, see table below.\r\nThe value of  ``` output_unit ``` in input can be set to:\r\n* ``` org ```: to keep the originally used names and units\r\n* ``` SI ```: to convert the variable-names into SI/human readable name,\r\nand convert the units into SI units\r\n* ``` human ```: to convert the variable-names into SI/human readable name,\r\nand convert the units into human-readable units.\r\n\r\n\r\n| Hist day name | Hist day unit | Hist hour name | Hist hour unit | Forecast 14d name | Forecast 14d unit | Forecast 48h name | Forecast 48h unit | SI/Human readable name |    SI unit    | Human readable unit |\r\n| :-----------: |:-------------:| :-------------:| :------------: |:-----------------:| :----------------:| :---------------- |:-----------------:| :---------------------:| :-----------: |:-------------------:|\r\n| FG            | 0.1 m/s       | FH             | 0.1 m/s        | wind_speed        | km/uur            |                   |                   | wind_speed             | m/s           | m/s                 |\r\n| FHX           | 0.1 m/s       | FX             | 0.1 m/s        |                   |                   |                   |                   | wind_speed_max         | m/s           | m/s                 |\r\n| TG            | 0.1 celsius   | T              | 0.1 celsius    | temperature       | celsius           | 2T                | K                 | temperature            | K             | celsius             |\r\n| Q             | J/cm2         | Q              | J/cm2          |                   |                   | GRAD              | J m**-2           | global_radiation       | J/m2          | J/m2                |\r\n| RH            | 0.1 mm        | RH             | 0.1 mm         | precipitation     | mm                |                   |                   | precipitation          | m             | mm                  |\r\n| PG            | 0.1 hPa       | P              | 0.1 hPa        |                   |                   | LSP               | Pa                | air_pressure           | Pa            | Pa                  |\r\n| NG            | [1,2…9]      | N              | [1,2…9]       |                   |                   |                   |                   | cloud_cover            | [1,2…9]      | [1,2…9]             |\r\n| UG            | %             | U              | %              |                   |                   |                   |                   | humidity               | %             | %                   |\r\n\r\nThe CDS data uses only SI units, and as such there is no distinction between ``` org ``` and ``` si ``` .\r\n\r\n## Getting started - using as a package/project\r\n### Prerequisites\r\n\r\nThis package is supported from Python 3.8 or later. See '''requirements.txt''' for a list of dependencies.\r\nThis package works under at least Linux and Windows environments. (Other Operating Systems not tested)\r\n\r\n### Installing\r\n\r\n1. Clone the repo\r\n2. Navigate to root\r\n3. Install the dependencies using conda/pip or both, depending on your environment\r\n```\r\nconda install --file requirements.txt\r\n```\r\n```\r\npip install -r requirements.txt\r\n```\r\n4. Ready for use!\r\n\r\n### Using as a full project\r\nThe full API can now be run by executing:\r\n```main.py```\r\nWith the exception of ERA5 Single Levels and Harmonie Arome data, every data source can now be accessed\r\nusing either the created end points or the API docs interface at the running location.\r\n(127.0.0.1:8080 when running locally)\r\n\r\nSpecific calls can now be run by executing the proper command. For examples, check out the **\\bin** folder.\r\n\r\n### Using as a wheel\r\nInstall the wheel into your project environment and import the required classes.\r\nUsually this will be either a specific Weather Model or the Weather Controller.\r\n\r\n## Contributing\r\n\r\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\r\n\r\n## Contact\r\nTo contact the project owners directly please e-mail us at [weather.provider@alliander.com](mailto://weather.provider@alliander.com)\r\n            \r\n## Authors\r\n\r\nThis project was initially created by:\r\n\r\n* **Tongyou Gu** - *Original API development*\r\n* **Jeroen van de Logt** - *Functions in utilities*\r\n* **Bas Niesink** - *Implementation weather REST API*\r\n* **Raoul Linnenbank** - *Active API Development, Geo positioning, CDS ERA5, caching, remodeling, Harmonie Arome and optimisation*\r\n\r\nCurrently, this project is governed in an open source fashion, this is documented in [PROJECT_GOVERNANCE](PROJECT_GOVERNANCE.md).\r\n\r\n## License\r\n\r\nThis project is licensed under the Mozilla Public License, version 2.0 - see LICENSE for details\r\n\r\n## Licenses third-party code\r\n\r\nThis project includes third-party code, which is licensed under their own respective Open-Source licenses. SPDX-License-Identifier headers are used to show which license is applicable. The concerning license files can be found in the LICENSES directory. \r\n\r\n## Acknowledgments\r\n\r\nThanks to team Inzicht \u0026 Analytics and Strategie \u0026 Innovatie to\r\nmake this project possible.\r\n\r\nA big thanks as well to Alliander for being the main sponsor for this open source project.  \r\n\r\nAnd of course a big thanks to the guys of IT New Business \u0026 R\u0026D to provide\r\nsuch an easy-to-use Python environment in the cloud.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falliander-opensource%2Fweather-provider-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falliander-opensource%2Fweather-provider-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falliander-opensource%2Fweather-provider-api/lists"}