entity_change
change(site, t0, t1) — the STRUCTURED CHANGE between two dated frames of one site (entity_type + id, or lat + lng): per class
(water · ice · canopy · pad · stockpile · unknown) the area in m², by_sensor_m2 {optical, radar}, said (what each instrument saw:
an area, "saw no change", "makes no call", or "untestable (reason)"), sensors_agreed, and a confidence from agreement with
confidence_why: high = optical and radar both flag it in the same place; medium = one flags it and the other is blind to the class
or untestable; low = they disagree (different places, or one flags it and the other could see it and saw none), or stockpile, or
pad/stockpile without a terrain check. Optical is Sentinel-2; Landsat only for a date with no Sentinel-2 (before 2015-06-23 or a gap);
radar is Sentinel-1 (from 2014-10). A Copernicus DEM terrain prior removes pad and stockpile on ground steeper than 12° (reported as
steep_ground_excluded_m2). Every answer carries height_class — read it FIRST; the stockpile's volume block serves only what its class can say: repeat_surface = two lidar surfaces of the same ground (USGS 3DEP in the US, Canada's HRDEM by acquisition project) as their DIRECT DIFFERENCE — the ONLY measured volume change (change_m3 ± uncertainty, change_beyond_uncertainty = |change| > 2σ); prior_only = one dated surface against the Copernicus DEM (2011–2015): material ABOVE that old surface at a date, NOT a change between your dates (no change_m3); profile = a NASA ICESat-2 laser PROFILE (a line of 40 m segments, SlideRule) crossed the pile: the height along the line and the share it crossed, never a volume — ICESat-2 is NOT a worldwide second surface (tracks are ~30 km apart; most piles are missed); untestable = no dated height source crossed it (what was tried is listed; brightness and shape only, low). withheld names any figure the class cannot support; disturbed (Sentinel-1 coherence loss) is not computed yet. Each answer is kept in place.index as a measurement (append-only, with its inputs and the operator served that day; recorded gives its id). WHEN NOT TO CALL: who owns or operates the site is relationships (or the API's /relationships/walk), not this; the 3D shape of a site at one date is site_reconstruction; never quote a volume change unless height_class is repeat_surface. Not a video and not a picture — fetch
stills with look_at / look_through. For spans of 300+ days the t0 frame is taken at t1's day of year (same_season=true, default). A
sensor that cannot see the pair says UNTESTABLE with its reason; change_untestable is true only when BOTH are (then the answer costs
nothing). change_untestable says the CHANGE could not be measured; height_class says what the stockpile's HEIGHT can support — a measured
change can still carry height_class "untestable". Footprint: the site's
held footprint, else a 500 m circle (stated in footprint); radius_m 50..2500 overrides. An entity whose coordinates are only a
country centre is refused (409, not charged) — pass lat + lng. Dates YYYY-MM-DD, t0 on/after 1984-03-16, t1 default today. 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: ONE quote, ONE debit = two stills at look_at's live price, reserved up front; an UNTESTABLE answer costs nothing.
Quote with billing_quote("/api/v1/entity.change"); the JSON carries charged_joules and a price block.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| t0 | Yes | ||
| t1 | No | ||
| lat | No | ||
| lng | No | ||
| radius_m | No | ||
| max_cloud | No | ||
| entity_type | No | ||
| same_season | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||