Skip to main content
 首页 » 编程设计

python之如何使用谷歌街景发布 API 将一个全景图连接到多个全景图

2025年05月04日25soundcode

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

我已经使用 Python 发送了以下照片更新请求:

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 全景图吗?如果有人能澄清它的可能性,那就太好了。提前致谢。

请您参考如下方法:

我看到您的请求 URL 是:

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" 
            } 
          }, 
        ] 
      } 
    } 
  ] 
} 

请注意,id 应为上传照片的photoId。