Skip to main content

Satellite perimeters

deepfire:satellite-perimeters — fire perimeter polygons estimated from clusters of satellite hotspots, current and historical (~140,000 snapshots, ~19,000 active). Geometry: MultiPolygon (EPSG:4326). Feature IDs: satellite-perimeters.<uuid>.

Each row is a timestamped snapshot: a cluster gets a new row whenever its perimeter geometry materially changes, and older snapshots are kept.

Estimates, not surveyed boundaries

These perimeters are derived from satellite hotspot detections. They are not official surveyed fire boundaries and should not be treated as authoritative for safety or legal purposes.

Attributes

PropertyTypeNotes
iduuidFeature key (surfaced as satellite-perimeters.<uuid>), per snapshot
cluster_iduuidOwning cluster — joins to deepfire:clusters
computed_attimestamp (ISO 8601)When the snapshot was computed
observed_watermarktimestamp, nullableSatellite acquisition time of the latest hotspot fed in
n_hotspotsnumberDetections used to build the polygon
area_m2number, nullableEnclosed area (m²)
perimeter_mnumber, nullablePerimeter length (m)
algo_versionstringAlgorithm version (e.g. cumulative-multihull-v1)
activebooleanWhether the owning cluster is currently active
active = true returns every snapshot of live fires

active reflects the owning cluster's state, and a cluster keeps every snapshot it ever produced — so active = true returns several polygons per fire, not one. For the single latest perimeter per fire, keep the row with the greatest computed_at per cluster_id:

latest = {}
for feature in features:
props = feature["properties"]
key = props["cluster_id"]
if key not in latest or props["computed_at"] > latest[key]["properties"]["computed_at"]:
latest[key] = feature

Examples

Active perimeter snapshots in a bounding box (California):

curl -sG "https://ogc.deepfire.co/ogc/features/v1/collections/deepfire:satellite-perimeters/items" \
--data-urlencode "bbox=-125,32,-114,42" \
--data-urlencode "filter-lang=cql2-text" \
--data-urlencode "filter=active = true" \
--data-urlencode "f=application/json"

All snapshots for one fire (sort client-side by computed_at for the growth history):

curl -sG "https://ogc.deepfire.co/ogc/features/v1/collections/deepfire:satellite-perimeters/items" \
--data-urlencode "filter-lang=cql2-text" \
--data-urlencode "filter=cluster_id = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'" \
--data-urlencode "f=application/json"

Full parameter reference: Get satellite perimeters.