X-GIS

Reference

Glossary.

One-paragraph definitions for the jargon that pops up across the X-GIS docs. Each entry links into the full treatment elsewhere.

A

Anchor
Where a point/symbol is positioned relative to its [lon, lat] coordinate. The default center puts the centre of the symbol on the coordinate; bottom puts the bottom edge on it (typical for marker icons that should "stand on" the location).

See: Anchor utility

AST (Abstract Syntax Tree)
The structured tree representation of an .xgis source after the parser runs. Every block (source, layer, match, …) becomes a typed AST node. The lower() pass walks this tree to produce the IR.

See: Compile pipeline

B

Binding (utility binding)
Wrapping an expression in [ … ] after a utility name to make the value runtime-evaluated. fill-stone-200 is constant; fill-[interpolate(zoom, 8, white-100, 14, gray-500)] is bound — the runtime samples the expression each frame or per feature.

See: Expressions & operators

C

Camera
The viewing state — lon, lat, zoom, bearing, pitch. Live-mutable; the runtime picks up changes on the next frame. The MVP matrix used by every shader is derived from these five numbers.

See: JavaScript API

Coalesce (`??`)
Operator that yields its right-hand side only when the left-hand side is null / undefined / non-finite. The standard "explicit fallback" idiom for sparse vector-tile features: .height ?? 5.

See: Operators

Compile-on-demand
GeoJSON sources stream + tile lazily — only tiles the camera reaches get tessellated. Reduces idle memory + CPU on large datasets at the cost of a brief tile-fetch lag at first sight.

D

DSFUN (double-single function)
Numeric trick: split an f64-magnitude number into a high half + a low remainder, both stored as f32 attributes. The vertex shader subtracts the camera high half before adding the low — recovering f64-equivalent precision inside an f32 GPU pipeline. Used together with RTC.

See: RTC + DSFUN precision

E

EPSG:3857 (Web Mercator)
The projection identifier for spherical Mercator — the de-facto web tile coordinate system. Coordinates measure in metres from the equator/prime meridian, clamped at ±85.05° to keep the cylinder finite. X-GIS stores all tile vertices in this projection regardless of which projection is displayed.

See: Projections

Extrusion
3D height baked onto polygon features. fill-extrusion-height-[] runs the expression per feature at decode time and produces walls + a roof. The Mapbox fill-extrusion paint property maps onto the same utility.

See: Cookbook — 3D buildings

F

Feature
A single geometry + property bag (GeoJSON Feature). Tiles ship arrays of features; xgis layers filter them, style them, optionally extrude them. Property access via .field reads the bag.
Filter
A boolean expression on a layer's filter: block-property. Only features satisfying the predicate flow through to the renderer. Same expression grammar as paint bindings — filter: .class == "highway" && .level >= 3.

See: Filter predicate

G

GeoJSON
JSON-encoded feature collection (RFC 7946). Geometry types: Point / LineString / Polygon / Multi*. xgis sources of type: geojson accept a .geojson URL; the runtime tiles it client-side in a worker before routing through the same MVT compile pipeline PMTiles archives use.

See: geojson source

I

IR (intermediate representation)
The Scene record produced by lower() — a flat list of RenderNode entries with utility classes already resolved into structured fields (fill, stroke, opacity, extrude, …). The optimizer reads + writes IR; codegen consumes IR.

See: Compile pipeline

L

Layer
An xgis layer block — references a source, optionally narrows by sourceLayer: + filter:, and stacks utilities. One layer = one render node = one (or two, with stroke) GPU draw per visible tile.

See: Language reference

LOD (level of detail)
Mapping camera zoom to a tile-pyramid level. X-GIS picks the deepest level whose tiles still project to ≥ 320 device pixels on screen — coarser ones get magnified, finer ones get sub-tile-generated.

M

Match block
Categorical lookup syntax: match(.kind) { "park" -> green-500, "water" -> blue-500, _ -> gray-300 }. Semantically equivalent to a sequence of == checks, but the compiler emits a single switch.

See: Match block

Modifier
A prefix on a utility (:utility-…) that makes the utility conditional on a feature property being truthy. Tailwind-shaped — multiple modifiers stack, leftmost wins. Distinct from utility BINDINGS, which run an expression.

See: Utility catalog — modifiers

MVT (Mapbox Vector Tile)
The de-facto vector tile binary format (Mapbox open spec). Each tile is a Protocol-Buffer-encoded set of layers, each layer a list of features with geometry + properties. Backs both PMTiles archives and TileJSON-served XYZ tile servers.

See: pmtiles source

O

OIT (Order Independent Transparency)
Rendering technique for translucent fills where the final colour shouldn't depend on draw order. X-GIS uses weighted-blended OIT (rgba16float accum + r16float revealage) for translucent fill-extrusion buildings.

