个人中心 我的学堂 我的旅行 退出账号

不会编程,怎么用API下载百度街景?

2017.09.27 | , ,
WSSD设计 WSSD设计

作者:文上上
原文链接

城市规划现状调研往往需要进行现场踏勘,对外地项目来说,事前就制作项目所在地的现状图集将有助于我们更好地现状调研。但是,如何事前获取项目所在地相关图片信息却是个问题。我们知道,街景已经成为了各在线电子地图的三大标配之一(地图、卫星、街景),并且街景已经覆盖了全球大部分城市(这里包括谷歌街景)。因此,利用街景来制作现状图集也有了现实可能性。对于街景图片,我想大家更多的是利用截屏手动制作。这不仅费时费力,而且也容易出现错误。


前段时间看过一篇基于GIS平台的自动、批量实现城市规划现状图集制作的教程,不过该方法需要设计者不仅能熟练掌握GIS平台的基本使用方法,还得对基于GIS平台的Python开发具有一定的了解,且需要掌握Python语言,那我们有没有不学习编程的办法来解决这个问题呢?答案当然,下面就让我们开始这个教程!


实验流程简介

 

百度地图或者其他地图的街景数据,我们一般访问是通过地图的街景查看功能,但是这样的方法我们看到的街景一般是这样的:

qqq.jpg 

直接截图的话,我们会把南北指北针和一些多余的信息给截取进去,而且截取下来的图片也不会特别清楚,那么我们要怎么获取一张干净且较为清楚的街景图呢?

 

这里我们将使用到百度地图开放平台提供的全景静态图API接口来获取这些街景,看到这里,你可能会开始疑惑不解,不过不要着急,接下来,我们一定不会涉及编程!

 

我们的实验流程就是通过百度提供的接口然后设置参数,通过自己编辑的URL来保存图片。

 

百度地图API注册与介绍

 

百度地图全景静态图API与静态图API类似,可轻松实现将全景地图以图片形式嵌入到您的应用中。您只需要设置图片尺寸、经纬度坐标等参数,发送HTTP请求访问百度地图全景静态图服务,便可在您的PC浏览器、手机浏览器、移动APP或者车机显示屏中以图片形式显示您的全景图。——来自百度开放平台官方


简单说就是你编辑一下URL,即可得到下面的图!只有百度的基础logo,图片尺寸可自定。

640.webp (48).jpg

那么,我们该怎么申请到这个API接口密钥呢?

 

1)创建百度地图应用 
      访问百度地图API需要一个信令(AK),打开百度地图开放平台(
http://lbsyun.baidu.com/),点击右上角“API控制台”,即进入了百度地图的开发界面。

640.webp (49).jpg 

2)获取API密钥AK

选择“创建应用”-应用类型勾选“浏览器端”–勾选所用到的服务(一般全选即可),此时就创建好了应用账号,得到“AK”


640.webp (50).jpg 

3)全景静态图API

打开百度地图API的全景静态图API模块,网址:http://lbsyun.baidu.com/index.php?title=viewstatic,这个页面详细介绍了全景静态图API的请求参数及返回数据的情况。


街景图URL构建

 

阅读百度开放平台提供的指南,我们发现一个完整的街景URL是这样构成的:  

                                                                 

http://api.map.baidu.com/panorama/v2?ak=E4805d16520de693a3fe707cdc962045&width=512&height=256&location=116.313393,40.04778&fov=180 

 

直接点击该链接进去的就是一张坐标在116.313393,40.04778全景角度为180度的街景图,我们把图片另存为本地就可以获取本张图片了。

 

640.webp (51).jpg 

通过百度开放平台提供的参数我们发现链接中AK就是我们申请的密钥,width就是图片的宽度,height是图片的高度,location是街景的位置,fov是全景的角度

 

也就是说我们只要修改这几个参数就可以得到我们想要的任意位置的街景图片!

 

那么,我们应该怎么得到我想获得街景的地点的经纬度呢?不要急,我们只要打开百度开放平台—开发—工具支持里的坐标拾取系统即可。

 

640.webp (52).jpg 

在地图上找到你要获得街景的地址,点击,即可自动生成经纬度!

 

640.webp (53).jpg 

然后我修改链接中的参数后重新构建了一个URL:

 

http://api.map.baidu.com/panorama/v2?ak=E4805d16520de693a3fe707cdc962045&width=1024&height=512&location=111.67036,29.051787&fov=180

 

然后,我们就得到了我想要地方的全景街道图了!如果你想相机转变方向的话,再链接后面加上&heading=180(0到360度)即可得到新的角度的街景图,右键另存为即可保存街景!

 

640.webp (54).jpg

通过这个办法,我们就可以通过只修改几个参数就可以把地块周边的现状街景都可以给下载下来啦!

 

扩展内容

 

