Sources
Ops with no upstream input: features bound by the host, synthesized geometry, images, DEM and raster tiles.
10 ops: dem, features, graticule, icon, image, literal-geometry, point-grid, point-scatter, raster, tile-bounds.
Ops with no demo image below produce no visible result on their own — they feed other nodes rather than paint.
Sample a host-bound raster DEM as a ScalarField. source names a dem entry in the document’s sources block; optional when the document declares exactly one such source.
| Field | Type | Required | Description |
|---|---|---|---|
source |
string | no | Name of a dem source in the document’s sources block. Optional when there is exactly one. |
features
Section titled “features”Sample features from a host-bound feature layer. source names an mvt/pmtiles/geojson entry in the document’s sources block (optional when exactly one exists); layer selects a layer within that source (for geojson, the layer name equals the source name).

| Field | Type | Required | Description |
|---|---|---|---|
filter-expr |
— | no | A MapLibre filter expression (JSON array, e.g. [“all”, [“==”, [“get”, “class”], “primary”], [“has”, “name”]]), evaluated per feature. A feature passes only when the expression is truthy. Supports the full expression language (any/has/comparisons/geometry-type). |
layer |
string | yes | Vector tile layer name within source (e.g. earth, roads). |
max-zoom |
integer (0…24) | no | Style-level maximum zoom. Above this zoom the node emits an empty layer. |
min-zoom |
integer (0…24) | no | Style-level minimum zoom. Below this zoom the node emits an empty layer (the asset is not even loaded). |
min-zoom-field |
string | no | Per-feature property name carrying its data-side min_zoom. Features with <field> > z are dropped. |
source |
string | no | Name of an mvt, pmtiles, or geojson entry in the document’s sources. Optional — defaults to the only such source when the document declares exactly one. |
graticule
Section titled “graticule”Parallels and meridians crossing the tile, as labelled polylines.

label property (35.68°N), so text can annotate them. style| Field | Type | Required | Description |
|---|---|---|---|
axes |
both | parallels | meridians |
no | Which families to emit: parallels of latitude, meridians of longitude, or both. |
extent |
integer (1…∞) | no | Coordinate extent of the emitted geometry, matching the features it is drawn alongside. |
interval-deg |
number | $param | @node |
no | Spacing in degrees. Omit to pick one from the zoom along the 30/10/5/2/1 ladder. |
Crop one named icon from a sprite source’s atlas. sprite is an @sprite-source ref (or literal atlas key); name is the icon’s index key. Output is a Sprite at the icon’s atlas pixel size.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | yes | — |
sprite |
string | yes | Asset reference (@name) or literal path. |
Image asset source. src is an @asset ref or a literal path/name resolved by the host’s AssetLoader. Output preserves the source dimensions.
| Field | Type | Required | Description |
|---|---|---|---|
src |
string | yes | Asset reference (@name) or literal path. |
literal-geometry
Section titled “literal-geometry”Literal geometry source. Coordinates are tile-local pixels in [0, extent].
| Field | Type | Required | Description |
|---|---|---|---|
extent |
integer (1…∞) | no | — |
lines |
array of array of array of number | no | — |
points |
array of array of number | no | — |
polygons |
array of object | no | — |
point-grid
Section titled “point-grid”Regular lattice of points covering the tile.

| Field | Type | Required | Description |
|---|---|---|---|
anchor |
tile | world |
no | — |
extent |
integer (1…∞) | no | — |
offset-x |
number | $param | @node |
no | — |
offset-y |
number | $param | @node |
no | — |
spacing |
number (0…∞) | $param | @node |
yes | Grid pitch in extent units, not pixels — extent below is the coordinate space (4096 by default), so a 512 px tile fits 8 points at spacing: 512. Paint ops downstream take pixels, so the two do not match. |
spacing-x |
number (0…∞) | $param | @node |
no | — |
spacing-y |
number (0…∞) | $param | @node |
no | — |
point-scatter
Section titled “point-scatter”Random points at a given mean spacing, covering the tile. Where point-grid puts exactly one point in the middle of every cell, this one draws a count per cell — 0 to 3, averaging 1 — and places each point at a random spot inside it, so the set has the clumps and gaps of a real random scatter and no residual pitch. Reach for point-grid when the regularity is the point (a halftone screen, a tiling of panes to fracture) and for point-scatter when it is the enemy (stipple, foliage, grain, scattered symbols). Jittering a point-grid is not a substitute: one point per cell means an even density, and the lattice frequency stays plainly visible.
| Field | Type | Required | Description |
|---|---|---|---|
anchor |
tile | world |
no | world indexes the cells off global (0, 0), so adjacent tiles agree on the points they share and the scatter is seamless — the usual choice. tile indexes off the tile’s own corner, giving every tile the same point set and a visible seam. |
extent |
integer (1…∞) | no | — |
seed |
integer (0…∞) | no | Optional explicit u32 seed. Change it to get a different scatter at the same spacing, or to keep two point-scatter nodes from landing on each other. Default: a fixed constant, so the pattern is stable across tiles and runs. |
spacing |
number (0…∞) | $param | @node |
yes | Mean spacing in extent units, not pixels — one point per spacing × spacing cell on average. extent below is the coordinate space (4096 by default), so a 512 px tile averages 8 points across at spacing: 512. Paint ops downstream take pixels, so the two do not match. |
spacing-x |
number (0…∞) | $param | @node |
no | — |
spacing-y |
number (0…∞) | $param | @node |
no | — |
raster
Section titled “raster”Sample a host-bound RGBA tile pyramid (satellite imagery, pre-rendered basemaps) as a canvas-padded Raster. source names a raster entry in the document’s sources block; optional when the document declares exactly one such source.
| Field | Type | Required | Description |
|---|---|---|---|
source |
string | no | Name of a raster source in the document’s sources block. Optional when there is exactly one. |
tile-bounds
Section titled “tile-bounds”Tile-filling rectangle polygon source.

| Field | Type | Required | Description |
|---|---|---|---|
extent |
integer (1…∞) | no | — |
Map renders on this site are made fromOpenStreetMap data viaProtomaps (© OpenStreetMap contributors), elevation from Re:Earth Terrain,Mapterhorn andEGM2008 (NGA), and aerial imagery from GSI Japan(© 国土地理院). The painterly styles use CC0 brushes byDavid Revoy.