site_reconstruction
A dated, georeferenced, textured 3D MODEL of a site (entity_type + id, or lat + lng) and its MEASUREMENTS as structured data.
measurements (computed on the elevation source's own grid, every block with source and accuracy): site_extent (side, area,
bbox, CRS); elevation (min, max, mean, relief, vertical datum); slope_deg (p10/p50/p90/max/mean + share per class 0–5/5–15/15–30/
30–45/45–90°); pits (closed depressions filled to their spill level: area_m2, depth_max_m, depth_mean_m, volume_m3 ±
volume_uncertainty_m3, spill and floor elevation, centre); heaps (closed mounds: area_m2, height_max_m, volume_m3 ± uncertainty above
the highest separating saddle, base and top elevation, centre). Only features that CLOSE inside the extent are measured — 0 pits over
a big open pit means the pit is larger than the square: widen radius_m. On a surface model a heap can be a stockpile, dump, building
or rock: shape, not material. Tier follows the data: lidar_2m (USGS 3DEP lidar DSM 2 m, NAVD88, ~0.10 m) where it covers the extent,
else dem_30m (Copernicus GLO-30, one epoch 2011–2015, EGM2008, < 4 m 90 %); texture NAIP (US) else Sentinel-2; the card states tier,
sources, dates, datum, accuracy, dates_differ and what it is NOT (not a survey, not bare earth, not for volume certification).
height_class is always prior_only (one dated surface — shapes and heights at that date, never a change) or untestable; each answer
is kept in place.index as a measurement. WHEN NOT TO CALL: what changed at a site between two dates is entity_change (and only its
repeat_surface is a measured volume change); who owns or operates it is relationships.
The MODEL is binary glTF 2.0 (+X east, +Y up, −Z north, metres; node extras carry the CRS, origin and base elevation); the card
carries its sha256 and byte size. include_model=true adds model_glb_base64 (a lidar model is about 4 MB, ~5 MB as base64); the raw
file is GET /api/v1/site.reconstruction?…&format=glb on the API, which carries the height class in its X-Height-Class header (the
file itself has no field for it). radius_m 100..1000 (default 300; the square's side is 2 × radius);
as_of YYYY-MM-DD picks the lidar collection and texture nearest that date. An entity whose coordinates are only a country centre is
refused (409, not charged). Slow: about 15–60 s.
AGENT KEYS ONLY (a browser session is refused BEFORE any charge). SIDE EFFECTS: none beyond the charge — read-only.
⚠ CHARGING: priced per tier, and the tier is decided BEFORE any charge (lidar_2m where 3DEP lidar covers the site, else dem_30m):
the call reserves THAT tier's price — a 30 m site never needs the lidar price in the wallet. No model (no elevation source or no clear
image) costs nothing. Price: lidar_2m 2,500 J, dem_30m 1,000 J, + the 0.5% rail fee (greenlandai-api
look/reconstruct_build.RECONSTRUCTION_PRICE_JOULES). Quote the exact tier with
billing_quote("/api/v1/site.reconstruction", lat=…, lng=…, radius_m=…) (or entity_type + id); the JSON carries charged_joules
and a price block with tier_reserved and tier_delivered.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| lat | No | ||
| lng | No | ||
| as_of | No | ||
| radius_m | No | ||
| entity_type | No | ||
| include_model | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||