python百度地图API爬取街景

QGIS导入数据教程

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

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

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

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

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

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

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

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

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百度地图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爬虫)