wetterdienst

Open weather data for humans.

https://github.com/earthobservations/wetterdienst

Science Score: 64.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 27 committers (11.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary

Keywords

canada data deutscher-wetterdienst dwd eccc germany historical-data hydrology meteorology open-data open-source radar time-series uk united-states weather weather-api weather-forecast weather-station weatherservice

Keywords from Contributors

transformation interaction mesh mot agents cryptocurrencies graph-computation document-parser climate annotation
Last synced: 6 months ago · JSON representation ·

Repository

Open weather data for humans.

Basic Info
Statistics
  • Stars: 396
  • Watchers: 9
  • Forks: 55
  • Open Issues: 22
  • Releases: 146
Topics
canada data deutscher-wetterdienst dwd eccc germany historical-data hydrology meteorology open-data open-source radar time-series uk united-states weather weather-api weather-forecast weather-station weatherservice
Created about 7 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing Funding License Code of conduct Citation

README.md

Wetterdienst - Open weather data for humans

German weather stations managed by Deutscher Wetterdienst temperature timeseries of Hohenpeissenberg/Germany warming stripes of Hohenpeissenberg/Germany

"What do we want? Climate Justice! When do we want it? Now!" - FFF

[!WARNING] This library is a work in progress! Breaking changes should be expected until a 1.0 release, so version pinning is recommended.

Badges

CI

CI status Documentation status Code coverage

Meta

PyPI version Conda version Project license Project status (alpha, beta, stable) Python version compatibility

Downloads

PyPI downloads Conda downloads

Citation

Citation reference

Overview

Welcome to Wetterdienst, your friendly weather service library for Python.

We are a group of like-minded people trying to make access to weather data in Python feel like a warm summer breeze, similar to other projects like rdwd for the R language, which originally drew our interest in this project. Our long-term goal is to provide access to multiple weather services as well as other related agencies such as river measurements. With wetterdienst we try to use modern Python technologies all over the place. The library is based on polars (we <3 pandas, it is still part of some IO processes) across the board, uses uv for package administration and GitHub Actions for all things CI. Our users are an important part of the development as we are not currently using the data we are providing and only implement what we think would be the best. Therefore, contributions and feedback whether it be data related or library related are very welcome! Just hand in a PR or Issue if you think we should include a new feature or data source.

Data

For an overview of the data we have currently made available and under which license it is published take a look at the data section. Detailed information on datasets and parameters is given at the coverage subsection. Licenses and usage requirements may differ for each provider so check this out before including the data in your project to be sure that you fulfill copyright requirements!

For a closer look on the DWD data, you can use the interactive map or the table provided by the rdwd package.

Features

  • APIs for stations and values
  • Get stations nearby a selected location
  • Define your request by arguments such as parameters, periods, start date, end date
  • Define general settings in Settings context
  • Command line interfaced
  • Web-API via FastAPI, hosted on wetterdienst.eobs.org
  • Rich UI features like explorer, stripes
  • Run SQL queries on the results
  • Export results to databases and other data sinks
  • Public Docker image
  • Interpolation and Summary of station values

Setup

Native

Via PyPi (standard):

bash pip install wetterdienst

Via Github (most recent):

bash pip install git+https://github.com/earthobservations/wetterdienst

There are some extras available for wetterdienst. Use them like:

bash pip install wetterdienst[sql]

  • cratedb: Install support for CrateDB.
  • duckdb: Install support for DuckDB.
  • export: Install openpyxl for Excel export and pyarrow for writing files in Feather- and Parquet-format.
  • influxdb: Install support for InfluxDB.
  • interpolation: Install support for station interpolation.
  • mysql: Install support for MySQL.
  • matplotlib: Install support for plotting (matplotlib), only used in radar examples.
  • plotting: Install support for plotting (plotly).
  • postgresql: Install support for PostgreSQL.
  • sql: Install DuckDB for querying data using SQL.

To check the installation, invoke:

bash wetterdienst --help

Docker

Docker images for each stable release will get pushed to GitHub Container Registry.

wetterdienst serves a full environment, including all the optional dependencies of Wetterdienst.

Pull the Docker image:

bash docker pull ghcr.io/earthobservations/wetterdienst

Library

Use the latest stable version of wetterdienst:

bash $ docker run -ti ghcr.io/earthobservations/wetterdienst Python 3.8.5 (default, Sep 10 2020, 16:58:22) [GCC 8.3.0] on linux

python import wetterdienst wetterdienst.__version__

Command line script

The wetterdienst command is also available:

```bash

Make an alias to use it conveniently from your shell.

alias wetterdienst='docker run -ti ghcr.io/earthobservations/wetterdienst wetterdienst'

wetterdienst --help wetterdienst --version wetterdienst info ```

Raspberry Pi / LINUX ARM

Running wetterdienst on Raspberry Pi, you need to install numpy and lxml prior to installing wetterdienst by running the following lines:

```bash

not all installations may be required to get lxml running

sudo apt-get install gfortran sudo apt-get install libopenblas-base sudo apt-get install libopenblas-dev sudo apt-get install libatlas-base-dev sudo apt-get install python3-lxml ```

Additionally expanding the Swap to 2048 mb may be required and can be done via swap-file:

bash sudo nano /etc/dphys-swapfile

Thanks chr-sto for reporting back to us!

Example

Task

Get historical climate summary for two German stations between 1990 and 2020

Library

```python from wetterdienst import Settings from wetterdienst.provider.dwd.observation import DwdObservationRequest

settings = Settings( # default tsshape="long", # tidy data tshumanize=True, # humanized parameters tsconvertunits=True # convert values to SI units )

request = DwdObservationRequest( parameters=[ ("daily", "climatesummary", "precipitationheight"), ], startdate="2002-08-11", # if not given timezone defaulted to UTC enddate="2002-08-13", # if not given timezone defaulted to UTC settings=settings ).filterbystationid(stationid=(5779,))

stations = request.df stations.head()

┌────────────┬─────────────────┬────────────┬─────────────────────────┬───┬───────────┬────────┬──────────────────────┬─────────┐

│ resolution ┆ dataset ┆ stationid ┆ startdate ┆ … ┆ longitude ┆ height ┆ name ┆ state │

│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │

│ str ┆ str ┆ str ┆ datetime[μs, UTC] ┆ ┆ f64 ┆ f64 ┆ str ┆ str │

╞════════════╪═════════════════╪════════════╪═════════════════════════╪═══╪═══════════╪════════╪══════════════════════╪═════════╡

│ daily ┆ climate_summary ┆ 05779 ┆ 1971-01-01 00:00:00 UTC ┆ … ┆ 13.7516 ┆ 877.0 ┆ Zinnwald-Georgenfeld ┆ Sachsen │

└────────────┴─────────────────┴────────────┴─────────────────────────┴───┴───────────┴────────┴──────────────────────┴─────────┘

values = request.values.all().df values.head()

┌────────────┬────────────┬─────────────────┬──────────────────────┬─────────────────────────┬───────┬─────────┐

│ station_id ┆ resolution ┆ dataset ┆ parameter ┆ date ┆ value ┆ quality │

│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │

│ str ┆ str ┆ str ┆ str ┆ datetime[μs, UTC] ┆ f64 ┆ f64 │

╞════════════╪════════════╪═════════════════╪══════════════════════╪═════════════════════════╪═══════╪═════════╡

│ 05779 ┆ daily ┆ climatesummary ┆ precipitationheight ┆ 2002-08-11 00:00:00 UTC ┆ 67.9 ┆ 10.0 │

│ 05779 ┆ daily ┆ climatesummary ┆ precipitationheight ┆ 2002-08-12 00:00:00 UTC ┆ 312.0 ┆ 10.0 │

│ 05779 ┆ daily ┆ climatesummary ┆ precipitationheight ┆ 2002-08-13 00:00:00 UTC ┆ 26.3 ┆ 10.0 │

└────────────┴────────────┴─────────────────┴──────────────────────┴─────────────────────────┴───────┴─────────┘

to get a pandas DataFrame and e.g. create some matplotlib plots

values.to_pandas() ```

Client

```bash

Get list of all stations for daily climate summary data in JSON format

wetterdienst stations --provider=dwd --network=observation --parameters=daily/kl --all

Get daily climate summary data for specific stations

wetterdienst values --provider=dwd --network=observation --parameters=daily/kl --station=1048,4411 ```

Other

Checkout examples for more examples.

Acknowledgements

We want to acknowledge all environmental agencies which provide their data open and free of charge first and foremost for the sake of endless research possibilities.

We want to acknowledge all contributors for being part of the improvements to this library that make it better and better every day.

Important Links

  • Restapi: https://wetterdienst.eobs.org/
  • Explorer: https://wetterdienst.streamlit.app/
  • Stripes: https://stripes.streamlit.app/
  • Documentation: https://wetterdienst.readthedocs.io/

    • Usage: https://wetterdienst.readthedocs.io/en/latest/usage/
    • Contribution: https://wetterdienst.readthedocs.io/en/latest/contribution/
    • Changelog: https://wetterdienst.readthedocs.io/en/latest/changelog.html
  • Examples (runnable scripts): https://github.com/earthobservations/wetterdienst/tree/main/examples

  • Benchmarks: https://github.com/earthobservations/wetterdienst/tree/main/benchmarks

Supported by

JetBrains logo.

Special thanks to the kind people at JetBrains s.r.o. for supporting us with excellent development tooling.

Owner

  • Name: earth observations
  • Login: earthobservations
  • Kind: organization
  • Email: info@eobs.org
  • Location: Germany

Citation (CITATION.cff)

---
cff-version: 1.2.0
type: software
title: wetterdienst
version: 0.60.0
date-released: '2023-09-16'
authors:
- name: Benjamin Gutzmann
- name: Andreas Motl
license: MIT
abstract: Open weather data for humans
keywords:
- open-source
- open-data
- weather
- weather-data
- weather-api
- weather-station
- time-series
- observations
- historical-data
- recent-data
- forecast
- radar
- dwd
- deutscher-wetterdienst
- german-weather-service
- mosmix
- radolan
- eccc
- environment-and-climate-change-canada
- environnement-et-changement-climatique-canada
- noaa
- national-oceanic-and-atmospheric-administration
- ghcn
- global-historical-climatology-network
- wsv
- Wasserstraßen-und-Schifffahrtsverwaltung-des-Bundes
- Federal-Waterways-and-Shipping-Administration
- ea
- environmental-agency-uk
- noaa-nws
- national-weather-service
- eaufrance-hubeau
- geosphere
- geosphere-austria
message: If you use this software, please cite it using these metadata.
...

GitHub Events

Total
  • Create event: 116
  • Release event: 14
  • Issues event: 38
  • Watch event: 35
  • Delete event: 102
  • Issue comment event: 129
  • Push event: 534
  • Pull request review comment event: 2
  • Pull request review event: 7
  • Pull request event: 202
  • Fork event: 3
Last Year
  • Create event: 116
  • Release event: 14
  • Issues event: 38
  • Watch event: 35
  • Delete event: 102
  • Issue comment event: 129
  • Push event: 534
  • Pull request review comment event: 2
  • Pull request review event: 7
  • Pull request event: 202
  • Fork event: 3

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 1,727
  • Total Committers: 27
  • Avg Commits per committer: 63.963
  • Development Distribution Score (DDS): 0.34
Past Year
  • Commits: 189
  • Committers: 4
  • Avg Commits per committer: 47.25
  • Development Distribution Score (DDS): 0.058
Top Committers
Name Email Commits
Benjamin Gutzmann g****n@g****m 1,139
Andreas Motl a****l@p****g 368
dependabot[bot] 4****] 130
meteoDaniel d****6 22
Nico Neumann 3****o 12
Benjamin Gutzmann g****n@g****m 11
d.lassahn d****n@m****e 7
Rahul r****8@g****m 7
meteoDaniel d****n@g****m 5
Jan-Henrik Bruhn g****b@j****e 4
Berry Boessenkool b****b@g****e 2
Emmanuel Ferdman e****n@g****m 2
Kai Mühlbauer k****r@u****e 2
Max Buchholz M****z@g****e 2
Niclas Hoyer i****o@n****e 2
David Wallace d****e@t****e 1
Ilya Kamenshchikov i****v@g****m 1
Janek Nouvertné j****e@n****y 1
Justus Braun 5****n 1
Korbenga 7****a 1
Max Bachmann k****t@m****e 1
Maximilian Linhoff m****f@t****e 1
Weidav 6****v 1
Xylar Asay-Davis x****m@g****m 1
donni-h 5****h 1
e-dism 7****m 1
Sander Maijers 3****L 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 287
  • Total pull requests: 1,369
  • Average time to close issues: 2 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 94
  • Total pull request authors: 23
  • Average comments per issue: 4.28
  • Average comments per pull request: 1.08
  • Merged pull requests: 1,055
  • Bot issues: 1
  • Bot pull requests: 419
