Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

isowall

Topographic isoline wallpapers generated from real-world elevation data.

Matterhorn, midnight palette Matterhorn — isowall.py matterhorn

Elevation comes from AWS Terrain Tiles (free, no API key). Contours are extracted with marching squares and rendered as antialiased vector lines colored by elevation.

Dolomites, blueprint Big Sur, abyss
Dolomites — -p blueprint Big Sur — -p abyss (with bathymetry)

Setup

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Usage

# a preset location
.venv/bin/python isowall.py matterhorn

# any place name (geocoded via OpenStreetMap — check the printed match)
.venv/bin/python isowall.py "lake como" --palette blueprint

# exact coordinates
.venv/bin/python isowall.py 46.55,7.98 --zoom 11 --palette ember

# see what's available
.venv/bin/python isowall.py --list-presets
.venv/bin/python isowall.py --list-palettes

Output defaults to a 4K PNG (3840x2160) in the current directory.

Web preview

.venv/bin/python server.py          # then open http://127.0.0.1:8000

An interactive preview UI: the server fetches elevation data and returns contour polylines, the browser renders them as SVG (fills the window like a real wallpaper). Palette changes are instant (recoloring happens client-side); sliders for zoom / levels / smooth / detail / aspect refetch automatically. The Map button opens an OpenStreetMap picker (Leaflet) — click to pick a location; the map zoom becomes the wallpaper zoom. Download PNG renders a full-resolution file via the same code path as the CLI (4500x3000 for 3:2, otherwise 3840px on the long edge). Press H to hide the panel.

Options

Flag Default Meaning
-p, --palette midnight color palette
-s, --size 3840x2160 output resolution WxH
-z, --zoom 11 map zoom 8–14, higher = closer in
-n, --levels 24 approximate number of contour levels
-i, --interval auto contour interval in meters (overrides --levels)
--smooth 1.6 gaussian smoothing of the terrain (0 = off)
--detail 1100 elevation grid width in samples (more = crisper detail, slower)
--line-scale 1.0 line width multiplier
-o, --output auto output path

Palettes

Dark: midnight, ember, forest, blueprint, mono, synthwave, oxide, aurora, magma, nebula, abyss, crimson, sakura. Pure black (#000000): matrix, onyx, noir, laser. Light: sand, paper, arctic. Each is a background color plus a low→high elevation gradient for the lines. Every 5th contour is drawn heavier (index contours), like a real topo map.

Add your own in the PALETTES dict at the top of isowall.py.

Structure

isowall.py       CLI renderer — tiles, contours, drawing (self-contained)
server.py        web preview backend
static/          web preview frontend (vanilla JS + SVG)
batch.py         render every preset × palette into wallpapers/
examples/        images used in this README

Notes

  • Downloaded tiles are cached in .cache/tiles/, so re-rendering the same area with a different palette is fast.
  • Coastal areas include bathymetry (underwater contours) — often looks great.
  • If a location renders flat (open ocean, plains), try a different zoom.

About

Topographic isoline wallpapers generated from real-world elevation data

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages