使用百度api下载特定区域内百度街景照片数据
一、常规方法
1.下载路网数据
1.1 下载路网数据
使用Open Street Map(OSM)下载,获取OSM数据方法有许多,可以直接在官网下载,用QGIS软件下载,也可以下载ArcGIS Editor for OpenStreetMap插件进行下载,这里采用第一种方法。参考网址。
方法1:网站直接下载
(1)可以通过官网下载世界各地的OpenStreetMap地图矢量数据:http://download.geofabrik.de/。

(2)以武汉为例,在Sub Region内依次选择“Asia”“China”,即可看到各个省份,选择.shp.zip数据,单击直接下载,解压后,就可以在ArcGIS直接打开了。数据量很庞大,需要自己先整理。OSM数据定期更新。

(3)解压后文件如下,选择加载路网数据到arcgis即可:

方法2 通过ArcGIS Editor for OpenStreetMap插件下载
(1)ArcGIS Editor for OpenStreetMap 是一个免费开源的 ArcGIS Desktop 插件,可以在ESRI的网站下载,不同版本的ArcGIS对应的插件版本也不同,如10.1、10.2、10.3的都不一样。https://www.esri.com/en-us/arcgis/products/arcgis-editor-for-openstreetmap。(但这种办法很容易arcgis卡死,不知道是不是非正版的原因,故不推荐)
(2)单击download ArcGIS Editor for OpenStreetMap Now,选择对应版本,以10.8为例。


(3)解压文件后得到下图所示文件夹,根据不同的windows系统选择,64位则点击64-bit文件夹,双击setup.exe安装,一直点击下一步即可;
![]()
![]()
![]()
(4)安装后在ArcToolbox就会显示,OpenStreetMap Toolbox的工具
5.单击Download OSM data就可以下载地图数据,注意是没有XAPI的那个,既可以以经纬度确定范围,只需在Top、Bottom、Left、Right输入经纬度即可,但是范围不能过大,否则无法下载,会提示【Extend of download】超过范围。

6.也可以用原有的矢量图(shp文件)进行框定范围,进行下载,同样对范围有所限制,为了下载武汉市的数据,将武汉市地图切成几十块分块下载;

7.在Extent of data download选择The same as某一个区域,Target feature dataset选择保存路径,路径为好保存在文件地理数据库中,避免出错。

方法3:网站直接下载再经过ArcGIS Editor for OpenStreetMap插件工具转换(暂未尝试仅作记录)
1.ArcGIS Editor for OpenStreetMap还提供数据转换的工具,具体方法为,首先是进入OSM网站首页,http://www.openstreetmap.org/

2.单击【导出】,下拉滑轨,可以看到页面左边列出来许多来源

3.这里可以直接选择经纬度范围进行下载,但是注意下载后的数据是osm后缀名格式的,需要其他软件或者插件(比如ArcGIS Editor for OpenStreetMap插件)进行转换成shp格式。


4.这里我运用ArcGIS Editor for OpenStreetMap插件(插件的具体安装下载过程稍后介绍)进行演示如何转换。


6.选择【Load OSM file】,打开对话框,在OSM File栏选择之前下载的map.osm数据,在Target feature dataset栏选择目标路径,其他不用选,单击OK。路径最好放在文件地理数据库里,这样转换出错的几率小一点。


7.转换结果,数据保存在一个地理数据集test1里面,OSM的数据分为点、线、面三类,具体的分类可以参考这些网站:
http://wiki.openstreetmap.org/wiki/Zh-ant:Map_Features#.E9.81.93.E8.B7.AF_.28highway.29
https://wiki.openstreetmap.org/wiki/WikiProject_China



方法4 使用QGIS软件获取(暂未尝试仅作记录)
QGIS下载也有多种方法,这里介绍其中两种,第一种是再软件里下载,比较方便。首先下载QGIS软件,在QGIS软件菜单栏选址Vector-再点击Openstreetmap-Download Data
打开OSM网站,选择范围;


选择Manual填写范围下载
第二种是先在OSM官网下载好数据

