GeoTag Detection
Project detections from pixel coordinates to real-world GPS positions.
Convert object detection bounding boxes to real-world GPS coordinates using camera position metadata.
How This Block Works
This block takes object detection predictions and camera GPS metadata (latitude, longitude, altitude) and projects each detection's pixel position to a real-world ground coordinate. The projection uses the camera's field of view and altitude to compute a ground footprint, then maps pixel offsets from image center to geographic offsets from the camera position.
Receives detection predictions from an upstream object detection block (any model that outputs bounding boxes)
Takes camera GPS metadata as inputs: latitude, longitude, altitude above ground, and optionally horizontal field of view
Computes ground footprint from altitude and FOV using basic trigonometry
Projects each detection center from pixel coordinates to lat/lon offset from camera position
Outputs GeoJSON-ready records with class, confidence, and geographic coordinates for each detection
The projection assumes a nadir (straight-down) camera orientation, which is accurate for most drone survey flights. For oblique angles, accuracy decreases with distance from image center.
Common Use Cases
Drone Survey Analysis: Process drone footage to map detected objects (vehicles, people, animals, structures) at their real-world locations for survey, inspection, or monitoring applications
Agricultural Monitoring: Map crop damage, equipment, or livestock positions from aerial imagery for precision agriculture workflows
Security and Surveillance: Create geospatial awareness from aerial camera feeds, mapping detected activity to real-world coordinates for situational awareness
Wildlife Conservation: Track and map animal detections from drone surveys to monitor populations, migration patterns, or habitat usage
Construction Site Monitoring: Map equipment, materials, and personnel positions from aerial imagery for site management and safety compliance
Search and Rescue: Rapidly map detected persons or objects across large areas from drone footage to coordinate response efforts
Connecting to Other Blocks
This block receives detections and produces geospatial data:
After object detection blocks (YOLO, RF-DETR, etc.) to geotag their predictions with real-world coordinates
After tracking blocks (ByteTrack, OC-SORT) to produce geotagged tracks with movement paths
Before data sink blocks (CSV, JSON, Webhook) to export detection locations for GIS analysis
Before visualization blocks to annotate frames with GPS coordinate labels
In video processing pipelines where each frame's GPS comes from drone telemetry or EXIF metadata
Type identifier
Use the following identifier in step "type" field: roboflow_core/geotag_detection@v1 to add the block as a step in your workflow.
Properties
Name
Type
Description
Refs
name
str
Enter a unique identifier for this step..
❌
latitude
float
GPS latitude of the camera position in decimal degrees. For drone imagery, this comes from the flight controller GPS. Positive values are North, negative are South..
✅
longitude
float
GPS longitude of the camera position in decimal degrees. For drone imagery, this comes from the flight controller GPS. Positive values are East, negative are West..
✅
altitude
float
Camera altitude above ground level in meters. Used with field of view to compute the ground footprint. For drones, this is the relative altitude reported by the flight controller, not absolute altitude..
✅
horizontal_fov
float
Horizontal field of view of the camera in degrees. Default 73.7 covers most DJI consumer drones (Mini, Air, Mavic series). Adjust for other cameras. Wider FOV = larger ground footprint per frame..
✅
heading
float
Compass bearing that the top of the image points toward, in degrees clockwise from true north. 0 means image-up is North (the default). When the gimbal does not report yaw, derive this from the flight course (bearing between successive GPS fixes) for nose-forward flight. Rotates the ground footprint so detections land on the correct real-world bearing instead of being pinned to North..
✅
The Refs column marks possibility to parametrise the property with dynamic values available in workflow runtime. See Bindings for more info.
Input and Output Bindings
The available connections depend on its binding kinds. Check what binding kinds GeoTag Detection in version v1 has.
Input and output bindings
input
image(image): The image that detections were generated from. Used to determine image dimensions for coordinate projection..predictions(Union[object_detection_prediction,instance_segmentation_prediction]): Object detection predictions to geotag. Each detection's bounding box center will be projected to a GPS coordinate..latitude(float): GPS latitude of the camera position in decimal degrees. For drone imagery, this comes from the flight controller GPS. Positive values are North, negative are South..longitude(float): GPS longitude of the camera position in decimal degrees. For drone imagery, this comes from the flight controller GPS. Positive values are East, negative are West..altitude(float): Camera altitude above ground level in meters. Used with field of view to compute the ground footprint. For drones, this is the relative altitude reported by the flight controller, not absolute altitude..horizontal_fov(float): Horizontal field of view of the camera in degrees. Default 73.7 covers most DJI consumer drones (Mini, Air, Mavic series). Adjust for other cameras. Wider FOV = larger ground footprint per frame..heading(float): Compass bearing that the top of the image points toward, in degrees clockwise from true north. 0 means image-up is North (the default). When the gimbal does not report yaw, derive this from the flight course (bearing between successive GPS fixes) for nose-forward flight. Rotates the ground footprint so detections land on the correct real-world bearing instead of being pinned to North..
output
geo_detections(list_of_values): List of values of any type.geojson(dictionary): Dictionary.
Last updated
Was this helpful?