Past Year
  • Issues: 26
  • Pull requests: 217
  • Average time to close issues: 9 days
  • Average time to close pull requests: 4 days
  • Issue authors: 19
  • Pull request authors: 4
  • Average comments per issue: 3.0
  • Average comments per pull request: 0.31
  • Merged pull requests: 174
  • Bot issues: 0
  • Bot pull requests: 35
Top Authors
Issue Authors
  • amotl (78)
  • gutzbenj (32)
  • meteoDaniel (23)
  • guidocioni (11)
  • larsrinn (9)
  • TheAnalystx (6)
  • SB-511 (6)
  • saschnet (5)
  • kmuehlbauer (4)
  • Weidav (4)
  • MLfreakPy (4)
  • wetterfrosch (3)
  • darian-heede (3)
  • asun233 (3)
  • e-dism (3)
Pull Request Authors
  • gutzbenj (724)
  • dependabot[bot] (419)
  • amotl (161)
  • meteoDaniel (18)
  • neumann-nico (10)
  • bluearrow98 (4)
  • emmanuel-ferdman (4)
  • niclashoyer (3)
  • maxnoe (2)
  • jhbruhn (2)
  • xylar (2)
  • provinzkraut (2)
  • sanmai-NL (2)
  • 1Maxnet1 (2)
  • Korbenga (2)