下载的数据后缀为osm,可以用QGIS软件打开,直接显示(如果不显示则如要导入投影坐标系)然后再QGIS的内容列表选择数据右键单击-选择Geometry Tools-单击Export/Add geometry colums导出为shp后缀的数据,即可在ArcGIS软件中编辑使用。


2.剪裁道路及采点
(1)使用紫菘片区的shp图层对路网数据进行裁剪(shp为自己绘制的面图层),在“工具”中选择“裁剪(分析)”,注意输入为线图层,裁剪要素为面图层(区域范围):


(2)剪裁得到路网数据后,使用Ian Broad开发的Create Points on Polylines with ArcPy工具箱进行采点。可以去工具箱的链接下载tbx文件,将其添加到arcmap的工具箱中即可;类型选“INTERVAL BY DISTANCE",然后 Distance字段填 0.0005。这样大概就是每条路间隔 50 米取一个点。(也可以用直接用arcmap自带的工具“沿线生成点”);




(2)在属性表里新建经纬度的字段,并计算几何得到对应的经纬度(此时为WGS1984坐标);



(3)将采点图层的属性表信息(经纬度)导出.dbf文件,使用excel打开.dbf文件,修改为以下格式,并另存为.csv文件:

3.申请百度地图ak
(1)进入百度地图开放平台并登录自己的百度账号:https://lbsyun.baidu.com/

(2)在“控制台-个人中心-开发者认证”,注册成为个人开发者(上传相关资料,三个工作日内通过验证)。

(3)注册成功后,点击“控制台-应用管理-我的应用-创建应用”。

(4)填写应用信息
-
- 应用名称,无限制随意填写即可;
- 启用服务(全选即可)
- 应用类型 ,选择
服务端; - IP白名单,个人简单测试按提示添
0.0.0.0/0即可,如果考虑安全问题,可以将自己的IP 填进去, AK参数泄露的话非本机IP 无法访问,这样也不用担心额度被其他用户盗用;


(5)得到ak后,可以在“额度管理”中查看免费额度,百度地图全景静态图API属于高级权限,需要联系申请,可得三个月试用(100次/天);

(6)查看接口介绍
-
- width设置为1024,height设置为512;
- 经纬度坐标location从文件中读取;coordtype设置为wgs84ll
- 水平方向范围设置为360,即全景图


二、非常规方法
1.分析
打开百度地图的街景模式,f12打开开发者模式,清空所有响应,并点击向前,可以看到产生了很多的图片请求,该街景图片是异步加载的,分析这些请求的作用:

(1)https://mapsv0.bdimg.com/?qt=qsdata&x=13361258.73664768&y=3518572.1440338427&time=201709&mode=day
为简便,以下请求均不带auth参数,不影响结果获取;根据地图上点击的位置,生成百度地图坐标x和y值,再得到服务器的json响应,如下id即为该位置的百度街景ID(也就是后续要用到的panoID)


(2)https://mapsv0.bdimg.com/?qt=sdata&sid=09000200011604191116496148H&pc=1
该请求包含了panoID参数,返回该位置的街景相关信息(附近panoID,以及该位置的历史图片,拍摄时期等等)json响应如下图所示:

(3)https://mapsv0.bdimg.com/?qt=guide&sid=09000200011604191116496148H&fn=jsonp40485655
作用:获取该位置附近的公司或学校。json响应如下图所示:


(4)一组请求https://mapsv0.bdimg.com/?qt=pdata&sid=09000200011604191116496148H&pos=1_0&z=4
https://mapsv0.bdimg.com/?qt=pdata&sid=09000200011604191116496148H&pos=1_7&z=4
……
https://mapsv0.bdimg.com/?qt=pdata&sid=09000200011604191116496148H&pos=2_0&z=4
https://mapsv0.bdimg.com/?qt=pdata&sid=09000200011604191116496148H&pos=2_7&z=4
……
作用为获取从左至右的街景图,其中参数pos=1_*表示高角度,pos=2_*表示低角度,一共是8张,这样就拼成了百度街景一整张大图。而下载道路只需要低角度的四张。因此我们要得到街景图片,首先要获取街街道对应位置的街景ID,然后通过模拟上述图片请求即可。
浙公网安备 33010602011771号