P

Pitch
Camera tilt angle in degrees — 0 = looking straight down (top-down), higher values lean toward looking forward. At pitch ≥ 30° the LOD selector switches from the flat-pitch sampled algorithm to a frustum DFS so the horizon gets coarser tiles.
PMTiles
A single-file vector-tile archive format (open spec by Brandon Liu). Reads via HTTP byte-range requests — no per-tile HTTP roundtrip. Scales to planet-sized basemaps without splitting into millions of tiny files.

See: pmtiles source

Preset
A reusable utility stack named at top level: preset road_base { | stroke-zinc-600 stroke-linecap-round }. Splat into a layer with apply-road_base. Layer-level utilities placed after the apply override the preset values.

See: Cookbook — preset reuse

Projection
Function that maps lon/lat onto a flat 2D plane for display. Seven ship: Mercator, Equirectangular, Natural Earth, Orthographic, Azimuthal Equidistant, Stereographic, Oblique Mercator. Switching is a single uniform write.

See: Projection switching

R

RTC (relative-to-center)
Coordinate trick: the renderer subtracts the camera position from each vertex on the CPU side, so vertices arrive at the GPU as small offsets in metres relative to the camera. Combined with DSFUN gives sub-cm precision at any zoom.

See: RTC + DSFUN

S

Shader
A program that runs on the GPU. X-GIS emits WGSL (the WebGPU shading language) — vertex shaders for geometry transform, fragment shaders for per-pixel colour. The compiler writes them; you don't.
Source
An .xgis source block that names a data origin (URL + type). Layers reference sources by name. One source can back many layers — the runtime decodes each tile once and slices it per source-layer.

See: Source types

Source-layer (`sourceLayer:`)
For multi-layer vector-tile sources (PMTiles / TileJSON / MVT), the named slice of features inside one tile. e.g. sourceLayer: "water" says "this xgis layer styles only the water features inside the source's tiles". Distinct from xgis "layer" — same word, different scope.
Step
Builtin gate: step(value, threshold, below, above). Returns below when value < threshold, above otherwise. Discrete sibling of interpolate (which blends linearly).

See: Function reference

Stop
A (input, value) pair inside interpolate(input, x1, y1, x2, y2, …). The runtime blends linearly between adjacent stops. Mapbox's interpolate paint expressions map onto the same model.
Sub-tile
A virtual child tile generated at runtime by clipping a parent tile's geometry. Used for over-zoom past the source's maxZoom — the renderer keeps showing finer detail by sub-dividing what data already exists.
Symbol
A reusable SVG-path glyph defined at top level: symbol arrow { path "M 0 0 L 10 5 L 0 10 z" }. Reference with shape-arrow. Stroke + fill render via SDF so glyphs stay crisp at every zoom.

T

Tile pyramid
The hierarchy of tile zoom levels — z=0 is one tile (the whole world), z=1 is 4 tiles, z=N has 4ⁿ tiles. Each tile at zoom N is one quadrant of its z=N-1 parent. The renderer picks tiles from across the pyramid based on screen-space size.
TileJSON
A JSON manifest describing a tile service — declares the tile URL template, zoom range, attribution, and (for vector tiles) the schema of available source layers. X-GIS's type: tilejson source kind reads this manifest then drives the same backend as PMTiles.

See: tilejson source

U

Utility (utility class)
A Tailwind-shaped style atom — fill-stone-200, stroke-1.5, opacity-80, shape-circle. Stacked on a layer's |-prefixed line; later utilities win on conflict. The full catalogue is auto-generated at build time.

See: Utility catalog

W

Web Mercator
See EPSG:3857.
WebGPU
The modern browser GPU API (W3C spec, Chrome 113+, Safari 17+, Firefox 130+). Replaces WebGL with explicit pipelines, compute shaders, and a closer-to-metal model. X-GIS targets WebGPU; falls back to Canvas 2D when no adapter is available.
WGSL (WebGPU shading language)
The GPU shader language WebGPU mandates. Modern, type-safe, derived from Rust-ish + GLSL ancestry. X-GIS's codegen emits WGSL; you don't hand-write it unless you're extending the compute pipeline.
Worker (web worker)
Off-main-thread JavaScript. X-GIS runs MVT decoding + GeoJSON tessellation in workers so a slow tile decode never stalls the render loop. Each source kind has its own worker pool.

Z

Zoom
Camera magnification level. Each integer step doubles the resolution — z=0 fits the whole world in 256 px, z=1 in 512 px, z=14 in 4 194 304 px. Continuous between integers (z=14.5 is a smooth interpolation). Available as a runtime accessor inside interpolate(zoom, …).

Was this page helpful?

Tell us what's missing