Top Labels
Issue Labels
enhancement (30) bug (17) feature (8) help wanted (7) infrastructure (6) question (2) parameter-naming (2) tests (2) good first issue (2) dependencies (1) python (1)
Pull Request Labels
dependencies (418) python (265) github_actions (36) enhancement (14) feature (6) infrastructure (5) tests (4) bug (3) hacktoberfest-accepted (3) docker (2)

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 14,693 last-month
  • Total dependent packages: 2
    (may contain duplicates)
  • Total dependent repositories: 5
    (may contain duplicates)
  • Total versions: 333
  • Total maintainers: 1
pypi.org: wetterdienst

Open weather data for humans

  • Homepage: https://wetterdienst.readthedocs.io/
  • Documentation: https://wetterdienst.readthedocs.io/
  • License: # MIT License Copyright (c) 2018 - 2024 earthobservations Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • Latest release: 0.111.0
    published 7 months ago
  • Versions: 145
  • Dependent Packages: 2
  • Dependent Repositories: 5
  • Downloads: 14,693 Last month
Rankings
Downloads: 2.5%
Stargazers count: 3.7%
Average: 5.3%
Forks count: 6.2%
Dependent repos count: 6.7%
Dependent packages count: 7.3%
Maintainers (1)
Last synced: 6 months ago
proxy.golang.org: github.com/earthobservations/wetterdienst
  • Versions: 145
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
conda-forge.org: wetterdienst
  • Versions: 43
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Stargazers count: 23.5%
Forks count: 27.4%
Average: 34.0%
Dependent repos count: 34.0%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

