In the world of 360 outdoor tour photography, telemetry information is usually the most useful metadata, namely – latitude, longitude, and altitude.

I often upload GPS tracks from my tour photography to different tools for deeper insights. Strava is one of my favourites to analyse the telemetry. How was my speed? How long did it take on this stretch? …

Let me show you how to grab a GPS track from a 360 timelapse or video to use with Strava, Google Earth, and almost any other mapping or location based tool.

360 video GPS metadata examples

I’m going to be using a process known as inverse or reverse geotagging – a process that creates a GPS track file from a series of geotagged images or a video.

In the following examples, I am assuming that the GPSLatitude, GPSLongitude, GPSAltitude and GPSDateTime tags are all available in each processed file. Warnings will be generated for missing tags. The outputted files will be invalid if any GPSLatitude or GPSLongitude tags are missing, but will be OK for missing GPSAltitude or GPSDateTime tags (but could cause problems later with other tools).

There are a significant amount of GPS points in the example files I’ve used. For this post I’ve only included snippets of each output. Where I’ve deleted part of the output you’ll see a [...]. The full output is linked below each snippet should you want to take a deeper look.

GoPro Fusion Video

For this first example I’m going to use an .mp4 video filmed using a GoPro Fusion with GPS enabled shot at 5.2K and the final file encoded using H.264 at 4K at 30 FPS using GoPro Fusion Studio (no Protune). The file size is 86.2MB and runs for 16 seconds.

-fileOrder: Used to force processing of files in a particular order. For example, the above command processes files in order of increasing GPSDateTime. The default behaviour for order of track points in the output GPX file will be the same as the order of processing the input files, which may not be chronological depending on how the files are named.

Remember in the GoPro example there was only one <trkpt> per second? The Insta360 Pro2 GPS sampling rate that exiftool is outputting to the .gpx file is much higher, about 12 <trkpt>’s per second (1290 trackpoints / 106 seconds).

Choose the file format suited to the software you’re planning to use the outputted file with.

A note on 360 camera orientation fields

In this post I’m only considering GPSLatitude, GPSLongitude, GPSAltitude and GPSDateTime values.

EXIF defined telemetry orientation data tags also include:

GPSSpeed

GPSImgDirection

GPSPitch

GPSTrackRef

GPSSpeedRef

GPSImgDirectionRef

GPSRoll

CameraElevationAngle

XMP telemetry orientation data tags include:

PoseHeadingDegrees

PosePitchDegrees

PoseRollDegrees

It’s important to note that none of these are valid gpx fields.

If you want to preserve these values kml is the better option (with <tilt>, <heading>, <roll> values defined in the schema). Alternatively you could create your own custom defined schema (described at the end of this post).

gpx_wpt.fmt (supports: timelapse)

Great for when you want to keep the image files referenced against the track. This is paticulalry useful in software like Strava, where there are features to share images from your ride or hike.

Note, this only works with timelapse inputs and will not work with a video file.

Instead of <trkpt>, <wpt>’s (waypoints are generated). You can see the XML structure is a little different, but the key difference is each <wpt> has a link to the associated 360 photo (e.g. <link href="TIMELAPSE/MULTISHOT_9698_000054.jpg"/>).

kml.fmt (supports: timelapse, video)

If you’re using Google Maps, a .kml file might be a better output for your requirements.