如果你会Python语言的话,也可以通过自己编写代码来批量获得这些图片,下面放1个我已经构建好的代码。

因为EXE封装还有一点问题,所以暂时还不能发布出来,不过可以共享源码!

 

import requests
import os
from selenium import webdriver

def save_photo(root,url):
   if not os.path.exists(root):
       os.makedirs(root) #若没有街景图片文件夹则自动创建
   m = url.split("&")[3] + " + " + url.split("&")[5] + ".jpeg" #把经纬度和方向作为街景的名称
   name = root + m
   r = requests.get(url)
   with open(name, "wb") as f:
       f.write(r.content)
       f.close()
       print("您选择的街景已经成功保存至E盘街景图片文件夹!感谢您的使用!nnn")
           #来自WSSD设计的编译

while True:
   start = input("【控制界面】n输入【1】软件正常运行,输入【0】软件将结束运行!n")
   if start == "0":
       print("感谢您使用百度街景下载器,来自WSSDS设计!")
       break

   print("【百度街景下载器 V1.0】n欢迎使用<百度街景下载器>n软件版本:0.1 Betan编译日期:2017年09月16日n软件作者:文巍,WSSD技术服务中心n"
     "电子邮件:921386041@qq.comn"
     "这是本软件的第一个公开应用版本,主要目的为了测试!n"
     "Copyright (C) 2015-2017 By WSSD, Technical Service Center, Wei Wen. All Rights Reserved.n"
     "WSSD技术服务中心 文巍 版权所有 2015-2017nn"
     "【街景保存位置】n"
     "E盘//街景图片nn【AK输入】")

   ak = input("请输入您获取的百度秘钥AK:n")
   print("n【系统提示】n软件会自动调用您的Chrome,请在Chrome上选择您需要查看的街景位置坐标,选择复制,粘贴到软件界面即可n")
   a = webdriver.Chrome()
   a.get("http://api.map.baidu.com/lbsapi/getpoint/index.html")
   location = input("【坐标设置】n请输入您拾取的坐标(格式:经度,纬度):n")
   angle = input("请输入您需要的全景的方向角度(0-360):n")
   url = "http://api.map.baidu.com/panorama/v2?ak=" + ak + "&width=1024&height=512&location=" + location + "&fov=180&heading=" + angle
   root = "E://街景图片//"  # 文件保存位置
   save_photo(root,url)
   a.quit()



感谢 WSSD设计 授权分享

欢迎关注他们的微信公众号

微信号:wssddesign

qrcode.bmp


8条评论
DHN积极分子
DHN积极分子 2017-12-05 16:11:39 回复 0

请问,“基于GIS平台的自动、批量实现城市规划现状图集制作”在哪有,能给个链接吗?没找到~

niamiapie 2017-10-26 09:54:43 回复 0

图片最大只能1024*512的啊,还没有截图清楚。。。。

∫~sum
∫~sum 2017-10-25 10:22:11 回复 0

这就是百度的一个bug,普通人没权利下大的全景图,现在已经修复了吧

求真唯你 2017-10-14 13:27:13 回复 0

密钥ak申请不了。

轮回
轮回 2017-09-29 13:16:14 回复 0

说的好 我选择截屏

evan
evan 2017-09-29 10:24:26 回复 0

说的好 我选择截屏

Wanderer
Wanderer 2017-09-27 10:44:06 回复 0

还是没搞懂

借你一生
借你一生 2017-09-27 10:03:41 回复 0

好高级,好复杂的感觉

WSSD设计 WSSD设计

作者:文上上
原文链接

media@archcollege.com
建筑学院来稿须知 关闭
感谢您的关注与支持!我们非常欢迎各类投稿。
几点简单的来稿须知,望您耐心读完。
来稿要求如下:

● 作品类稿件

1、高清项目实景照片/效果图/模型照片/手绘草图
2、高清技术图纸,如:分析图/主要平立剖/总平面/关键节点详图
(图片要求:无水印,格式为JPG,图片分辨率72,宽度大于1200像素)
3、详实的设计说明800字左右(word格式)
4、真实准确的基本项目信息
5、如有项目视频,请提供高清项目视频
6、贵司的LOGO、官网相关信息。(用于注明文章出处及作者)

● 其他稿件

1、配图清晰且无水印图片
2、内容有趣有料,文字流畅通顺。
3、作者姓名,若有公号请提供公号名称及LOGO
我们的编辑将在收到稿件后的3个工作日内审稿并与您取得联系,如果没有刊载也会在3个工作日内您答复。
投稿邮箱:tougao@archcollege.com
如有其他疑问请加微信: jzxy-yz
建筑学院 建筑学院

建筑学院APP

为建筑师而打造的精品应用

点击下载
close
社交账号登录
close
close
close
欢迎加入【建筑学院】
快去完善你的个人信息吧!
完善资料
等下完善
close