Part 12 — Geospatial ExtensionLink to the section Part 12 — Geospatial Extension
On this page
Maturity: Draft · Profiles: optional on S, C, N · Schema: univip.geospatial.v0.2 (../schemas/geospatial.schema.json)
12.1 PurposeLink to the section 12.1 Purpose
A camera's position is not the position of what it observes. This extension lets a device report where each payload is looking so that a client can draw a view cone and ground footprint on a map, place detected objects, correlate with fixed cameras and search recordings by area.
A device declares support in capabilities.geospatial = { "supported": true, "fields": [...] }.
12.2 Footprint block (in telemetry.payloads[].geospatial)Link to the section 12.2 Footprint block (in telemetry.payloads[].geospatial)
{
"hfov_deg": 62.0,
"vfov_deg": 37.0,
"frame_center": { "latitude_deg": 12.9722, "longitude_deg": 77.5951, "altitude_msl_m": 920.0 },
"slant_range_m": 113.0,
"footprint": { "type": "Polygon", "coordinates": [[[77.5947, 12.9719], [77.5956, 12.9719], [77.5957, 12.9726], [77.5946, 12.9726], [77.5947, 12.9719]]] },
"footprint_source": "TERRAIN_MODEL",
"position_uncertainty_m": 2.5,
"footprint_uncertainty_m": 12.0
}| Member | Description |
|---|---|
hfov_deg, vfov_deg |
Current field of view |
frame_center |
Ground intersection of the optical axis (MISB ST 0601 tags 23–25) |
slant_range_m |
Distance from camera to frame center (tag 21) |
footprint |
GeoJSON Polygon of the image corners on the ground (tags 26–33), in the order top-left, top-right, bottom-right, bottom-left |
footprint_source |
FLAT_EARTH (assumes ground at home altitude), TERRAIN_MODEL, RANGEFINDER |
position_uncertainty_m, footprint_uncertainty_m |
1-sigma estimates |
Devices SHOULD compute the footprint; a client MAY compute it from position, gimbal EARTH orientation and FOV when absent, marking the result as client-estimated.
12.3 Target object (in vehicle.analytics.object.detected data)Link to the section 12.3 Target object (in vehicle.analytics.object.detected data)
{
"target_id": "t-88",
"class": "VEHICLE",
"subclass": "car",
"confidence": 0.91,
"bbox": { "x_pct": 0.42, "y_pct": 0.55, "w_pct": 0.08, "h_pct": 0.06 },
"geolocation": { "latitude_deg": 12.97205, "longitude_deg": 77.59508, "altitude_msl_m": 918.0 },
"geolocation_uncertainty_m": 6.0,
"velocity": { "course_deg": 270, "ground_speed_mps": 11.2 },
"stream_id": "cam-1-main",
"frame_time": "2026-10-15T10:35:12.480Z",
"attributes": { "color": "white" }
}class is open; standard values: PERSON, VEHICLE, BICYCLE, ANIMAL, VESSEL, AIRCRAFT, FIRE, SMOKE, UNKNOWN. bbox is normalized to the frame. Mapping to MISB ST 0903 VMTI is given in Annex A.
12.4 Client-side uses (Informative)Link to the section 12.4 Client-side uses (Informative)
- Live map: drone icon oriented by
heading_deg, view cone fromgimbal.yaw_deg(EARTH) andhfov_deg, footprint polygon. - Click-to-point: client sends
camera.gimbal.point_at(Profile C) orvehicle.goto(Profile N) from a map click. - Recording search: index footprints per sample; query by polygon intersection.
- Cross-camera correlation: match
geolocationagainst fixed camera coverage polygons.