How to add mandatory Photo Sphere meta data to an equirectangular image (Photoshop CC 2014)

Preface

Some information on this post is outdated! Google Views has been migrated to Google Maps / Google Streeet View. Outdated information has been struck through.

Last year Google added a new feature to their set of web based applications. Publishing geo located spherical panoramas (aka Photo Spheres) on Views.

In another article, Markus already described the complete workflow which is needed to publish a panoramic image on Views and embed it into your website.

I already described different methods of adding mandatory Photo Sphere meta data to an equirectangular image in a second article. One of the methods described a custom meta data panel which could be used within Photoshop CS6 and Photoshop CC to read and write the photosphere meta data.

As Adobe changed their specification for creating meta data panels for Photoshop CC 2014, I redid the description…

Note for downloading the XML files

Depending on your browser it could be the best option to click the XML download link and use the context menu to save the link as XML to your local computer!

Custom photo sphere meta data panel for Photoshop CC 2014

First you have to identify the proper location for the File Panels. On a Windows system running PS CC 2014 the files are located in

C:\Users\[Username]\AppData\Roaming\Adobe\XMP\Metadata Extensions

or directly using the appropriate environment variable:

%USERPROFILE%\AppData\Roaming\Adobe\XMP\Metadata Extensions

PS CC 2014 running on Mac OS uses the following location

[Username]/Library/Application Support/Adobe/XMP/Metadata Extensions

Navigate to the location and create a sub directory named

Photosphere

with two subdirectories named

schema

and

view

Change to the newly created directory ‘Photosphere’ and create a file named

manifest.xml

with the following content (or download the file here):

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2014 by Jürgen Matern (/author/juergen/)
 
