小能豆

如何使用 Google 街景发布 API 将一幅全景图连接到多幅全景图?

py

我在 Python 中使用 photo.update 请求连接全景图(360 全景图像)。我只能将一个全景图连接到另一个全景图,但我想将一个全景图连接到多个全景图。我没有得到成功的结果。

我已经使用 Python 发送了以下 photoUpdate 请求:

update_photo_url = 'https://streetviewpublish.googleapis.com/v1/photo/{}?key={}&updateMask=connections'.format("pano_1","AIzdesdfyxscvvvvvvvvvvvvvvv")

headers = {"Authorization": "Bearer {}".format("ya29.Glx6BO91jWbjzLQKYPvP16fhT-jyOEnIdnoRcZcU9uYCqzwH3Dkuf-qf_kzUc2ykYOyVTZCfaGjOEAScsJK7WgS4NE9gfS6bSobWDIMdfpfY7SPzRMmxi4kfTrmsRQ"), "Content-Length": "0", "Content-Type": "application/json"}

update_body = {
[
{
"photo": {
  "photoId": {
    "id": "pano_1"
  },
  "connections": {
    "target": {
      "id": "pano_2"
    },
    "target": {
      "id": "pano_3"
    }
  },
}
}
]
}
update_response = requests.put(update_photo_url,headers=headers,json=update_body)
update_response.text  

错误:

{
    "error": {
        "code": 400,
        "message": "Invalid JSON payload received. Unknown name \"\": Root element must be a message.",
        "status": "INVALID_ARGUMENT",
        "details": [
            {
                "@type": "type.googleapis.com/google.rpc.BadRequest",
                "fieldViolations": [
                    {
                        "description": "Invalid JSON payload received. Unknown name \"\": Root element must be a message."
                    }
                ]
            }
        ]
    }
}  

有人知道如何从源全景图连接多个 360 全景图吗?如果有人能阐明这种可能性,那就太好了。提前谢谢。


阅读 9

收藏
2024-10-29

共1个答案

小能豆

我看到您的请求网址是:

https://streetviewpublish.googleapis.com/v1/photo/{}?key={}&updateMask=connections'.format("pano_1","AIzdesdfyxscvvvvvvvvvvvvvvv")

为了连接多张照片,需要使用batchUpdate方法。

HTTP 请求

POST https://streetviewpublish.googleapis.com/v1/photos:batchUpdate?

以下是使用 curl 的示例请求:

curl --request POST \
    --url 'https://streetviewpublish.googleapis.com/v1/photos:batchUpdate' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '{
              "updatePhotoRequests": [
            {
            "updateMask": "connections",
               "photo": {
                "photoId": {
                   "id": "pano_1"
                },
                "connections": [
                   {
                       "target": {
                        "id": "pano_2"
                         }
                           },
                           {
                       "target": {
                        "id": "pano_3"
                             }
                           }
                        ]
                        }
                   }
                ]
              }'

更新: 如果我有四个全景图,并且我想连接 pano_1 -> pano_2、pano_3 和 pano_3 -> pano_4,那么 json 格式会是什么?

您应该将 pano_4 作为与 pano_3 连接的目标。

{
  "updatePhotoRequests": [
    {
      "updateMask": "connections",
      "photo": {
        "photoId": {
          "id": "pano_3"
        },
        "connections": [
          {
            "target": {
              "id": "pano_4"
            }
          },
        ]
      }
    }
  ]
}

请注意,应该idphotoId上传的照片。

2024-10-29