Pictures metadata
Panoramax have some prerequisites for a pictures to be accepted:
- Position 📍
- Capture time ⏲️
Those metadata are usually integrated inside the picture file (in what is called EXIF tags). For some complex use cases, those tags can also be given alongside the picture to the uploading API.
Exif tags
Exif tags are quite complex and usually one metadata can be read from several EXIF tags. In order to handle many camera vendors, Panoramax will try to read each metadata from several EXIF tags.
Note
The following documentation uses the Exiv2 notation for EXIF tags as it gives a unique identifier for an EXIF tag, and is the notation used by the API to expose those tags.
Note
Panoramax accepts both 360° and classic/flat pictures.
📍 GPS coordinates
📍 GPS coordinates are read from:
Exif.GPSInfo.GPSLatitude
/Exif.GPSInfo.GPSLatitudeRef
,Exif.GPSInfo.GPSLongitude
/Exif.GPSInfo.GPSLongitudeRef
- or
Xmp.exif.GPSLatitude
/Xmp.exif.GPSLatitudeRef
,Xmp.exif.GPSLongitude
/Xmp.exif.GPSLongitudeRef
- or in Mapillary tags:
MAPLatitude
/MAPLongitude
⏲️ Capture time
⏲️ Capture time is read from:
Exif.GPSInfo.GPSDateStamp
Exif.GPSInfo.GPSDateTime
Xmp.exif.GPSDateStamp
Xmp.exif.GPSDateTime
Exif.Image.DateTimeOriginal
Exif.Photo.DateTimeOriginal
Exif.Image.DateTime
Xmp.GPano.SourceImageCreateTime
- or in Mapillary tags:
MAPGpsTime
Optional metadata
The following EXIF tags are recognized and used if defined, but are optional:
🧭 Image orientation
Image orientation is read from
GPSImgDirection
- or in Mapillary tags:
MAPCompassHeading
Milliseconds in date
Milliseconds in date is reade from SubSecTimeOriginal
.
360° or flat
To detect if a picture is 360° / spherical, we use GPano:ProjectionType
or an heuristic based on the model of the camera and dimension of the picture (see doc for more details).
📷 Make and model
Camera vendor (make
) is read from:
Exif.Image.Make
- or in Mapillary tags:
MAPDeviceMake
Camera model is read from:
Exif.Image.Model
- or in Mapillary tags:
MAPDeviceModel
Focal length
Camera focal length (to get precise field of view) is read from:
Exif.Image.FocalLength
Exif.Photo.FocalLength
Yaw, Pitch and Roll
Yaw value is read from:
Xmp.Camera.Yaw
Xmp.GPano.PoseHeadingDegrees
Pitch value is read from:
Xmp.Camera.Pitch
Xmp.GPano.PosePitchDegrees
Roll value is read from:
Xmp.Camera.Roll
Xmp.GPano.PoseRollDegrees
⛰️ Altitude
Altitude is read from:
Exif.GPSInfo.GPSAltitude
Using as Python library
All this metadata reading logic has been extracted in a python library.
How to use as a Python library
Using as Command-line tool
A command-line tool is also available to quickly read and write a picture's metadata.