A map is a document.Documents have versions.
The studio composes materialized datasets into layers you style, filter and cross-filter. What you save is not a screenshot of a view — it is a versioned asset with an immutable published body, which is what makes a shared map reproducible a year later.


The working surface, control by control
Layers
one per materialized datasetAdd a layer for any dataset the platform has profiled and can place. Fill, stroke, stroke width, point radius, opacity, ordering and visibility are per layer. Only profiled datasets are offered, so a layer cannot be created against coordinates whose projection is unknown.
Styling from the product's tokens
no literal colour in the clientLayer paint resolves through the design system's tokens rather than through hard-coded values — the client is checked for literal colour and fails its build if one appears. Switching the brand palette therefore repaints the data as well as the chrome.
Filters
categorical · range · temporalFilters attach to a layer and compose. A filter a widget authored is tracked back to that widget, so deleting the widget removes its filters atomically instead of leaving the map filtered by a control that is no longer there.
Widgets
category · histogram · formula · timeseriesA widget reads a column and filters the map. Category widgets list values with their counts; histograms bin a numeric column; formula widgets aggregate with count, sum, avg, min or max; time-series widgets brush a period.
Cross-filtering
every widget filters every layerSelecting in one widget filters the map and recomputes the others. That is the difference between a legend and an instrument: you can ask a question of the data by clicking, and the rest of the view answers.
Time replay
bound to a profiled temporal columnWhere the profiler identified a temporal column, the studio offers a timeline to scrub or play. It appears only when such a column exists, so the control never implies a time dimension the data does not carry.
Basemaps
Plan IGN and othersThe basemap is part of the saved document, so a published map opens on the backdrop it was authored against rather than on whatever the default happens to be that month.
Analysis from the map
isochrone · route · geocodeStart an analysis from the view you are looking at. The result is registered as a dataset, profiled, and available as a layer — so the next question starts where the last answer landed.
Extrude a layer by a column it already carries
A polygon layer with a numeric attribute can be extruded by it. The obvious case is building height: BD TOPO ships a measured height on every footprint, so setting 'Extrude by' to that column turns a plan into a massing model — and because the value is the building's own, the volume is a reading rather than an illustration.


- Any numeric column can drive elevation; the exaggeration is explicit and defaults to 1
- Pitch and bearing are part of the saved document, so a published 3D view opens as it was authored
- The extruded layer filters and cross-filters like any other — a histogram on height narrows the model
- Offered only on polygon layers, because there is nothing to extrude on a point or a line
Exaggeration 1 is the default on purpose. The point of extruding by a measured height is that the volume is the building's own; scaling it makes a nicer picture of something that is no longer true.
Published, shared, embedded — and still inside the tenancy model
Publishing a version freezes the document and hashes its body. A share token then makes that version readable by someone with no account, and the embed puts it in another page. The token is a principal with a scope, not a hole cut in the policy: it can reach exactly what it was granted and nothing adjacent.
- Immutable published versions, hashed, so a shared link resolves to the exact document that was shared
- Share tokens for readers without accounts
- An embed mode for putting a live map in another page, with an optional conversational panel
Only datasets the platform has measured
A layer can only be built on a dataset that has been materialized and profiled with an inferred CRS. That is why the catalogue distinguishes Registered from Profiled so insistently: the distinction is what the studio enforces.


Compose your own layers
Bring two datasets you have never managed to look at together, and we will put them on one map.