Some visualizations animate, pulse, and flash. If you're sensitive to motion or flashing, turn on Reduce motion in your system settings.

poopdeck.gl
Introduction

Choosing STT and a deployment

Use this page for the two product-level choices this repository owns: whether STT fits the data at all, and whether to publish a packed archive or serve tiles live. Picking a renderer, a layer and a playback API is the subject of choosing a renderer.

Should I use STT?#

STT is a good fit when all or most of these are true:

  • the source is vector data with timestamps or time intervals;
  • users pan, zoom, scrub, or animate through more data than a browser should load at once;
  • immutable snapshots and CDN caching fit the publication model;
  • columnar properties or GeoArrow interoperability matter; and
  • the same archive should support several web-rendering stacks.

STT is usually not the right fit when:

  • a small GeoJSON or Arrow file already loads and filters comfortably;
  • the main data is imagery, weather grids, or another raster/datacube workload;
  • records must be edited individually in place;
  • every query is an unpredictable server-side aggregation; or
  • the application requires a renderer feature that the capability matrix does not provide.

STT covers vector trajectories, events, paths, polygons, trips, flows, and time-varying features. For raster time series, consider GeoZarr or COG.

Static archive or live service?#

ChooseWhenOperational trade-off
Packed archive from stt-buildData is published in snapshots and can live in R2, S3, GCS, or another static hostSimplest and most cacheable; publish immutable objects before the manifest
Dynamic endpoint from stt-serveData must come directly from PostGIS or DuckDB, or archive generation is not the right lifecycleRequires an application service and database capacity

Both expose the same STT data model. See the deployment guide and stt-serve protocol.

Which renderer?#

Renderer, layer and playback choices live with the renderers themselves, in choosing a renderer. Renderer choice does not require rebuilding the dataset unless the visualization needs an optional variant — a summary tier, or a specialized payload such as --surfel-baked covariance columns.