百度地图python_python百度地图API爬取街景

QGIS导入数据教程

一、在openstreetmap官网中获取目标区域的四个经纬度值

1、打开OSM官网,将地图定位在需要下载的区域

2、选择 导出----手动选择不同区域,在地图上会出现选择框,根据需要选好区域

百度地图python_python百度地图API爬取街景_第1张图片

二、用QGIS获取目标区域的开放街道数据,取得路网数据

1、打开QGIS选择 矢量----开放街道图----下载数据

2、范围----手动,复制OSM上的坐标,然后点击确定

3、添加矢量,导入数据,主要选择lines

百度地图python_python百度地图API爬取街景_第2张图片

4、在QGIS菜单栏中,矢量----几何工具----导出/添加几何字段

ArcGis自动布点教程

1、在ARCMAP中导入路网要素shp文件,将其投影成UTM坐标。系统工具箱----data management tools----投影和变换----要素----投影。双击打开投影后,在输入要素类选择shp文件,输出坐标系选择投影坐标系----UTM----WGS1984----northern hemisphere----WGS 1984 UTM zone 48N(成都是48N,其他区域需自己确定)

2、将投影后的数据导出成shp文件,添加到新的图层中。

3、对UTM坐标下的路网数据进行采样操作。系统工具箱----editing tool----增密。双击打开后,输入要素选择要素shp文件,增密方法选择distant,即按距离采样点,在距离栏输入间隔距离,点击确定。

4、增密成功后,选择系统工具箱----data management tools----要素----要素折点转点,双击打开后选择要素文件,确定即可。

5、生成采样点后,将数据导出成shp文件,将其再投影回WGS坐标。系统工具箱----data management tools----投影和变换----要素----投影。双击打开投影后,在输入要素类选择shp文件,输出坐标系选择地理坐标系----world----WGS1984。坐标转回WGS后再次导出数据生成shp文件

6、打开点数据的属性表,添加字段,名称“X”和“Y”,类型为“浮点型”,精度为10,小数点选择6位,选中新添加的列,右键选择“计算几何”,最后导出属性表为txt文件。用excel打开,使用逗号分隔,另存为excel。

7、然后将坐标系转换为百度坐标系。(地球坐标转百度坐标)

百度地图API爬取街景

1、用到如下两个文件,一个excel文件,一个python文件

百度地图python_python百度地图API爬取街景_第3张图片

#-*-coding:utf-8-*-

import os

import os.path

from xlrd import *

import urllib.request

import sys

import time

import socket

import urllib.error

def sleep(mytime= ''):

time.sleep(mytime)

def download(url, name):

try:

conn = urllib.request.urlopen(url,timeout=5)

flag = 1

except:

#except urllib.error.URLError as e:

#if isinstance(e.reason, socket.timeout):

#print("Time out!")

flag = 0

if flag == 0:

return flag

else:

return conn

data = open_workbook('./TwoRingRoad_百度坐标.xlsx')

SamplePoint = data.sheet_by_name(u'Sheet1')

nrows = SamplePoint.nrows

ncols = SamplePoint.ncols

valueName = []

valueLongitude = []

valueLatitude = []

for i in range(nrows-1):

valueName.append(SamplePoint.cell(i + 65 ,0).value)

valueLongitude.append(SamplePoint.cell(i + 65, 1).value)

valueLatitude.append(SamplePoint.cell(i + 65, 2).value)

print(valueName[-1])

print(valueLongitude[-1])

print(valueLatitude[-1])

key = "你申请的key"

for heading in [90, 180, 270, 360]:

url = "http://api.map.baidu.com/panorama/v2?ak=" + key + "&width=480&height=360&heading=" + str(heading) + "&pitch=30&location=" + str(valueLongitude[-1]) + "," + str(valueLatitude[-1]) + "&fov=90"

outname = "G:\\streetviewdownloads\\30baidustreetview\\" + str(valueName[-1]) + "_" + str(valueLongitude[-1]) + "_" + str(valueLatitude[-1]) + "_" + "30_" + str(heading) + ".jpg"

print(outname)

print (url)

flag = 0

while( flag == 0 ):

conn = download(url, outname)

if conn == 0:

flag = 0

print('received fall call pause')

sleep(30) # pause 30S

else:

f = open(outname, 'wb')

f.write(conn.read())

f.close()

print('Picture Saved!')

flag = 1

print('call delay')

sleep(1) # delay 1s

你可能感兴趣的:(百度地图python)