{"id":23886028,"url":"https://github.com/martibosch/meteora","last_synced_at":"2026-02-01T16:00:37.806Z","repository":{"id":257815549,"uuid":"868832171","full_name":"martibosch/meteora","owner":"martibosch","description":"Pythonic interface to access data from meteorological stations :sunny: :umbrella: :cloud: :snowflake:","archived":false,"fork":false,"pushed_at":"2026-01-30T16:23:44.000Z","size":20176,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-30T22:44:43.166Z","etag":null,"topics":["data-cubes","geopandas","meteorological-stations","netatmo-weather-station","pandas","python","quality-control","time-series","weather-station","xarray"],"latest_commit_sha":null,"homepage":"https://meteora.readthedocs.io/en/latest","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martibosch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported-providers.rst","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":"2024-10-07T09:05:39.000Z","updated_at":"2026-01-30T16:23:49.000Z","dependencies_parsed_at":"2024-11-19T00:27:32.899Z","dependency_job_id":"f3e086fb-0e69-465c-a5a3-2eb7008f4479","html_url":"https://github.com/martibosch/meteora","commit_stats":null,"previous_names":["martibosch/meteora"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/martibosch/meteora","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martibosch%2Fmeteora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martibosch%2Fmeteora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martibosch%2Fmeteora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martibosch%2Fmeteora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martibosch","download_url":"https://codeload.github.com/martibosch/meteora/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martibosch%2Fmeteora/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28981893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T15:35:50.179Z","status":"ssl_error","status_checked_at":"2026-02-01T15:35:38.075Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["data-cubes","geopandas","meteorological-stations","netatmo-weather-station","pandas","python","quality-control","time-series","weather-station","xarray"],"created_at":"2025-01-04T05:56:31.272Z","updated_at":"2026-02-01T16:00:37.801Z","avatar_url":"https://github.com/martibosch.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PyPI version fury.io](https://badge.fury.io/py/meteora.svg)](https://pypi.python.org/pypi/meteora)\n[![Conda Version](https://img.shields.io/conda/vn/conda-forge/meteora.svg)](https://anaconda.org/conda-forge/meteora)\n[![Documentation Status](https://readthedocs.org/projects/meteora/badge/?version=latest)](https://meteora.readthedocs.io/en/latest/?badge=latest)\n[![tests](https://github.com/martibosch/meteora/actions/workflows/tests.yml/badge.svg)](https://github.com/martibosch/meteora/blob/main/.github/workflows/tests.yml)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/martibosch/meteora/main.svg)](https://results.pre-commit.ci/latest/github/martibosch/meteora/main)\n[![codecov](https://codecov.io/gh/martibosch/meteora/graph/badge.svg?token=smWkIfB7mM)](https://codecov.io/gh/martibosch/meteora)\n[![GitHub license](https://img.shields.io/github/license/martibosch/meteora.svg)](https://github.com/martibosch/meteora/blob/main/LICENSE)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/martibosch/meteora/HEAD?labpath=docs%2Fuser-guide%2Fasos-example.ipynb)\n\n# Meteora\n\nPythonic interface to access observations from meteorological stations. Key features:\n\n- 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.\n- user-friendly arguments to filter data by region, variables or date ranges.\n- 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.\n\n## Overview\n\nMeteora 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:\n\n```python\nfrom meteora.clients import GHCNHourlyClient\n\nregion = \"Canton de Vaud, Switzerland\"\nvariables = [\"temperature\", \"precipitation\", \"wind_speed\"]\nstart = \"12-11-2021\"\nend = \"12-12-2021\"\n\nclient = GHCNHourlyClient(region)\nts_df = client.get_ts_df(variables, start, end)\nts_df.head()\n```\n\n```\n[########################################] | 100% Completed | 925.68 ms\n```\n\n| station_id  | time                | temperature | precipitation | wind_speed |\n| ----------- | ------------------- | ----------- | ------------- | ---------- |\n| SZI0000LSMP | 2021-12-11 00:20:00 | 2.0         | NaN           | 4.6        |\n|             | 2021-12-11 00:50:00 | 2.0         | NaN           | 5.1        |\n|             | 2021-12-11 01:20:00 | 2.0         | NaN           | 4.6        |\n|             | 2021-12-11 01:50:00 | 2.0         | NaN           | 3.6        |\n|             | 2021-12-11 02:20:00 | 2.0         | NaN           | 4.6        |\n\nWe can also get the station locations using the `stations_gdf` property:\n\n```python\nimport contextily as cx\n\nax = client.stations_gdf.assign(\n    T_mean=ts_df.groupby(\"station_id\")[\"temperature\"].mean()\n).plot(\n    \"T_mean\",\n    cmap=\"winter\",\n    legend=True,\n    legend_kwds={\"label\": \"$\\overline{T} \\; [\\circ C]$\", \"shrink\": 0.5},\n)\ncx.add_basemap(ax, crs=client.stations_gdf.crs, attribution=False)\n```\n\n![vaud-stations-t-mean](https://github.com/martibosch/meteora/raw/main/docs/figures/vaud-stations-t-mean.png)\n\n*(C) OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France*\n\nSee [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).\n\n## Installation\n\nThe easiest way to install Meteora is with conda/mamba:\n\n```bash\nconda install -c conda-forge meteora\n```\n\nAlternatively, if [geopandas dependencies are installed correctly](https://geopandas.org/en/latest/getting_started/install.html), you can install Meteora using pip:\n\n```bash\npip install meteora\n```\n\n## See also\n\nMeteora 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:\n\n- [martibosch/agrometeo-geopy](https://github.com/martibosch/agrometeo-geopy)\n- [martibosch/netatmo-geopy](https://github.com/martibosch/netatmo-geopy)\n\nEventually these packages will be fully integrated into Meteora.\n\n## Acknowledgements\n\n- The logging system is based on code from [gboeing/osmnx](https://github.com/gboeing/osmnx).\n- This package was created with the [martibosch/cookiecutter-geopy-package](https://github.com/martibosch/cookiecutter-geopy-package) project template.\n- With the support of the École Polytechnique Fédérale de Lausanne (EPFL).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartibosch%2Fmeteora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartibosch%2Fmeteora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartibosch%2Fmeteora/lists"}