QGIS导入数据教程
一、在openstreetmap官网中获取目标区域的四个经纬度值
1、打开OSM官网,将地图定位在需要下载的区域
2、选择 导出----手动选择不同区域,在地图上会出现选择框,根据需要选好区域
二、用QGIS获取目标区域的开放街道数据,取得路网数据
1、打开QGIS选择 矢量----开放街道图----下载数据
2、范围----手动,复制OSM上的坐标,然后点击确定
3、添加矢量,导入数据,主要选择lines
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文件
#-*-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