Skip to main content
Bijection stores points and shapes as ordinary validated values, answers spatial questions with exact reads, commits geofence transitions with the observations that caused them, and draws your data on the workspace map under your read rules. Bulk and specialist geospatial computation runs in your own infrastructure and comes back through customer compute.

Geometry values

Declare a geometry like any other field:
bijection/schema.ts
Values are GeoJSON in WGS84, longitude first. Every write, function argument and synced record is checked: an empty, unclosed or self-intersecting shape, or one in another coordinate system, is refused rather than repaired. The standard size holds up to 512 positions; size: "large" holds up to 40,960. geoShape({ profile: "wgs84-3d-hae-linear-sphere-v1" }) adds heights above the WGS84 ellipsoid.

What runs where

Your compute reads geometry from a dataset as ISO WKB in OGC:CRS84. Distances on the map are great-circle distances; edges are straight lines in longitude and latitude, as GeoJSON defines them.

Bring computed shapes onto the map

A job writes its result to an external dataset and submits it. A collection sync then keeps one of your collections equal to the latest accepted version: each row’s geometry is admitted again and given its spatial index cell, so the map can filter it by region.
bijection/areas.ts
Each accepted version replaces the previous one in a single commit; no reader sees a mix of two versions.

Tiles from your compute

Layers too large to draw from records, and imagery, are tiled in your compute as PMTiles archives: vector tiles with one layer named features (tippecanoe -l features), or PNG, JPEG or WebP images; uncompressed or gzip. Your app declares the archive with defineMapArchives from @bijection/datasets/map-archive and adds its upload and record functions to the producer route. Your job records each archive as the archive’s next version with the same producer grant, naming the dataset versions it was built from, and the workspace map draws it with the dataset’s read rule checked on every tile request. A tile URL from your own server can also be added as a map layer, but it is fetched directly by the browser and carries none of your app’s access rules, so use it only for public reference layers.