Sources
Everything on this site is somebody else's open data. Nothing here is scraped, nothing is behind a key, and every feed below permits republication. This page is the whole list, with what each one costs to fetch — because a public service's bandwidth is a real thing to spend.
What IMGW-PIB publishes
Poland's Institute of Meteorology and Water Management is, on the evidence of this scan, one of the more open meteorological services in Europe. The legal basis is stated on its own portal: Poland's open data act of 11 August 2021, and Commission Implementing Regulation (EU) 2023/138, which places meteorological model output, radar and station observations in the category of high-value datasets that must be available free, in bulk, machine-readable and under an open licence. IMGW complies with it properly.
| Feed | What it is | Format | Cadence | Cost per cycle | Used for |
|---|---|---|---|---|---|
| COSMO 2.8 km COSMO_HVD_<HH>_<00,01> |
The national mesoscale model. 380 × 405 on a rotated grid, 50 hybrid levels, hourly to T+60. | GRIB1 | 4 runs/day | 9.7 GB | All the 2.8 km maps, and every field on this site that does not exist elsewhere |
| POLRAD composite COMPO_CMAX_250, COMPO_SRI |
National composite of ten Doppler radars — column-max reflectivity 900 × 900, surface rain rate 800 × 800. | ODIM HDF5 | every 5 min | 0.14 MB/frame | Radar, and the radar overlay in the explorer |
| synop | 62 synoptic stations, hourly. | JSON | hourly | 14 kB | Model verification, halny |
| hydro | 913 river gauges with each gauge's own warning and alarm stage. | JSON | ~hourly | 550 kB | Rivers |
| warningsmeteo / warningshydro | Warnings, degree 1–3, each with the TERYT codes of the powiats it covers. | JSON | on issue | 120 kB | Warnings, front page |
| meteo | 788 automatic telemetric stations, 10-minute precipitation. | JSON | 10 min | 520 kB | Not yet used |
- The COSMO
readme.txtdescribes a 0.0625° grid of 415 × 460 points with the rotated pole at 32.5 °N and 40 levels. The GRIB says 0.025°, 380 × 405, southern pole at −40 °N and 50 levels. The readme describes the 7 km run this feed used to carry. Believing it builds a sampler onto a domain three times too large. - The readme's field names are not the file's. The land mask is
lsmand notFR_LAND; the surface height isHSURFand notHH; the accumulated snowfall islssfand notSNOW_GSP. Asking for a name eccodes does not use finds nothing and renders an empty field with no error anywhere.
The other model feeds
| Source | Model | Transport | Cost per cycle | Licence |
|---|---|---|---|---|
| DWD opendata.dwd.de | ICON-EU 7 km, T+120 | One bzip2 file per variable per step, ~1 MB each | ~2.2 GB | CC BY 4.0 |
| Met Office on AWS Open Data | Global 10 km, T+168 | One NetCDF per variable per step, whole-globe, cropped on arrival | ~2.6 GB | British Crown copyright, CC BY 4.0 |
| ECMWF data.ecmwf.int | IFS 0.25°, T+240 | HTTP byte ranges against the published JSON-lines index — a step costs the 12 records this site draws, about 6 MB against 94 | ~0.3 GB | CC BY 4.0 |
| GIOŚ api.gios.gov.pl | Air quality index, ~290 stations | JSON-LD, one request per station | ~1 MB | Polish open data act |
| Natural Earth | Coast, borders, voivodeships, rivers, lakes | Shapefiles, 10 m, built once into pre-projected JSON | once | Public domain |
On bandwidth, and being a good guest
COSMO is by far the most expensive thing here, and the reason is worth
stating plainly. IMGW's download endpoint does not support HTTP byte
ranges — a Range request returns the whole object — so a
lead time cannot be subsetted by asking for the fifteen records this site
draws out of the 523 in the file. It has to be streamed.
What this site does instead is hang up. A GRIB file is a sequence of self-delimiting messages, so the ingest reads the socket, cuts messages out of the buffer as they arrive, and closes the connection the moment the last wanted record has gone past. The useful records end at about 90 % of the file, so that saves roughly a tenth — measured on a real cycle, 9,740 MB pulled against 10,494 MB of file. The larger benefit is that the resident set stays at a few hundred kilobytes per stream instead of 161 MB.
At four cycles a day that is about 39 GB a day from a public
service. It is well within what the regulation contemplates, and it is still
somebody's bandwidth. If IMGW ever asks, the axis is one constant in
ingest/sources.py and halving the cycles halves the bill with no
other change.
What this site is not
It is not an official source and it issues no warnings. It re-projects and draws other people's data, and it can be stale, incomplete or wrong. For anything that matters:
- meteo.imgw.pl — IMGW's own forecasts and meteorological warnings
- hydro.imgw.pl — river gauges and hydrological warnings
- powietrze.gios.gov.pl — GIOŚ air quality, with concentrations rather than index values
- danepubliczne.imgw.pl — the open data portal everything Polish here comes from
The inversion, smog and halny fields are computed here and are ours, not IMGW's. Their definitions are given in full on the smog page and the halny page so they can be argued with.