Conditions stack: data for the angler's weather screen
Part of the «Waze для рыбалки» wiki · Status: done — verified by live fetches 2026-07-06
Related: Bite forecasting · Hub & integrations · Phase plan · Conditions mockups
The gist
The one-screen conditions app is buildable almost entirely on free CC0 Latvian state open data plus a few free EU sources. Every parameter we need — wind, gusts, rain, thunderstorm probability, lightning, warnings, waves, current, water level, water temperature, sea level — was pulled live from a real endpoint on 2026-07-06. Three things need a footnote: the one hard gap is river discharge (not on the open-data portal — but an undocumented state endpoint quietly serves it), the legal gray zone is the LVĢMC radar (works, unlicensed), and live lightning has a commercial-vs-non-commercial fork. Everything else is public-domain CSV you can ingest and cache.
Parameter by parameter
Access is CC0-1.0 (public domain, commercial use OK, no attribution legally required) unless noted. All rows below are LVĢMC data on data.gov.lv unless the source says otherwise.
| Parameter | Source (dataset / endpoint) | Access & license | Update | Verified |
|---|---|---|---|---|
| Wind & gusts (forecast) | Telpiskās meteoroloģiskās prognozes — ws.csv (wind), wgust.csv (gusts) |
Free CSV, CC0 | ≥4×/day, hourly to +60 h then 3-h, 9 days | ✅ fetch (10.3 m/s at a real grid point) |
| Wind & gusts (observations) | Hidrometeoroloģiskie novērojumi — meteo_operativie_dati.csv (params HWNDS, HWSMX) |
Free CSV, CC0 | Hourly, 48-h file + 365-day archive | ✅ fetch (param + station structure) |
| Rain (forecast) | Same gridded set — tp.csv (1-h precipitation) |
Free CSV, CC0 | ≥4×/day, 9 days | ✅ fetch |
| Thunderstorm probability | Same gridded set — tstm.csv |
Free CSV, CC0 | ≥4×/day, 9 days | ✅ fetch |
| Lightning (observations) | Telpiskie hidrometeoroloģiskie novērojumi — zibens_rezgis_operativie_dati.csv |
Free CSV, CC0 | Hourly, rolling last 24 h | ✅ fetch (74k rows, 5×5 km grid, cols LAIKS,LON,LAT,CC,CG,TOTAL) |
| Warnings | 3 channels — Hidrometeoroloģiskie brīdinājumi CSV (polygons); LVĢMC CAP 1.2 XML at bridinajumi.meteo.lv; Meteoalarm Atom/CAP |
CSV & CAP CC0; Meteoalarm "equivalent to CC BY 4.0" + redistribution T&C | As issued | ✅ fetch (live Yellow thunderstorm + wind warnings) |
| Radar / nowcast | LVĢMC RIX Doppler SRI PNGs via videscentrs.lvgmc.lv/kartes-images/…/RIX/RIX_250.sri/ |
Free, no auth, undocumented, no license (gray zone) | 5-min frames, ~10 h (123) history, past only | ✅ fetch (real 500×500 PNG) |
| Waves | Telpiskās jūras prognozes — swh.csv |
Free CSV, CC0 (~182 MB file, extract server-side) | 2×/day, hourly, 9 days | ✅ fetch (Hs at 5 coastal points, 2 inside the gulf) |
| Sea current | Same marine set — spc.csv (speed), dirc.csv (direction) |
Free CSV, CC0 | 2×/day, 9 days | ✅ fetch (0–0.2 m/s at gulf points) |
| Water level (obs) | Hidrometeoroloģiskie novērojumi — param LIMEN (cm) |
Free CSV, CC0 | Hourly, 73 stations; 48-h + 365-day archive | ✅ fetch (73 stations, latest = same day) |
| Water level (forecast) | Hidroloģiskās prognozes — UDLIM, ensemble |
Free CSV, CC0 | Daily, 14 days ahead | ✅ fetch |
| Water temperature | Same obs set — WTEMD (inland), SEDUT (coastal sea); forecast UDTEMP | Free CSV, CC0 | Hourly (obs) / daily 14-day (forecast) | ✅ fetch (22.4 °C inland, 19–21 °C sea) |
| Sea level | Obs param SEHL (cm) at coastal stations; forecast sl.csv in marine set |
Free CSV, CC0 | Hourly (obs) / 2×/day (forecast) | ✅ fetch (storm-surge signal for the gulf) |
| River discharge (m³/s) | Not on data.gov.lv — hydro params are level + temp only. Undocumented PRIS endpoint videscentrs.lvgmc.lv/data/pris_observations |
Free JSON, no auth, undocumented, gray zone (underlying data CC0) | Daily obs + ~6-day ensemble forecast | ✅ fetch (Gauja@Sigulda 21.6→60.4 m³/s; 73 stations) |
What maps to Konstantins' three ritual tools
Konstantins reaches for three apps before a trip. Each has a native Latvian data answer.
- Windy (his wind/wave/current benchmark) → our gridded forecast CSVs
ws/wgust/tp/tstm, plus Open-Meteo and MET Norway point forecasts, plus the marine dataset for waves and current. Windy itself stays a UX benchmark and a maybe-embed: its widget has no blanket license (case-by-case, email support@windy.com) and its Point Forecast API is €990/yr with a deliberately corrupted free tier. - Storm Radar (his storm/lightning app) → the LVĢMC RIX radar PNGs + the lightning grid CSV (or EUMETSAT MTG-LI for commercial-clean strikes) + CAP warnings from Meteoalarm. Note Storm Radar's marquee lightning layer is US-only — a Latvian stack beats it locally on everything except multi-hour predictive "future radar."
- The LVĢMC website itself → the same agency's open data, machine-readable: CC0 CSVs on data.gov.lv for the licensed core, plus the undocumented
videscentrs.lvgmc.lv/data/*JSON (point forecasts, live station data, PRIS discharge) for what hasn't been published to the portal yet.
Model & EU sources (the free backbone for a commercial PWA)
CC0 covers most needs, but a monetized PWA that wants a legally clean forecast primary should lean on MET Norway Locationforecast 2.0: CC BY 4.0, commercial use allowed free, and the only free per-hour probability_of_thunder we found. It needs a backend proxy and an identifying User-Agent. Open-Meteo (forecast + marine) is richer — CAPE, model choice, waves in one call — but its free tier is non-commercial only; commercial use needs the paid plan (~€29/mo, unverified exact price). Copernicus Marine BAL MFC gives 2-km Baltic waves + currents, free with registration, commercial-safe — the quality ceiling if the CC0 5-point marine data proves too coarse.
Gaps & risks
- Discharge isn't open data. The data.gov.lv hydro parameters are level + temperature only (LIMEN, SEHL, SEDUT, WTEMD) — no
caurplūdums; that route is paid/on-request. The PRIS endpoint fills it with per-station Q and a ~6-day ensemble forecast for 73 stations, but it is undocumented with no ToS. Design a level-trend / flow-percentile proxy as the resilient fallback: map today's Q (or level trend) to each station's own flow distribution → classes like slack / normal / strong / flood. Don't compute fake-precise m/s from unpublished cross-sections. Confirm reuse with LVĢMC in writing before production. - Radar is undocumented and unlicensed. The 5-min PNGs work but carry no license — ask LVĢMC (info@lvgmc.lv) before production, or fall back to FMI/OPERA for a Baltic composite. Georef correction: place the PNG with
image_bounding_box19.83,54.59 → 28.07,59.09 (≈500×500 km centered on RIX), not the layer'smap_bounding_box16.5,54.8–28.5,58.9 — that misplaces echoes by up to ~230 km. Filenames are Europe/Riga local time, published ~20–25 min after nominal; all frames are past observations, so there is no official nowcast. - Live lightning has a licensing fork. Blitzortung covers the Baltics densely and its unofficial WebSocket answers a live handshake, but its data is non-commercial, station-operators-only — a legal blocker even for a free company PWA. LightningMaps.org and Saratoga are just Blitzortung front-ends with the same terms (and a "for entertainment only" label). The clean commercial path is EUMETSAT MTG Lightning Imager L2: literal CC BY 4.0, free via the Data Store, ~4.5 km / minutes latency, Latvia fully inside the sensed field — the trade-off vs Blitzortung is km-scale and minutes instead of seconds/sub-km.
- Meteoalarm needs attribution. Its feed is licensed "equivalent to CC BY 4.0" with extra redistribution T&C — read the T&C before white-labeling alerts, and attribute LVĢMC. It carries dedicated marine zones:
LV804Gulf of Riga West,LV802East,LV801South — directly mappable to fishing spots. - Marine data is 5 points, not a grid. In the CC0
Telpiskās jūras prognozesset, waves, current, sea level and SST are all populated at the same 5 coastal points (2 inside the gulf); the full ~20,507-point grid exists in the file but is NA everywhere else. No in-gulf wave buoy exists anywhere for ground-truth. Lakes have zero wave/current model coverage — estimate lake chop from wind speed + fetch geometry. - Everything is whole-file CSV. No query/filter API on the open-data portal; some marine files reach ~182 MB (mostly NA padding). Plan a small fetch-parse-cache backend, not client-side fetches. Point extraction can go through the CKAN
datastore_search_sqlAPI to avoid the full download. Some manual hydro stations lag hours to ~2 days — run per-station freshness checks.
Verdict for Phase 0
The go/no-go verdict screen and the six push types on the mockups page all have a data source today:
| Push (character) | Powered by |
|---|---|
| ⚡ Alarm — "thunderstorm 25 km out, heading your way" | RIX radar PNGs + lightning grid + Meteoalarm/CAP warnings |
| 🌬 Window closed — "gusts on the gulf already 13 m/s" | gust observations (HWSMX) + wgust.csv forecast |
| ✅ Window tomorrow — go verdict ahead | gridded ws/wgust/tp/tstm forecast (+ met.no) |
| 📈 Water — level rising / temp shift | LIMEN level + PRIS discharge trend + WTEMD/SEDUT temp |
| 🌧 Wait it out — rain passing | radar frames + tp.csv / point precip forecast |
| 🧊 Winter — ice teaser | Phase 1 (ice); water temp + level feed the pre-ice signal |
The go/no-go verdict — a single "can I fish" call — is built from wind + gusts + waves + thunderstorm probability + warnings, with water level/temp and discharge classes as the secondary layer. Every one of those is a live, mostly-CC0 feed verified on 2026-07-06. Phase 0 can ship the conditions screen on public-domain state data, with met.no as the legally-free forecast backbone and three items flagged for a legal check: radar license, PRIS reuse, live-lightning source.
Limitations
- Verified on 2026-07-06 by live fetches; endpoints, file sizes and CSV row counts change (marine files regenerate twice daily, discharge history is only a ~1.5-year rolling window).
- Undocumented endpoints (radar, PRIS,
videscentrs.lvgmc.lv/data/*) can change or disappear without notice — treat them as convenient, not load-bearing, until licensed in writing. - Open-Meteo's exact commercial price and whether a free ad-free PWA counts as "commercial" were not resolved — default to met.no until clarified.
- Copernicus and MTG-LI were confirmed at the access/metadata level; the actual NetCDF/granule download was not exercised end-to-end.
- Latvian marine EMMA zone geocodes beyond LV801/802/804 were not fully enumerated; do that before mapping every alert to a spot.