Method: photoSequence.create

After the client finishes uploading the PhotoSequence with the returned UploadRef, photoSequence.create extracts a sequence of 360 photos from a video or Extensible Device Metadata (XDM, http://www.xdm.org/) to be published to Street View on Google Maps.

photoSequence.create returns an Operation, with the PhotoSequence Id set in the Operation.name field.

This method returns the following error codes:

HTTP request

POST https://streetviewpublish.googleapis.com/v1/photoSequence

The URL uses gRPC Transcoding syntax.

Query parameters

Parameters
inputType

enum (InputType)

Required. The input form of PhotoSequence.

Request body

The request body contains an instance of PhotoSequence.

Response body

If successful, the response body contains a newly created instance of Operation.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/streetviewpublish

For more information, see the OAuth 2.0 Overview.

PhotoSequence

A sequence of 360 photos along with metadata.

JSON representation
{
  "id": string,
  "photos": [
    {
      object (Photo)
    }
  ],
  "uploadReference": {
    object (UploadRef)
  },
  "captureTimeOverride": string,
  "uploadTime": string,
  "rawGpsTimeline": [
    {
      object (Pose)
    }
  ],
  "gpsSource": enum (GpsSource),
  "imu": {
    object (Imu)
  },
  "processingState": enum (ProcessingState),
  "failureReason": enum (ProcessingFailureReason),
  "failureDetails": {
    object (ProcessingFailureDetails)
  },
  "distanceMeters": number,
  "sequenceBounds": {
    object (LatLngBounds)
  },
  "viewCount": string,
  "filename": string
}
Fields
id

string

Output only. Unique identifier for the photo sequence. This also acts as a long running operation ID if uploading is performed asynchronously.

photos[]

object (Photo)

Output only. Photos with increasing timestamps.

uploadReference

object (UploadRef)

Input only. Required when creating photo sequence. The resource name where the bytes of the photo sequence (in the form of video) are uploaded.

captureTimeOverride

string (Timestamp format)

Optional. Absolute time when the photo sequence starts to be captured. If the photo sequence is a video, this is the start time of the video. If this field is populated in input, it overrides the capture time in the video or XDM file.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

uploadTime

string (Timestamp format)

Output only. The time this photo sequence was created in uSV Store service.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

rawGpsTimeline[]

object (Pose)

Input only. Raw GPS measurements with increasing timestamps from the device that aren't time synced with each photo. These raw measurements will be used to infer the pose of each frame. Required in input when InputType is VIDEO and raw GPS measurements are not in Camera Motion Metadata Track (CAMM). User can indicate which takes precedence using gpsSource if raw GPS measurements are provided in both rawGpsTimeline and Camera Motion Metadata Track (CAMM).

gpsSource

enum (GpsSource)

Input only. If both rawGpsTimeline and the Camera Motion Metadata Track (CAMM) contain GPS measurements, indicate which takes precedence.

imu

object (Imu)

Input only. Three axis IMU data for the collection. If this data is too large to put in the request, then it should be put in the CAMM track for the video. This data always takes precedence over the equivalent CAMM data, if it exists.

processingState

enum (ProcessingState)

Output only. The processing state of this sequence.

failureReason

enum (ProcessingFailureReason)

Output only. If this sequence has processingState = FAILED, this will contain the reason why it failed. If the processingState is any other value, this field will be unset.

failureDetails

object (ProcessingFailureDetails)

Output only. If this sequence has failureReason set, this may contain additional details about the failure.

distanceMeters

number

Output only. The computed distance of the photo sequence in meters.

sequenceBounds

object (LatLngBounds)

Output only. A rectangular box that encapsulates every image in this photo sequence.

viewCount

string (int64 format)

Output only. The total number of views that all the published images in this PhotoSequence have received.

filename

string

Output only. The filename of the upload. Does not include the directory path. Only available if the sequence was uploaded on a platform that provides the filename.

GpsSource

Primary source of GPS measurements.

Enums
PHOTO_SEQUENCE GPS in rawGpsTimeline takes precedence if it exists.
CAMERA_MOTION_METADATA_TRACK GPS in Camera Motion Metadata Track (CAMM) takes precedence if it exists.

Imu

IMU data from the device sensors.

JSON representation
{
  "accelMpsps": [
    {
      object (Measurement3d)
    }
  ],
  "gyroRps": [
    {
      object (Measurement3d)
    }
  ],
  "magUt": [
    {
      object (Measurement3d)
    }
  ]
}
Fields
accelMpsps[]

object (Measurement3d)

The accelerometer measurements in meters/sec^2 with increasing timestamps from devices.

gyroRps[]

object (Measurement3d)

The gyroscope measurements in radians/sec with increasing timestamps from devices.

magUt[]

object (Measurement3d)

The magnetometer measurements of the magnetic field in microtesla (uT) with increasing timestamps from devices.

Measurement3d

A Generic 3d measurement sample.

JSON representation
{
  "captureTime": string,
  "x": number,
  "y": number,
  "z": number
}
Fields
captureTime

string (Timestamp format)

The timestamp of the IMU measurement.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

x

number

The sensor measurement in the x axis.

y

number

The sensor measurement in the y axis.

z

number

The sensor measurement in the z axis.

ProcessingState

The processing state of the sequence. The states move as follows:

     +-------------------------+
     |                         |
 +---v---+  +----------+  +----+----+
 |PENDING+-->PROCESSING+-->PROCESSED|
 +---+---+  +----+-----+  +----+----+
     |           |             |
     |        +--v---+         |
     +-------->FAILED<---------+
              +------+

The sequence may move to FAILED from any state. Additionally, a processed sequence may be re-processed at any time.

Enums
PROCESSING_STATE_UNSPECIFIED The state is unspecified, this is the default value.
PENDING The sequence has not yet started processing.
PROCESSING The sequence is currently in processing.
PROCESSED The sequence has finished processing including refining position.
FAILED The sequence failed processing. See FailureReason for more details.

ProcessingFailureReason

The possible reasons this PhotoSequence failed to process.

Enums
PROCESSING_FAILURE_REASON_UNSPECIFIED The failure reason is unspecified, this is the default value.
LOW_RESOLUTION Video frame's resolution is too small.
DUPLICATE This video has been uploaded before.
INSUFFICIENT_GPS Too few GPS points.
NO_OVERLAP_GPS No overlap between the time frame of GPS track and the time frame of video.
INVALID_GPS GPS is invalid (e.x. all GPS points are at (0,0))
FAILED_TO_REFINE_POSITIONS The sequence of photos could not be accurately located in the world.
TAKEDOWN The sequence was taken down for policy reasons.
CORRUPT_VIDEO The video file was corrupt or could not be decoded.
INTERNAL A permanent failure in the underlying system occurred.
INVALID_VIDEO_FORMAT The video format is invalid or unsupported.
INVALID_VIDEO_DIMENSIONS Invalid image aspect ratio found.
INVALID_CAPTURE_TIME Invalid capture time. Timestamps were from the future.
GPS_DATA_GAP GPS data contains a gap greater than 5 seconds in duration.
JUMPY_GPS GPS data is too erratic to be processed.
INVALID_IMU IMU (Accelerometer, Gyroscope, etc.) data are not valid. They may be missing required fields (x, y, z or time), may not be formatted correctly, or any other issue that prevents our systems from parsing it.
INSUFFICIENT_IMU Too few IMU points.
INSUFFICIENT_OVERLAP_TIME_SERIES Insufficient overlap in the time frame between GPS, IMU, and other time series data.
IMU_DATA_GAP IMU (Accelerometer, Gyroscope, etc.) data contain gaps greater than 0.1 seconds in duration.
UNSUPPORTED_CAMERA The camera is not supported.
NOT_OUTDOORS Some frames were indoors, which is unsupported.
INSUFFICIENT_VIDEO_FRAMES Not enough video frames.
INSUFFICIENT_MOVEMENT Not enough moving data.

ProcessingFailureDetails

Additional details to accompany the ProcessingFailureReason enum. This message is always expected to be used in conjunction with ProcessingFailureReason, and the oneof value set in this message should match the FailureReason.

JSON representation
{

  // Union field details can be only one of the following:
  "insufficientGpsDetails": {
    object (InsufficientGpsFailureDetails)
  },
  "gpsDataGapDetails": {
    object (GpsDataGapFailureDetails)
  },
  "imuDataGapDetails": {
    object (ImuDataGapFailureDetails)
  },
  "notOutdoorsDetails": {
    object (NotOutdoorsFailureDetails)
  },
  "noOverlapGpsDetails": {
    object (NoOverlapGpsFailureDetails)
  }
  // End of list of possible types for union field details.
}
Fields
Union field details. Only one set of details will be set, and must match the corresponding enum in ProcessingFailureReason. details can be only one of the following:
insufficientGpsDetails

object (InsufficientGpsFailureDetails)

See InsufficientGpsFailureDetails.

gpsDataGapDetails

object (GpsDataGapFailureDetails)

See GpsDataGapFailureDetails.

imuDataGapDetails

object (ImuDataGapFailureDetails)

See ImuDataGapFailureDetails.

notOutdoorsDetails

object (NotOutdoorsFailureDetails)

See NotOutdoorsFailureDetails.

noOverlapGpsDetails

object (NoOverlapGpsFailureDetails)

See NoOverlapGpsFailureDetails.

InsufficientGpsFailureDetails

Details related to ProcessingFailureReason#INSUFFICIENT_GPS.

JSON representation
{
  "gpsPointsFound": integer
}
Fields
gpsPointsFound

integer

The number of GPS points that were found in the video.

GpsDataGapFailureDetails

Details related to ProcessingFailureReason#GPS_DATA_GAP. If there are multiple GPS data gaps, only the one with the largest duration is reported here.

JSON representation
{
  "gapDuration": string,
  "gapStartTime": string
}
Fields
gapDuration

string (Duration format)

The duration of the gap in GPS data that was found.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

gapStartTime

string (Duration format)

Relative time (from the start of the video stream) when the gap started.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

ImuDataGapFailureDetails

Details related to ProcessingFailureReason#IMU_DATA_GAP. If there are multiple IMU data gaps, only the one with the largest duration is reported here.

JSON representation
{
  "gapDuration": string,
  "gapStartTime": string
}
Fields
gapDuration

string (Duration format)

The duration of the gap in IMU data that was found.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

gapStartTime

string (Duration format)

Relative time (from the start of the video stream) when the gap started.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

NotOutdoorsFailureDetails

Details related to ProcessingFailureReason#NOT_OUTDOORS. If there are multiple indoor frames found, the first frame is recorded here.

JSON representation
{
  "startTime": string
}
Fields
startTime

string (Duration format)

Relative time (from the start of the video stream) when an indoor frame was found.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

NoOverlapGpsFailureDetails

Details related to PhotoSequenceProcessingFailureReason#NO_OVERLAP_GPS.

JSON representation
{
  "gpsStartTime": string,
  "gpsEndTime": string,
  "videoStartTime": string,
  "videoEndTime": string
}
Fields
gpsStartTime

string (Timestamp format)

Time of first recorded GPS point.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

gpsEndTime

string (Timestamp format)

Time of last recorded GPS point.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

videoStartTime

string (Timestamp format)

Start time of video.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

videoEndTime

string (Timestamp format)

End time of video.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

LatLngBounds

A rectangle in geographical coordinates.

JSON representation
{
  "southwest": {
    object (LatLng)
  },
  "northeast": {
    object (LatLng)
  }
}
Fields
southwest

object (LatLng)

The southwest corner of these bounds.

northeast

object (LatLng)

The northeast corner of these bounds.

InputType

Input forms of PhotoSequence.

Enums
INPUT_TYPE_UNSPECIFIED Not specified. Server will return google.rpc.Code.INVALID_ARGUMENT.
VIDEO 360 Video.
XDM Extensible Device Metadata, http://www.xdm.org