Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

claude-skills-contious-geotiff-visualizations

A Claude Skill for rendering single-band, continuous-value georeferenced rasters (GeoTIFF) into publication-style map figures

Repositori di GitHub

Note: You just need to download click here continuous-raster-visualization.skill file.

A Claude Skill for rendering single-band, continuous-value georeferenced rasters (GeoTIFF) into publication-style map figures, built for remote sensing workflows such as LST, NDVI, IRECI, TRVI, and AGC outputs.

Python Matplotlib Rasterio NumPy Claude Skill Powered by Claude Engine: matplotlib%20%2B%20rasterio Remote Sensing GeoTIFF Bahasa License: MIT

Demo

Land Surface Temperature map of Kalimantan rendered by this skill

Percentile stretch, lst_classic palette, left-aligned title, English labels — all current defaults.

Skill preview

An interactive, self-contained HTML preview of this skill (badges, palette gallery, feature list, tech stack, and the demo above) is bundled at assets/preview.html — download it and open it in any browser, no server needed.

Language

The first time this skill runs in a conversation, Claude asks which language to use:

The choice only affects default label wording (you can always override any label with --xlabel/--ylabel/--colorbar-label) and the language Claude uses when talking about the visualization for the rest of the session. If you already write to Claude in Indonesian, it infers the choice instead of asking. Set it explicitly with --language en or --language id (or language="id" in Python).

What it does

Given a single-band GeoTIFF and a set of options, the skill produces one map figure (PNG/PDF/SVG) with control over:

An in-chat interactive settings picker (palette swatches, stretch, colorbar, gridlines, font, etc.) is also available — Claude can render it as a widget so you can pick options visually and apply them with one click instead of typing flags.

Settings reference

OptionChoicesDefaultNotes
stretchminmax, percentile, manualpercentile (2–98%)manual requires vmin/vmax
pmin/pmaxany 0–1002/98only used when stretch=percentile
cmapmatplotlib colormap, or named palette (see gallery below)viridispick a perceptually appropriate one for the variable
colorbar_orientvertical, horizontalvertical
colorbar_labelfree textPixel valueset to the actual unit, e.g. LST (°C), AGC (ton/ha), NDVI
colorbar_label_positionside, topsideside = rotated label along the bar; top = unrotated label above the bar
colorbar_nticksinteger ≥2auto (~6)controls how many ticks appear between the endpoints; endpoints always show the true stretch min/max
colorbar_decimalsinteger ≥0auto (0/1/2 by span)decimal places on tick labels — set explicitly (e.g. 0) if the automatic rule looks inconsistent
coord_formatDMS, DD, DDDDMS = D°M’S″ + hemisphere; DD = decimal degrees + hemisphere; D = plain decimal, no symbol. Only affects geographic CRS
gridlineson/offondashed, light gray
grid_stepnumber (degrees/units)automanual spacing between gridlines/ticks
fontserif, sans-serifsans-serifapplies to the whole figure
backgroundany matplotlib colorwhite
title / subtitlefree textnonetitle is bold, subtitle is plain and smaller
title_alignleft, centerleftaligned to the map’s left edge when left
title_fontsize / subtitle_fontsizenumber15 / 10.5
title_gapnumber (axes-fraction)0.045vertical spacing between title and subtitle
xlabel / ylabelfree textLongitude/Latitude (geographic) or Easting/Northing (projected)
languageen, idensets default axis/colorbar label wording
figsizewidth height10 8inches
dpiinteger200

Available color palettes

Named domain palettes (built into the script) and commonly used matplotlib colormaps — actual gradients rendered below, not just names:

Available color palette gradients: lst_classic, water_index, ndvi_custom, viridis, magma, inferno, YlGn, RdYlGn, Spectral, RdYlBu_r, turbo, Greens
PaletteTypeBest for
lst_classicnamedLand surface temperature — classic GEE-style thermal ramp
water_indexnamedWater/moisture indices — NDWI, MNDWI, AWEI
ndvi_customnamedNDVI specifically — diverging ramp anchored to fixed values (-1.0 to 0.9)
viridismatplotlibGeneral-purpose sequential, perceptually uniform (script default)
magmamatplotlibSequential, dark-to-light — temperature, intensity
infernomatplotlibSequential, high contrast — temperature
YlGnmatplotlibVegetation indices other than NDVI (IRECI, TRVI)
RdYlGnmatplotlibVegetation indices, diverging red → green
SpectralmatplotlibGeneral diverging data
RdYlBu_rmatplotlibAlternative thermal ramp
turbomatplotlibAlternative thermal ramp, high contrast
GreensmatplotlibBiomass/carbon (AGC), sequential

Any other built-in matplotlib colormap name also works — pass it directly to --cmap.

Files

continuous-raster-visualization/
  SKILL.md                 skill definition and usage guide
  scripts/raster_viz.py    the rendering engine (CLI + importable function)
  references/options.md    full parameter reference
  README.md                this file
  LICENSE                  MIT license

Quick start

python3 scripts/raster_viz.py INPUT.tif OUTPUT.png \
    --stretch percentile --pmin 2 --pmax 98 \
    --cmap lst_classic \
    --colorbar-orient vertical --colorbar-label "LST (deg C)" \
    --colorbar-nticks 5 --colorbar-decimals 0 \
    --coord-format DD --gridlines \
    --font sans-serif \
    --title "Land Surface Temperature" --subtitle "Kalimantan, 2025"

Or from Python:

from scripts.raster_viz import plot_raster

plot_raster(
    "INPUT.tif", "OUTPUT.png",
    stretch="percentile", pmin=2, pmax=98,
    cmap="lst_classic",
    colorbar_orient="vertical", colorbar_label="LST (deg C)",
    colorbar_nticks=5, colorbar_decimals=0,
    coord_format="DD", gridlines=True,
    font="sans-serif",
    title="Land Surface Temperature", subtitle="Kalimantan, 2025",
)

See SKILL.md for the full workflow Claude follows when using this skill, and references/options.md for every parameter in detail.

Engine

License

MIT. See LICENSE.