Metadata-Version: 2.5
Name: dailymeteo
Version: 0.3.0
Summary: Meteorological data from the DailyMeteo API and the MeteoEurope1km gridded dataset (Europe, 1 km, 1961-2020)
Project-URL: Source, https://github.com/srpp011/dailymeteo-python
Project-URL: Issues, https://github.com/srpp011/dailymeteo-python/issues
Project-URL: DailyMeteo, https://app.dailymeteo.com/
Project-URL: MeteoEurope1km dataset, https://doi.org/10.5281/zenodo.23264155
Project-URL: R package meteo, https://cran.r-project.org/package=meteo
Author-email: Aleksandar Sekulić <asekulic@grf.bg.ac.rs>, Milan Kilibarda <kili@grf.bg.ac.rs>
Maintainer: Srđan Popović
License-Expression: GPL-2.0-or-later
License-File: LICENSE
Keywords: Europe,Zenodo,climate,gridded data,meteorology,precipitation,temperature
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
Classifier: Topic :: Scientific/Engineering :: GIS
Requires-Python: >=3.9
Requires-Dist: pandas>=1.5
Requires-Dist: requests>=2.28
Provides-Extra: test
Requires-Dist: pytest>=7; extra == 'test'
Description-Content-Type: text/markdown

# dailymeteo

Python client for meteorological data from [DailyMeteo](https://app.dailymeteo.com/):

- **`get_meteo`**: daily, monthly or annual values and long-term means for a location, World, 1961 to the present, from the DailyMeteo API. Monthly, annual and long-term mean values are free; daily data need an API key and are billed per returned day.
- **`meteoeurope1km`**: download of the **MeteoEurope1km** gridded dataset from Zenodo. It covers Europe at 1 km for 1961–2020: TMAX, TMIN, TMEAN, PRCP and SLP, with aggregates and climate normals.

It is the Python counterpart of `get_meteo`, `get_coordinates` and `get_meteoeurope1km` in the R package [meteo](https://cran.r-project.org/package=meteo). Spatial interpolation (RFSI, STRK) is available only in R.

## Installation

```
pip install dailymeteo
```

## Point data from the DailyMeteo API

```python
import dailymeteo as dm

lat, lon = dm.get_coordinates("Belgrade")
df = dm.get_meteo(lat, lon, var="tmean",     # "tmax", "tmin", "prcp"
                  time_scale="mon",           # "ann"; "day" needs api_key="..." from https://app.dailymeteo.com/
                  start="2020-01", end="2020-12")
# or time=["2020-01", "2020-07"]

# climate normals 1961-1990 and 1991-2020 for July
dm.get_meteo(lat, lon, var="tmax", agg_level="ltm", time_scale="mon", time="07")
```

The result is a `pandas.DataFrame` with columns `timestamp` and `value`. Locations without data (e.g. sea) give `NaN`.

## Account: credits, point history, area downloads

```python
acc = dm.Account("you@example.com", "password")   # or DAILYMETEO_EMAIL / DAILYMETEO_PASSWORD
acc.credits()                                      # plan, API credits, bulk credits
dm.get_meteo(lat, lon, var="tmax", time_scale="day", start="2020-07-01", end="2020-07-31", account=acc)
acc.bulk_download(lat, lon)                        # every variable, daily, whole record; CSV by email (1 bulk credit)
area = "POLYGON((20.0 44.0,20.3 44.0,20.3 44.3,20.0 44.3,20.0 44.0))"
acc.estimate_area(area, ["tmax", "prcp"], "2020-07-01", "2020-07-31")   # cost in credits
acc.area_download(area, ["tmax", "prcp"], "2020-07-01", "2020-07-31")   # clipped GeoTIFFs by email (max 3,000 km²)
```

## MeteoEurope1km gridded dataset

```python
from dailymeteo import meteoeurope1km as meu

# list archives: one ZIP per year with daily Cloud-Optimized GeoTIFFs
meu.files(var="tmean", product="day", years=[2001, 2002])

# download, verify MD5, unzip; interrupted downloads are resumed
meu.download(var="tmean", product="day", years=[2001, 2002], dest_dir="meteoeurope1km", unzip=True)

# aggregates and climate normals
meu.download(var="prcp", product="ltm_diff", dest_dir="meteoeurope1km")
```

| `product` | Content | Archives |
|---|---|---|
| `day` | daily data | one per year (about 1–3.5 GB) |
| `mon` | monthly aggregates | one per decade |
| `ann` | annual aggregates, 1961–2020 | one |
| `ltm_day` | daily climate normals | one per period (`period="1961-1990"` / `"1991-2020"`) |
| `ltm_mon_ann` | monthly and annual climate normals | one per period |
| `ltm_diff` | difference of normals, 1991–2020 minus 1961–1990 | one |

Aggregates are means for temperatures and sums for precipitation. For SLP only daily data are available.

Rasters are in the Equi7 Europe projection (EPSG:27704) at 1000 m. Values are Int16 in tenths of the unit, so divide by 10 to get °C, mm or hPa. NoData is −9999.

`meu.catalog()` lists all Zenodo records of the dataset.

## Citation

Sekulić, A., & Kilibarda, M. (2026). *MeteoEurope1km (1961–2020): daily gridded meteorological dataset for Europe at a 1-km spatial resolution*. Zenodo. https://doi.org/10.5281/zenodo.23264155

## License

GPL-2.0-or-later, the same as the R package `meteo`.
