How to Extract GPS, Altitude, and Flight Data from Drone Photos
Drone photos contain far more metadata than standard camera images. Beyond GPS coordinates, they embed relative and absolute altitude, gimbal orientation, flight attitude, and manufacturer-specific telemetry. This guide covers how to extract that data from DJI, Autel, and Skydio images using ExifTool and programmatic methods, plus how to reconstruct flight paths from photo sequences.
What Metadata Do Drone Photos Actually Contain?
Every photo from a consumer or commercial drone carries two layers of metadata. The first is standard EXIF data: GPS coordinates, timestamp, camera model, focal length, exposure settings. Any digital camera writes these fields. The second layer is where things get interesting.
Drone manufacturers embed custom XMP (Extensible Metadata Platform) tags that capture flight telemetry at the moment each photo was taken. DJI uses the namespace http://www.dji.com/drone-dji/1.0/ and writes over 30 custom fields per image. These include:
- GPS coordinates (GpsLatitude, GpsLongitude) with eight decimal places of precision
- Absolute altitude (AbsoluteAltitude), measured above mean sea level
- Relative altitude (RelativeAltitude), measured above the takeoff point
- Gimbal orientation (GimbalPitchDegree, GimbalRollDegree, GimbalYawDegree)
- Flight attitude (FlightPitchDegree, FlightRollDegree, FlightYawDegree)
- Speed over ground (FlightXSpeed, FlightYSpeed, FlightZSpeed)
- Home point coordinates for return-to-home reference
This telemetry is written directly into the JPEG or DNG file. You do not need flight logs to recover it. Each photo is a self-contained record of where the drone was, how it was oriented, and what the camera was doing.
The distinction between standard EXIF GPS and manufacturer XMP data matters for professional work. EXIF GPS gives you a point on a map. XMP telemetry gives you a complete spatial context: the drone's position, heading, tilt, altitude above ground, altitude above sea level, and camera angle. Photogrammetry software, surveying tools, and GIS applications rely on this richer dataset.
Understanding the Three Altitude Fields in Drone Metadata
Altitude is the most misunderstood field in drone metadata. DJI images contain three different altitude values, each measuring something different. Confusing them leads to errors in mapping, surveying, and 3D reconstruction.
Relative Altitude (XMP: RelativeAltitude) measures height above the takeoff point. When your drone launches from a hilltop and flies 50 meters up, RelativeAltitude reads 50 meters regardless of sea level elevation. This is the most reliable altitude value in DJI metadata, accurate to roughly plus or minus 3 meters. The drone calculates it from barometric pressure changes during flight, calibrated against the takeoff reading.
Absolute Altitude (XMP: AbsoluteAltitude) attempts to measure height above mean sea level (AMSL). DJI derives this value from barometric pressure using the International Standard Atmosphere formula, which assumes sea level pressure of 1013.25 hPa. On days when actual atmospheric pressure differs from that assumption, absolute altitude readings can be off by tens of meters. This is a known limitation documented across photogrammetry forums and DJI support channels.
GPS Altitude (EXIF: GPSAltitude) comes from the GPS receiver and represents height above the WGS84 ellipsoid. This is not the same as height above sea level or height above ground. The difference between the WGS84 ellipsoid and mean sea level (called geoid separation) varies by location and can exceed 100 meters in some regions.
For most practical work, relative altitude is the field you want. It tells you how high the camera was above the ground at the launch site, which is what matters for calculating ground sample distance (GSD) in mapping and for reconstructing 3D models. If you need true elevation above sea level, you will need to combine GPS coordinates with a geoid model or use RTK/PPK-equipped drones that provide corrected elevation data.
Autel drones handle this differently. Their metadata stores altitude as above sea level (ASL) by default rather than above ground level, which means you need to know the ground elevation at the photo location to derive height above terrain.
Extracting Drone Metadata with ExifTool
ExifTool is the standard tool for reading drone photo metadata. It is free, open source, runs on Windows, macOS, and Linux, and supports every drone manufacturer's XMP namespace.
Reading All Metadata from a Single Photo
To see everything a drone photo contains, run:
exiftool -a -G1 DJI_0042.JPG
The -a flag shows duplicate tags (important because GPS data appears in both EXIF and XMP), and -G1 groups tags by their source namespace. You will see sections like [EXIF], [XMP-drone-dji], and [Composite].
Extracting Specific Flight Fields
For targeted extraction, name the fields you want:
exiftool -GPSLatitude -GPSLongitude -RelativeAltitude -AbsoluteAltitude -GimbalPitchDegree -GimbalYawDegree DJI_0042.JPG
This returns just the spatial and orientation data without the hundreds of other EXIF fields.
Batch Extraction to CSV
To process an entire flight's worth of photos into a spreadsheet:
exiftool -csv -GPSLatitude -GPSLongitude -RelativeAltitude -AbsoluteAltitude -GimbalPitchDegree -GimbalYawDegree -DateTimeOriginal -n *.JPG > flight_data.csv
The -n flag outputs GPS coordinates as decimal numbers instead of degrees-minutes-seconds format, which is what most GIS software expects. The -csv flag formats the output as comma-separated values with a header row.
Extracting from RAW Files
DJI DNG files and other RAW formats contain the same XMP metadata as JPEGs. ExifTool reads them identically:
exiftool -XMP-drone-dji:all DJI_0042.DNG
This command shows only the DJI-specific XMP tags, filtering out standard camera metadata.
Installation
On macOS, install via Homebrew with brew install exiftool. On Windows, download the executable from exiftool.org. On Linux, most package managers include it as libimage-exiftool-perl or perl-Image-ExifTool.
Turn Drone Photo Metadata into Searchable Data
Upload drone photos to a Fast.io workspace and extract GPS, altitude, and flight telemetry into a queryable spreadsheet. No command line required. 50 GB free, no credit card.
Metadata Fields by Drone Manufacturer
Not all drones write the same metadata. The fields available depend on your manufacturer, model, and firmware version. Here is what to expect from the three major brands.
DJI
DJI drones write the most extensive metadata of any consumer manufacturer. The XMP namespace drone-dji includes:
- GpsLatitude, GpsLongitude (decimal degrees)
- AbsoluteAltitude, RelativeAltitude (meters, float)
- GimbalPitchDegree, GimbalRollDegree, GimbalYawDegree (degrees, float)
- FlightPitchDegree, FlightRollDegree, FlightYawDegree (degrees, float)
- FlightXSpeed, FlightYSpeed, FlightZSpeed (m/s)
- CalibratedFocalLength, CalibratedOpticalCenterX, CalibratedOpticalCenterY
- LensDistortionParam (for photogrammetry lens correction)
- SelfData (serialized binary containing additional telemetry)
- Thermal parameters (on thermal-equipped models like Mavic 3T and Zenmuse H20T)
DJI thermal drones add a separate set of tags for emissivity, reflected temperature, atmospheric temperature, and object distance, stored in APP4 of RJPEG files.
Skydio
Skydio drones embed standard EXIF GPS data and XMP metadata with camera intrinsics for photogrammetry. The X10 series uses WGS84 for latitude and longitude, and WGS84 Ellipsoidal Height for altitude. Skydio also writes camera calibration data including focal length and optical center parameters. For RTK/PPK-equipped X10 models, additional precision positioning data is available in companion .MRK files alongside the images.
Skydio's metadata is more focused on surveying accuracy than consumer telemetry. You get precise positioning but fewer flight attitude fields compared to DJI.
Autel
Autel drones embed GPS coordinates and altitude in standard EXIF fields. The key difference is that Autel stores altitude as above sea level (ASL) rather than above ground level, so the altitude value represents elevation, not height above terrain. Autel also writes camera model, lens data, and exposure information. The XMP extensions are less extensive than DJI's, with fewer flight attitude fields available in the image metadata.
Parrot
Parrot drones follow the XMP standard and document their metadata schema publicly. Their tags include GPS coordinates, altitude, camera orientation, and flight speed. Parrot's developer documentation at developer.parrot.com provides a complete field reference for their embedded photo metadata format.
Reconstructing Flight Paths from Photo Sequences
One of the most practical uses of drone photo metadata is reconstructing the flight path without access to flight logs. Every photo contains GPS coordinates and a timestamp, so a sequence of photos from a single flight defines a series of waypoints.
Exporting Coordinates to GPX
GPX (GPS Exchange Format) is the standard format for GPS tracks. You can convert a folder of drone photos into a GPX file using ExifTool:
exiftool -p gpx.fmt -d "%Y-%m-%dT%H:%M:%SZ" *.JPG > flight_path.gpx
The gpx.fmt file is a format template included with ExifTool that maps EXIF GPS fields to GPX XML structure. Open the resulting file in Google Earth, QGIS, or any GPS viewer to see the flight path plotted on a map.
Building a Coordinate Table
For analysis in a spreadsheet or GIS application, extract coordinates with altitude and timestamp:
exiftool -csv -n -GPSLatitude -GPSLongitude -RelativeAltitude -GPSAltitude -DateTimeOriginal -FileName *.JPG > flight_coordinates.csv
Sort by DateTimeOriginal to get the chronological flight sequence. The gap between timestamps tells you the interval capture rate, and the distance between consecutive coordinates reveals the drone's ground speed and coverage pattern.
Visualizing Coverage Patterns
For mapping and survey missions, the combination of GPS coordinates and gimbal angles reveals exactly what area each photo covers. Tools like the QGIS Vertical Photo Placer plugin use ExifTool to read drone metadata and place photo footprints on a map based on position, altitude, and camera angle.
The R package uasimg does similar work: it reads a directory of drone images, extracts all flight metadata, calculates image centroids and footprints, and generates summary statistics about the flight including area covered, overlap percentage, and altitude consistency.
Working with Video Metadata
DJI drones also embed telemetry in video files as SRT (subtitle) logs. Each subtitle entry contains GPS coordinates, altitude, and speed for that moment in the video. Tools like the dji-drone-metadata-embedder Python CLI can extract this data from SRT logs and export it to JSON, GPX, or CSV formats for analysis.
Organizing and Querying Drone Metadata at Scale
Extracting metadata from a handful of photos is straightforward with ExifTool. But professional drone operations generate thousands of images per project. Survey flights, construction progress documentation, agricultural monitoring, and inspection workflows all produce large photo sets where manual metadata review is not practical.
The challenge shifts from extraction to organization: how do you turn thousands of individual metadata records into a searchable, queryable dataset?
Local Database Approaches
One option is to pipe ExifTool CSV output into a SQLite or PostgreSQL database. This works well for single-user analysis. You can write SQL queries to find all photos above a certain altitude, within a geographic bounding box, or taken during a specific time window. The exiftool -csv output maps cleanly to database tables.
Cloud-Based Metadata Extraction
For teams that need to share and query drone photo metadata collaboratively, cloud platforms with built-in extraction capabilities eliminate the command-line workflow entirely. Fast.io's Metadata Views feature lets you upload drone photos to a workspace and define extraction fields in natural language. Describe what you want extracted, such as "GPS coordinates, altitude above takeoff, gimbal pitch angle, and capture timestamp," and the AI designs a typed schema, matches your files, and populates a sortable, filterable spreadsheet.
This approach is useful when multiple team members need access to the extracted data, when you want to combine drone metadata with other document types in the same workspace, or when you need to add new extraction fields later without reprocessing files from scratch. The extracted data stays linked to the source photos, so you can click through from any metadata row to view the original image.
For programmatic access, agents and scripts can create Metadata Views, trigger extraction, and query results through Fast.io's MCP server. This makes it possible to build automated pipelines that process drone photos as they are uploaded, extract flight telemetry, and flag images that fall outside expected parameters for altitude, overlap, or GPS accuracy.
Comparing Approaches
For individual practitioners running occasional survey flights, ExifTool to CSV is hard to beat. It is free, fast, and scriptable. For teams running regular drone operations where metadata needs to be shared, filtered, and cross-referenced across projects, a cloud-based extraction platform reduces the friction of getting flight data out of photos and into the hands of the people who need it.
Frequently Asked Questions
How do I extract GPS data from drone photos?
Install ExifTool and run `exiftool -GPSLatitude -GPSLongitude -n your_photo.JPG` to get decimal GPS coordinates. Add `-csv` and a wildcard like `*.JPG` to batch-extract coordinates from an entire flight into a spreadsheet. The `-n` flag outputs coordinates as decimal numbers instead of degrees-minutes-seconds.
Do drone photos contain altitude metadata?
Yes. Most drone photos contain multiple altitude values. DJI images include RelativeAltitude (height above takeoff point), AbsoluteAltitude (estimated height above sea level from barometric pressure), and GPSAltitude (height above the WGS84 ellipsoid from GPS). Relative altitude is typically the most accurate and useful value for mapping work.
How do I read DJI photo metadata?
Use ExifTool with the command `exiftool -XMP-drone-dji:all your_photo.JPG` to see all DJI-specific metadata fields including GPS coordinates, altitude, gimbal angles, flight attitude, and speed. DJI writes these tags in a custom XMP namespace that ExifTool reads natively.
Can I extract a flight path from drone images?
Yes. Each drone photo contains GPS coordinates and a timestamp. Use ExifTool to export all coordinates from a photo sequence to GPX format with `exiftool -p gpx.fmt *.JPG > flight_path.gpx`, then open the file in Google Earth or QGIS to see the reconstructed flight path.
What is the difference between relative and absolute altitude in drone metadata?
Relative altitude measures height above the drone's takeoff point using barometric pressure changes during flight. It is accurate to roughly plus or minus 3 meters. Absolute altitude estimates height above mean sea level using the International Standard Atmosphere formula, which can be off by tens of meters depending on weather conditions. For most mapping and surveying work, relative altitude is the more reliable value.
Do all drone manufacturers store the same metadata?
No. While all major manufacturers store standard EXIF GPS data, their extended metadata varies. DJI writes over 30 custom XMP fields including gimbal angles, flight attitude, and speed. Skydio focuses on surveying-grade positioning with WGS84 ellipsoidal height. Autel stores altitude as above sea level rather than above ground level. The specific fields available depend on your drone model and firmware version.
Related Resources
Turn Drone Photo Metadata into Searchable Data
Upload drone photos to a Fast.io workspace and extract GPS, altitude, and flight telemetry into a queryable spreadsheet. No command line required. 50 GB free, no credit card.