From 56f779990dd5c5752d32b40083a78b084a35d2ed Mon Sep 17 00:00:00 2001 From: Schuwi Date: Sat, 7 Mar 2026 23:38:36 +0100 Subject: [PATCH] Update README to reflect current project state --- README.md | 156 ++++++++++++++++++++++++++++++----------------- docs/example.png | Bin 0 -> 66598 bytes 2 files changed, 100 insertions(+), 56 deletions(-) create mode 100644 docs/example.png diff --git a/README.md b/README.md index 218b00f..767af9f 100644 --- a/README.md +++ b/README.md @@ -1,97 +1,141 @@ # cloud_cover -Downloads total cloud cover (CLCT) predictions from the [DWD open-data -server](https://opendata.dwd.de/weather/nwp/icon-d2/grib/) and renders -one PNG map per forecast hour, centred on the Brandenburg / Berlin area. +Cloud cover forecast maps for astrophotography planning, powered by DWD open data. -This is a Rust port of `../cloud_cover_prediction.py`. The output format -differs: instead of using PyNGL's contour renderer the Rust version does a -direct point-by-point orthographic projection of the ICON-D2 grid onto a -bitmap, which avoids every system-library dependency (no CDO, no PyNIO, no -PyNGL, no libssl, no libbz2 — the binary is fully self-contained). +![Example output — prediction for the Berlin/Brandenburg area](docs/example.png) + +## What is this? + +The German Weather Service (DWD) publishes free, high-resolution numerical weather +predictions through its [open-data server](https://opendata.dwd.de/). The +**ICON-D2** model covers Germany and surrounding areas with ~2 km grid spacing and +produces forecasts up to 48 hours ahead, updated every 3 hours. + +This tool downloads the **total cloud cover (CLCT)** field from ICON-D2 and renders +it as a series of map images — one per forecast hour — overlaid on an OpenStreetMap +base layer. The result is a quick visual answer to "will the sky be clear tonight?" + +## Quick start + +```sh +cargo build --release +./target/release/cloud_cover "2026-03-07T09:00:00Z" 24 +``` + +Output appears in `cache/2026-03-07_09UTC/` — one PNG per forecast hour plus an +animated GIF. ## Usage ``` -cloud_cover +cloud_cover [OPTIONS] ``` | Argument | Description | |---|---| -| `ISO_TIMESTAMP` | Model run time in ISO 8601, e.g. `2026-03-03T18:00:00Z` | +| `ISO_TIMESTAMP` | Model run time in ISO 8601, e.g. `2026-03-07T09:00:00Z` | | `HOURS` | Number of forecast steps to render (0–48) | -The timestamp must correspond to an ICON-D2 model run, which is issued -every 3 hours starting at 00 UTC (00, 03, 06, 09, 12, 15, 18, 21). +The timestamp must match an ICON-D2 model run: every 3 hours starting at 00 UTC +(00, 03, 06, 09, 12, 15, 18, 21). -### Example +### Options + +| Flag | Default | Description | +|---|---|---| +| `--center-lat` | 52.56 | Map centre latitude (°N) | +| `--center-lon` | 13.08 | Map centre longitude (°E) | +| `--zoom` | 10 | OSM tile zoom level (higher = more detail, smaller area) | +| `--no-basemap` | — | Skip OSM tiles; use a plain green background | + +### Examples ```sh -cargo run --release -- "2026-03-03T18:00:00Z" 12 +# Next 12 hours from the 18 UTC run, default viewport (Falkensee / Berlin) +./target/release/cloud_cover "2026-03-06T18:00:00Z" 12 + +# Wider area centred on central Germany at zoom 8 +./target/release/cloud_cover "2026-03-07T06:00:00Z" 24 \ + --center-lat 51.0 --center-lon 10.5 --zoom 8 + +# Quick run without map tiles +./target/release/cloud_cover "2026-03-07T09:00:00Z" 6 --no-basemap ``` -Output PNGs are written to `cache/_UTC/clct_000001.png` … -`clct_NNNNNN.png`. Downloaded GRIB2 files are cached in the same directory -so that re-running the same timestamp skips the network requests. +## Output + +Each run produces files in `cache/_UTC/`: + +- **`clct_000001.png` … `clct_NNNNNN.png`** — one 900 × 600 px map per forecast + hour, showing cloud cover blended over the OSM base layer with a colour legend +- **`clct_animation.gif`** — animated loop of all frames (generated when there are + multiple steps) +- **`clat.grib2`, `clon.grib2`, `clct_NNN.grib2`** — cached raw forecast data; + re-running the same timestamp skips the download + +Image titles show the forecast time converted to CET/CEST (Europe/Berlin). The first +frame is labelled "Conditions at …", subsequent frames "Prediction at … (+NNh)". + +Cloud cover is rendered as a continuous blend from the base map (clear sky) toward a +light blue-white tone (overcast), matching the style familiar from weather apps. ## How it works -1. **Download** — `reqwest` fetches the bzip2-compressed GRIB2 files from - the DWD server. Two coordinate files (`clat`, `clon`) give the latitude - and longitude of every point on the ICON-D2 icosahedral grid (~542 000 - points for Germany). One `clct` file per forecast step contains the - total cloud cover percentage at each point. +1. **Download** — Fetches bzip2-compressed GRIB2 files from the DWD open-data + server: two coordinate grids (`clat`, `clon`) describing the ~542,000 points of + the ICON-D2 icosahedral grid over Germany, plus one `clct` file per forecast step. + Downloads run in parallel and are cached to disk. -2. **Decompress** — `bzip2` decompresses the files in-memory. +2. **Parse** — A built-in minimal GRIB2 decoder extracts the data arrays. Only + simple packing (data representation template 0) is implemented, which is the + format DWD uses for these fields. Grid points flagged absent by the GRIB2 bitmap + are set to NaN. -3. **Parse** — A minimal built-in GRIB2 decoder extracts the data values. - Only simple packing (data representation template 0) is supported, which - is what DWD uses. Grid points that are flagged as absent by the section-6 - bitmap are set to `NaN` and skipped during rendering. +3. **Interpolate** — The irregular grid points are projected into pixel space via an + orthographic projection, then connected into a Delaunay triangulation. Each output + pixel is interpolated via barycentric coordinates within its enclosing triangle, + followed by a NaN-aware Gaussian blur to smooth triangle edges. -4. **Project & render** — Each grid point is projected onto the image plane - using an orthographic projection centred on Falkensee (52.56 °N, - 13.08 °E). Points are painted as 2 × 2 pixel squares, colour-coded by - cloud cover percentage. City markers and labels are drawn on top, and a - colour-scale legend is shown on the right. `plotters` writes the final - PNG. +4. **Render** — The base layer comes from Carto Voyager OSM tiles (fetched and + cached separately for the basemap and for labels). Cloud cover is blended on top, + then map labels are composited above the clouds. City markers, a title bar, and a + colour legend complete the frame. -## Cloud cover colour scale - -| Cloud cover | Colour | -|---|---| -| < 1 % | Land background (clear) | -| 1–2 % | Very light blue | -| 2–5 % | Light blue | -| 5–10 % | Medium blue | -| 10–20 % | Blue | -| 20–50 % | Dark blue | -| 50–100 % | Very dark blue | - -## Marked locations - -Falkensee · Pausin · Nauen · Hennigsdorf · Ketzin/Brückenkopf · Potsdam · -Berlin (Mitte) +5. **Animate** — All frames are colour-quantised to 256-colour palettes (in parallel) + and assembled into a looping GIF. ## Dependencies -All dependencies are pure Rust or vendored C code compiled into the binary. -No system shared libraries are required at runtime beyond libc. +All dependencies are pure Rust or vendored C compiled into the binary — no system +shared libraries are required at runtime beyond libc. | Crate | Role | |---|---| | `reqwest` (rustls-tls) | HTTP client with pure-Rust TLS | -| `bzip2` | bzip2 decompression (vendors libbzip2) | -| `plotters` + `plotters-bitmap` | PNG rendering with built-in bitmap font | +| `bzip2` | Bzip2 decompression (vendors libbzip2) | +| `plotters` + `plotters-bitmap` | PNG rendering | +| `font8x8` | Built-in 8×8 bitmap font for map labels | | `clap` | CLI argument parsing | -| `chrono` | Date/time handling | +| `chrono` + `chrono-tz` | Date/time handling and timezone conversion | | `anyhow` | Error propagation | +| `spade` | Delaunay triangulation for grid interpolation | +| `rayon` | Parallel downloads, rendering, and GIF quantisation | +| `image` | PNG decoding (loading frames for GIF assembly) | +| `gif` | GIF encoding | ## Building ```sh -cd cloud_cover_rs cargo build --release ``` -The compiled binary ends up at `target/release/cloud_cover`. +The binary is at `target/release/cloud_cover`. + +## Future ideas + +- Configurable display timezone (currently hardcoded to Europe/Berlin) +- Configurable city markers / observation sites +- Configurable data sources +- Vector map tile support for increased rendering resolution +- Separation of cache and output files & automatic cache management +- Automatic newest prediction fetching diff --git a/docs/example.png b/docs/example.png new file mode 100644 index 0000000000000000000000000000000000000000..23032841c62b1dc10b22d22545d9fc669e7cc31c GIT binary patch literal 66598 zcmeFZcUY5W|2G_P04|1BR1{FbQAI!$R7RY2L)Es_2t=fc%!nvq2P=x)h&UO7q}Bpe zgh&yP8QChUg6t6i2|^?>#1JyC=X)lg_P+1upZED4$NRj;@%FF^8P|1=@BDl|=N0+A z?e5t#7R|unaI^RB*?Aa;n-Y%0DgUgh46o#*(XZl^ri|>}x$OskrIF`Tels{4TgAo5 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