hello hello GIS辣妹来了,今天给大家带了基于百度街景和DeepLabv3Plus-Pytorch的街景绿视率计算,过程比较复杂,但是现在这个应该是最简单而且准确率比较高的方式了,并且不需要标注样本,直接用模型的就可以~~
一、GIS中生成道路采样点
1.首先你需要根据你的路网在GIS软件中沿路网打点(我用的ArcGIS Pro),工具用的是沿线生成点(Generate Points Along Lines),参数解释如下
2.计算采样点的经纬度(地理坐标系下的),参数设置如下,注意一定要是度为单位(degree)
3.将矢量点转换为表格,用于下一步街景爬取
二.基于python的百度街景获取
1.API获取
在百度地图开放平台首先要申请服务端的API,但是服务端的API是没有全景静态图的权限的,所以我们要去申请,可以申请教育用途,会有三个月的试用(但是每天只有0.1万条,所以不建议,如果用量少可以考虑),大家可以拿着自己的采样点表格去某tao买全景,也就几十。如果申请了全景静态API请看本章下一条抓取全景静态图代码,如果是某tao购买了请跳转第三章。
2.基于python抓取采样点街景图
在这里我直接贴代码,基本上采样点有的图片就会保存到结果文件夹了,我建议还是去某tao买全景的,因为我这个是一个点四个图,到时候不太好算
import os
import urllib.request
import pandas as pd
# 百度API的访问密钥
api_key = "请替换成你的api"
# 经纬度数据加载
df = pd.read_csv('coordinates.csv') # 请替换成你的采样点坐标表格路径
output_folder = 'panorama_images/' # 请替换成你的图片保存的文件夹路径
output_excel = 'downloaded_panorama_info.xlsx' # 导出的Excel文件名,记录成功下载的街景,因为有些点位会没有街景,就会判断跳过
# 如果保存路径不存在,则创建
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 初始化记录列表
downloaded_info = []
# 下载图片的函数
def download_image(url, name, lat, lon, heading):
try:
conn = urllib.request.urlopen(url)
content = conn.read()
# 检查返回内容是否为图像数据(简单判断)
if content[:8] == b'\x89PNG\r\n\x1a\n' or content[:2] == b'\xff\xd8'