.github/workflows/coverage.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v3 composite
.github/workflows/dependency-review.yml actions
  • actions/checkout v3 composite
  • actions/dependency-review-action v3 composite
.github/workflows/docker-publish-full.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • docker/build-push-action v4 composite
  • docker/login-action v2 composite
  • docker/metadata-action v4 composite
  • docker/setup-buildx-action v2 composite
  • docker/setup-qemu-action v2 composite
.github/workflows/docker-publish-standard.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • docker/build-push-action v4 composite
  • docker/login-action v2 composite
  • docker/metadata-action v4 composite
  • docker/setup-buildx-action v2 composite
  • docker/setup-qemu-action v2 composite
.github/workflows/lint.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/release.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/tests.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/release/full/Dockerfile docker
  • debian bookworm-slim build
.github/release/standard/Dockerfile docker
  • python 3.11-slim-bookworm build
poetry.lock pypi
  • 287 dependencies
pyproject.toml pypi
  • Pint ^0.17
  • aenum ^3.0
  • aiohttp ^3.8.1
  • backports-datetime-fromisoformat ^2.0.0
  • beautifulsoup4 ^4.9
  • cachetools ^5.2
  • click ^8.0
  • click-params ^0.4.1
  • cloup ^3.0.1
  • crate ^0.30.1
  • dash ^2.8
  • dash-bootstrap-components ^1.4
  • dash-leaflet ^1.0.8
  • deprecation ^2.1
  • diskcache ^5.4.0
  • duckdb ^0.7.1
  • eccodes ^1.5.2
  • environs ^9.4.0
  • fastapi ^0.95.1
  • fsspec ^2023.01
  • geojson ^3.0.0
  • h5py ^3.1
  • httpx ^0.24.0
  • influxdb ^5.3
  • influxdb-client ^1.18
  • lxml ^4.9.1
  • matplotlib ^3.3
  • measurement ^3.2
  • mysqlclient ^2.0
  • numpy ^1.22
  • openpyxl ^3.0
  • pandas ^2.0
  • pdbufr ^0.10.2
  • platformdirs ^3.8
  • plotly ^5.11
  • polars ^0.16
  • psycopg2-binary ^2.8
  • pyarrow ^13.0
  • pypdf ^3.12.1
  • python ^3.9,<3.12
  • python-dateutil ^2.8.2
  • rapidfuzz ^3.1
  • requests ^2.20
  • scikit-learn ^1.0.2
  • scipy ^1.9
  • shapely ^2.0
  • sqlalchemy ^2.0
  • stamina ^23.1.0
  • tabulate ^0.8
  • timezonefinder ^6.1
  • tqdm ^4.47
  • tzdata ^2023.3
  • utm ^0.7
  • uvicorn ^0.14
  • wradlib ^1.19
  • xarray ^2023.1
  • xlsx2csv ^0.8.1
  • xlsxwriter ^3.0.9
  • xradar ^0.2.0
  • zarr ^2.13
wetterdienst/ui/streamlit/requirements.txt pypi
  • plotly *
  • wetterdienst *