# 360 Camera with GPS and Heading Metadata for Spatial Object Localization

**URL:** https://forum.mapillary.com/t/360-camera-with-gps-and-heading-metadata-for-spatial-object-localization/10310
**Category:** 360° cameras
**Created:** [April 10, 2026, 4:10pm UTC](https://forum.mapillary.com/t/360-camera-with-gps-and-heading-metadata-for-spatial-object-localization/10310 "2026-04-10T16:10:01Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![dangomezm](https://avatars.discourse-cdn.com/v4/letter/d/4bbf92/32.png) [@dangomezm](https://forum.mapillary.com/u/dangomezm)
#### Post date: [April 10, 2026, 4:10pm UTC](https://forum.mapillary.com/t/360-camera-with-gps-and-heading-metadata-for-spatial-object-localization/10310/1 "2026-04-10T16:10:01Z")

</div>

Hello everyone,  
I am looking for a 360 camera for a workflow in which objects detected in a 360 image can later be spatially located.

I need a camera that records the camera orientation at capture time, for example yaw/azimuth. I found that the Ricoh THETA X provides `PoseHeadingDegrees` metadata and also has built-in GPS.

However, I would like to know whether there are other 360 cameras that provide similar metadata and would allow me to determine, for example, whether a building in the image is on the left or right side of the road.

---

<div class="post-metadata">

### Author: ![GITNE](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.mapillary.com/gitne/32/70659_2.png) [@GITNE](https://forum.mapillary.com/u/GITNE)
#### Post date: [April 10, 2026, 6:26pm UTC](https://forum.mapillary.com/t/360-camera-with-gps-and-heading-metadata-for-spatial-object-localization/10310/2 "2026-04-10T18:26:02Z")

</div>

The Mapillary recommended line of GoPro MAX, MAX 2025, and MAX2 cameras record gyroscopic and compass data at about 10 Hz. However, the data comes as a GoPro proprietary but well documented and machine readable [GPMF (but `GPMD` FourCC) metadata stream](https://github.com/gopro/gpmf-parser#gpmf-introduction). And, although MAX and MAX 2025 do produce Google Pano XMP metadata, all `Pose`\* tags are always `0.0`, so reading `PoseHeadingDegrees` will not do you any good.

```auto
Xmp.GPano.UsePanoramaViewer XmpText 4 True
Xmp.GPano.CaptureSoftware XmpText 9 GoPro Max
Xmp.GPano.StitchingSoftware XmpText 9 GoPro Max
Xmp.GPano.ProjectionType XmpText 15 equirectangular
Xmp.GPano.PoseHeadingDegrees XmpText 3 0.0
Xmp.GPano.PosePitchDegrees XmpText 3 0.0
Xmp.GPano.PoseRollDegrees XmpText 3 0.0
Xmp.GPano.InitialViewHeadingDegrees XmpText 3 0.0
Xmp.GPano.InitialViewPitchDegrees XmpText 3 0.0
Xmp.GPano.InitialViewRollDegrees XmpText 3 0.0
Xmp.GPano.InitialHorizontalFOVDegrees XmpText 3 0.0
Xmp.GPano.InitialVerticalFOVDegrees XmpText 3 0.0
Xmp.GPano.CroppedAreaLeftPixels XmpText 1 0
Xmp.GPano.CroppedAreaTopPixels XmpText 1 0
Xmp.GPano.CroppedAreaImageWidthPixels XmpText 4 5760
Xmp.GPano.CroppedAreaImageHeightPixels XmpText 4 2880
Xmp.GPano.FullPanoWidthPixels XmpText 4 5760
Xmp.GPano.FullPanoHeightPixels XmpText 4 2880
Xmp.GPano.FirstPhotoDate XmpText 19 YYYY:MM:DD HH:MM:SS
Xmp.GPano.LastPhotoDate XmpText 19 YYYY:MM:DD HH:MM:SS
Xmp.GPano.SourcePhotosCount XmpText 1 2
Xmp.GPano.ExposureLockUsed XmpText 5 False
Xmp.GPano.InitialCameraDolly XmpText 3 0.0

```

MAX and MAX 2025 do not write `GPSImgDirection` either, except like already mentioned, compass data in the GPMF stream.

I do not know whether MAX2 has been improved in this regard. Perhaps @TheWizard can share some insight?

---

<div class="post-metadata">

### Author: ![TheWizard](https://avatars.discourse-cdn.com/v4/letter/t/e56c9b/32.png) [@TheWizard](https://forum.mapillary.com/u/TheWizard)
#### Post date: [April 10, 2026, 8:14pm UTC](https://forum.mapillary.com/t/360-camera-with-gps-and-heading-metadata-for-spatial-object-localization/10310/3 "2026-04-10T20:14:18Z")

</div>

This is the output of the Max 2 (a CineForm output of the original 360):

> `[ExifTool] ExifToolVersion : 13.54`  
> `[System] FileName : GS020595.mov`  
> `[System] Directory : .`  
> `[System] FileSize : 2.1 GB`  
> `[System] FileModifyDate : 2026:04:10 18:41:39+02:00`  
> `[System] FileAccessDate : 2026:04:10 22:11:59+02:00`  
> `[System] FileCreateDate : 2026:04:10 22:11:56+02:00`  
> `[System] FilePermissions : -rw-rw-rw-`  
> `[File] FileType : MP4`  
> `[File] FileTypeExtension : mp4`  
> `[File] MIMEType : video/mp4`  
> `[QuickTime] MajorBrand : MP4 v2 [ISO 14496-14]`  
> `[QuickTime] MinorVersion : 0.0.0`  
> `[QuickTime] CompatibleBrands : mp41, isom`  
> `[QuickTime] MediaDataSize : 2136056524`  
> `[QuickTime] MediaDataOffset : 72`  
> `[QuickTime] MovieHeaderVersion : 0`  
> `[QuickTime] CreateDate : 2026:04:10 16:41:28`  
> `[QuickTime] ModifyDate : 2026:04:10 16:41:28`  
> `[QuickTime] TimeScale : 48000`  
> `[QuickTime] Duration : 17.54 s`  
> `[QuickTime] PreferredRate : 1`  
> `[QuickTime] PreferredVolume : 100.00%`  
> `[QuickTime] MatrixStructure : 1 0 0 0 1 0 0 0 1`  
> `[QuickTime] PreviewTime : 0 s`  
> `[QuickTime] PreviewDuration : 0 s`  
> `[QuickTime] PosterTime : 0 s`  
> `[QuickTime] SelectionTime : 0 s`  
> `[QuickTime] SelectionDuration : 0 s`  
> `[QuickTime] CurrentTime : 0 s`  
> `[QuickTime] NextTrackID : 3`  
> `[QuickTime] HandlerType : Metadata`  
> `[Track1] TrackHeaderVersion : 0`  
> `[Track1] TrackCreateDate : 2026:04:10 16:41:28`  
> `[Track1] TrackModifyDate : 2026:04:10 16:41:28`  
> `[Track1] TrackID : 1`  
> `[Track1] TrackDuration : 16.92 s`  
> `[Track1] TrackLayer : 0`  
> `[Track1] TrackVolume : 0.00%`  
> `[Track1] MatrixStructure : 1 0 0 0 1 0 0 0 1`  
> `[Track1] ImageWidth : 7680`  
> `[Track1] ImageHeight : 3840`  
> `[Track1] MediaHeaderVersion : 0`  
> `[Track1] MediaCreateDate : 2026:04:10 16:41:28`  
> `[Track1] MediaModifyDate : 2026:04:10 16:41:28`  
> `[Track1] MediaTimeScale : 25000`  
> `[Track1] MediaDuration : 16.92 s`  
> `[Track1] MediaLanguageCode : und`  
> `[Track1] HandlerType : Video Track`  
> `[Track1] HandlerDescription : VideoHandler`  
> `[Track1] GraphicsMode : srcCopy`  
> `[Track1] OpColor : 0 0 0`  
> `[Track1] CompressorID : CFHD`  
> `[Track1] VendorID : Unknown (gpro)`  
> `[Track1] SourceImageWidth : 7680`  
> `[Track1] SourceImageHeight : 3840`  
> `[Track1] XResolution : 72`  
> `[Track1] YResolution : 72`  
> `[Track1] CompressorName : CineForm HD`  
> `[Track1] BitDepth : 24`  
> `[Track1] VideoFrameRate : 25`  
> `[Track1] TimecodeTrack : 3`  
> `[XMP-GSpherical] Spherical : true`  
> `[XMP-GSpherical] Stitched : true`  
> `[XMP-GSpherical] StitchingSoftware : Spherical Metadata Tool`  
> `[XMP-GSpherical] ProjectionType : equirectangular`  
> `[Track2] TrackHeaderVersion : 0`  
> `[Track2] TrackCreateDate : 2026:04:10 16:41:28`  
> `[Track2] TrackModifyDate : 2026:04:10 16:41:28`  
> `[Track2] TrackID : 2`  
> `[Track2] TrackDuration : 17.54 s`  
> `[Track2] TrackLayer : 0`  
> `[Track2] TrackVolume : 100.00%`  
> `[Track2] MatrixStructure : 1 0 0 0 1 0 0 0 1`  
> `[Track2] MediaHeaderVersion : 0`  
> `[Track2] MediaCreateDate : 2026:04:10 16:41:28`  
> `[Track2] MediaModifyDate : 2026:04:10 16:41:28`  
> `[Track2] MediaTimeScale : 48000`  
> `[Track2] MediaDuration : 17.54 s`  
> `[Track2] MediaLanguageCode : und`  
> `[Track2] HandlerType : Audio Track`  
> `[Track2] HandlerDescription : SoundHandler`  
> `[Track2] Balance : 0`  
> `[Track2] AudioFormat : mp4a`  
> `[Track2] AudioChannels : 2`  
> `[Track2] AudioBitsPerSample : 24`  
> `[Track2] AudioSampleRate : 48000`  
> `[Track2] TimecodeTrack : 3`  
> `[Track3] TrackHeaderVersion : 0`  
> `[Track3] TrackCreateDate : 2026:04:10 07:03:20`  
> `[Track3] TrackModifyDate : 2026:04:10 07:03:20`  
> `[Track3] TrackID : 3`  
> `[Track3] TrackDuration : 0:00:33`  
> `[Track3] TrackLayer : 0`  
> `[Track3] TrackVolume : 0.00%`  
> `[Track3] MatrixStructure : 1 0 0 0 1 0 0 0 1`  
> `[Track3] MediaHeaderVersion : 0`  
> `[Track3] MediaCreateDate : 2026:04:10 07:03:20`  
> `[Track3] MediaModifyDate : 2026:04:10 07:03:20`  
> `[Track3] MediaTimeScale : 25000`  
> `[Track3] MediaDuration : 16.92 s`  
> `[Track3] HandlerClass : Media Handler`  
> `[Track3] HandlerType : Time Code`  
> `[Track3] HandlerDescription : GoPro TCD`  
> `[Track3] GenMediaVersion : 0`  
> `[Track3] GenFlags : 0 0 0`  
> `[Track3] GenGraphicsMode : ditherCopy`  
> `[Track3] GenOpColor : 32768 32768 32768`  
> `[Track3] GenBalance : 0`  
> `[Track3] TextFont : Unknown (21)`  
> `[Track3] TextFace : Plain`  
> `[Track3] TextSize : 10`  
> `[Track3] TextColor : 0 0 0`  
> `[Track3] BackgroundColor : 65535 65535 65535`  
> `[Track3] FontName : Helvetica`  
> `[Track3] OtherFormat : tmcd`  
> `[Track3] PlaybackFrameRate : 25`  
> `[Composite] ImageSize : 7680x3840`  
> `[Composite] Megapixels : 29.5`  
> `[Composite] AvgBitrate : 974 Mbps`  
> `[Composite] Rotation : 0`
