https://github.com/martibosch/meteora
Pythonic interface to access data from meteorological stations :sunny: :umbrella: :cloud: :snowflake:
https://github.com/martibosch/meteora
data-cubes geopandas meteorological-stations netatmo-weather-station pandas python quality-control time-series weather-station xarray
Last synced: 5 months ago
JSON representation
Pythonic interface to access data from meteorological stations :sunny: :umbrella: :cloud: :snowflake:
- Host: GitHub
- URL: https://github.com/martibosch/meteora
- Owner: martibosch
- License: gpl-3.0
- Created: 2024-10-07T09:05:39.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-30T16:23:44.000Z (5 months ago)
- Last Synced: 2026-01-30T22:44:43.166Z (5 months ago)
- Topics: data-cubes, geopandas, meteorological-stations, netatmo-weather-station, pandas, python, quality-control, time-series, weather-station, xarray
- Language: Python
- Homepage: https://meteora.readthedocs.io/en/latest
- Size: 19.2 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Support: docs/supported-providers.rst
Awesome Lists containing this project
README
[](https://pypi.python.org/pypi/meteora)
[](https://anaconda.org/conda-forge/meteora)
[](https://meteora.readthedocs.io/en/latest/?badge=latest)
[](https://github.com/martibosch/meteora/blob/main/.github/workflows/tests.yml)
[](https://results.pre-commit.ci/latest/github/martibosch/meteora/main)
[](https://codecov.io/gh/martibosch/meteora)
[](https://github.com/martibosch/meteora/blob/main/LICENSE)
[](https://mybinder.org/v2/gh/martibosch/meteora/HEAD?labpath=docs%2Fuser-guide%2Fasos-example.ipynb)
# Meteora
Pythonic interface to access observations from meteorological stations. Key features:
- easily stream meteorological observations [from multiple providers, from global (e.g., GHCNh) and regional (e.g., MetOffice) networks to citizen weather stations (e.g., Netatmo)](https://meteora.readthedocs.io/en/latest/supported-providers.html) into pandas data frames.
- user-friendly arguments to filter data by region, variables or date ranges.
- request and download caching with [requests-cache](https://github.com/requests-cache/requests-cache) and [pooch](https://github.com/fatiando/pooch) to avoid re-downloading data and help bypassing API limits.
## Overview
Meteora provides a set of provider-specific clients to get observations from meteorological stations. For instance, it can be used to stream data from [the Global Historical Climatology Network hourly (GHCNh)](https://www.ncei.noaa.gov/products/global-historical-climatology-network-hourly) into a pandas data frame:
```python
from meteora.clients import GHCNHourlyClient
region = "Canton de Vaud, Switzerland"
variables = ["temperature", "precipitation", "wind_speed"]
start = "12-11-2021"
end = "12-12-2021"
client = GHCNHourlyClient(region)
ts_df = client.get_ts_df(variables, start, end)
ts_df.head()
```
```
[########################################] | 100% Completed | 925.68 ms
```
| station_id | time | temperature | precipitation | wind_speed |
| ----------- | ------------------- | ----------- | ------------- | ---------- |
| SZI0000LSMP | 2021-12-11 00:20:00 | 2.0 | NaN | 4.6 |
| | 2021-12-11 00:50:00 | 2.0 | NaN | 5.1 |
| | 2021-12-11 01:20:00 | 2.0 | NaN | 4.6 |
| | 2021-12-11 01:50:00 | 2.0 | NaN | 3.6 |
| | 2021-12-11 02:20:00 | 2.0 | NaN | 4.6 |
We can also get the station locations using the `stations_gdf` property:
```python
import contextily as cx
ax = client.stations_gdf.assign(
T_mean=ts_df.groupby("station_id")["temperature"].mean()
).plot(
"T_mean",
cmap="winter",
legend=True,
legend_kwds={"label": "$\overline{T} \; [\circ C]$", "shrink": 0.5},
)
cx.add_basemap(ax, crs=client.stations_gdf.crs, attribution=False)
```

*(C) OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France*
See [the user guide](https://meteora.readthedocs.io/en/latest/user-guide.html) for more details about the features of Meteora as well as the [list of supported providers](https://meteora.readthedocs.io/en/latest/supported-providers.html).
## Installation
The easiest way to install Meteora is with conda/mamba:
```bash
conda install -c conda-forge meteora
```
Alternatively, if [geopandas dependencies are installed correctly](https://geopandas.org/en/latest/getting_started/install.html), you can install Meteora using pip:
```bash
pip install meteora
```
## See also
Meteora intends to provide a unified way to access data from meteorological stations from multiple providers. The following libraries provide access to data from a specific provider:
- [martibosch/agrometeo-geopy](https://github.com/martibosch/agrometeo-geopy)
- [martibosch/netatmo-geopy](https://github.com/martibosch/netatmo-geopy)
Eventually these packages will be fully integrated into Meteora.
## Acknowledgements
- The logging system is based on code from [gboeing/osmnx](https://github.com/gboeing/osmnx).
- This package was created with the [martibosch/cookiecutter-geopy-package](https://github.com/martibosch/cookiecutter-geopy-package) project template.
- With the support of the École Polytechnique Fédérale de Lausanne (EPFL).