This file is licensed under the Creative Commons Attribution ShareAlike 3.0
License (http://creativecommons.org/licenses/by-sa/3.0/).
 
In short: you are free to share and make derivative works of the file under
the conditions that you appropriately attribute it and that you distribute
it only under a license identical to this one.
 
Photosphere File Info Panel (manifest.xml)	
-->
<extension xmlns="http://ns.adobe.com/metadata/extension/1.0/"
   name="Photosphere"
   version="1.0"
   locFilePrefix="photosphere">
</extension>

Change to the newly created directory ‘schema’ and create a file named

photosphereSchema.xml

with the following content (or download the file here):

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2014 by Jürgen Matern (/author/juergen/)
 
This file is licensed under the Creative Commons Attribution ShareAlike 3.0
License (http://creativecommons.org/licenses/by-sa/3.0/).
 
In short: you are free to share and make derivative works of the file under
the conditions that you appropriately attribute it and that you distribute
it only under a license identical to this one.
 
Photosphere File Info Panel (photosphereSchema.xml)	
-->
<xmp_definitions>
  <!-- Defining the namespace and prefix of the schema --> 	
	<xmp_schema prefix='GPano' namespace='http://ns.google.com/photos/1.0/panorama/' label='Photosphere' description='Properties for Photospheres'>
 
		<!-- Defining the properties -->
		<xmp_property name='StitchingSoftware' category='external' type='openchoice' element_type='text' label='Stitching Software:' description='The software which created the panorama.'>
			<xmp_choice raw_value='PTGui Pro 10.0.10' label='PTGui Pro 10.0.10'/>
			<xmp_choice raw_value='PTGui 10.0.10' label='PTGui 10.0.10'/>
			<xmp_choice raw_value='Hugin' label='Hugin'/>
		</xmp_property>
 
		<xmp_property name='ProjectionType' category='external' type='closedchoice' element_type='text' label='Pano Projection:' description='Currently Google applications only support equirectangular projection.' >
			<xmp_choice raw_value='equirectangular' label='equirectangular'/>
			<xmp_choice raw_value='' label='none specified'/>
		</xmp_property>
 
		<xmp_property name='UsePanoramaViewer' category='external' type='boolean' label='Use Panorama Viewer:' description='Set this value if the image should show as photosphere.' />
		<xmp_property name='PoseHeadingDegrees' category='external' type='real' label='Heading:' description='This field is only mandatory for Google Maps. It is the direction in the middle of the image in degrees. North=0, East=90, South=180, West=270. See [GPS].' />
		<xmp_property name='CroppedAreaImageWidthPixels' category='external' type='integer'  label='Cropped Area Image Width:' description='For full spheres the same as Full Pano Width and width of the image in pixels (see [Image Size] further down).'/>
		<xmp_property name='CroppedAreaImageHeightPixels' category='external' type='integer' label='Cropped Image Heigth:' description='For full spheres the same as Full Pano heigth and height of the image in pixels (see [Image Size] further down).'/>
		<xmp_property name='FullPanoWidthPixels' category='external' type='integer' label='Full Pano Width:' description='For full spheres this equals to the height of the image in pixels (see [Image Size] further down).'/>
		<xmp_property name='FullPanoHeightPixels' category='external' type='integer'  label='Full Pano Heigth:' description='For full spheres this equals to the height of the image in pixels (see [Image Size] further down).'/>
		<xmp_property name='CroppedAreaLeftPixels' category='external' type='integer' label='Cropped Pixels Left:' description='Set to 0 for full spheres.'/>
		<xmp_property name='CroppedAreaTopPixels' category='external' type='integer' label='Cropped Pixels Top:' description='Set to 0 for full spheres.'/>
		<xmp_property name='SourcePhotosCount' category='external' type='integer' label='Source Photos Count:' description='Number of source image. This value is optional.'/>
		<xmp_property name='FirstPhotoDate' category='external' type='date' label='First Photo Date' description='Date and time of the first image taken.  This value is optional.'/>
		<xmp_property name='LastPhotoDate' category='external' type='date' label='Last Photo Date' description='Date and time of the last image taken.  This value is optional.'/>
	</xmp_schema>		
</xmp_definitions>

Change to the newly created directory ‘view’ and create a file named

photosphereView.xml

with the following content (or download the file here):

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2014 by Jürgen Matern (/author/juergen/)
 
This file is licensed under the Creative Commons Attribution ShareAlike 3.0
License (http://creativecommons.org/licenses/by-sa/3.0/).
 
In short: you are free to share and make derivative works of the file under
the conditions that you appropriately attribute it and that you distribute
it only under a license identical to this one.
 
Photosphere File Info Panel (photosphereView.xml)	
-->
 
<views xmlns="http://ns.adobe.com/metadata/ui/1.0/"> 
	<view
		xmlns:exif="http://ns.adobe.com/exif/1.0/"
		xmlns:GPano='http://ns.google.com/photos/1.0/panorama/' 
		name="Photosphere"
		label="Photosphere"
		description="This view shows the GPano properties and some other values from the EXIF metadata.">
 
		<section label="Photosphere" type="labelled">
			<property name='GPano:StitchingSoftware' />
			<property name='GPano:ProjectionType' />
			<property name='GPano:UsePanoramaViewer' />
			<property name='GPano:PoseHeadingDegrees' />
			<property name='GPano:CroppedAreaImageWidthPixels' />
			<property name='GPano:CroppedAreaImageHeightPixels' />
			<property name='GPano:FullPanoWidthPixels' />
			<property name='GPano:FullPanoHeightPixels' />
			<property name='GPano:CroppedAreaLeftPixels' />
			<property name='GPano:CroppedAreaTopPixels' />
			<property name='GPano:SourcePhotosCount' />
			<property name='GPano:FirstPhotoDate' />
			<property name='GPano:LastPhotoDate' />
		</section>
		<section label="Image Size" type="labelled">
			<property name="exif:PixelXDimension"/>
			<property name="exif:PixelYDimension"/>
		</section>
		<section label="GPS" type="labelled">
			<property name='exif:GPSLongitude' />
			<property name='exif:GPSLatitude' />
			<property name='exif:GPSAltitude' />
			<property name='exif:GPSImgDirection' />
			<property name='exif:GPSDestLongitude' />
			<property name='exif:GPSDestLatitude' />
		</section>
	</view>		
</views>

The properties ‘SourcePhotosCount’, ‘FirstPhotoDate’ and ‘LastPhotoDate’ are optional values for a photosphere.

Then open the file info dialog of Photoshop CC 2014. When all the meta data is missing, the new panel looks like this on a german installation:
Custom file info panel within Photoshop CC 2014, empty
And the following screenshot shows the panel, when the meta data fields are already populated.
Custom file info panel within Photoshop CC 2014, populated

Author: PanoTwin Jürgen

PanoTwin Jürgen → My Portfolio

6 thoughts on “How to add mandatory Photo Sphere meta data to an equirectangular image (Photoshop CC 2014)”

    1. Yes, we both use this version since it came out. However one minor problem is, that this does not work (yet) for PSD or PSB output. And also it is quite convenient to check the information directly from PS. Or be able to add the information – especially for older work.

  1. Hello!

    Thank you for this useful solution!

    I was hoping the panel would show up in Bridge CC 2014, too, but that’s not the case. Is it a matter of simply copying the files to another location for Bridge or is a different code necessary?

    Bye, Oliver

  2. I followed these instructions for photoshop cc 2015 but when I open the file info panels, there isn’t anything related to photoshphere. Is there something else I need to do to get ps to recognize the custom file info panel?

    1. The directory structure (on a PC) should look like this:

      %USERPROFILE%\AppData\Roaming\Adobe\XMP\Metadata Extensions\Photosphere
      %USERPROFILE%\AppData\Roaming\Adobe\XMP\Metadata Extensions\Photosphere\schema
      %USERPROFILE%\AppData\Roaming\Adobe\XMP\Metadata Extensions\Photosphere\view

      The files should be:

      %USERPROFILE%\AppData\Roaming\Adobe\XMP\Metadata Extensions\Photosphere\manifest.xml
      %USERPROFILE%\AppData\Roaming\Adobe\XMP\Metadata Extensions\Photosphere\schema\photosphereSchema.xml
      %USERPROFILE%\AppData\Roaming\Adobe\XMP\Metadata Extensions\Photosphere\view\photosphereView.xml

      At least with these files it works with my Photoshop CC 2015 installation.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

QR Code Business Card