利用经纬度在谷歌地图上显示路径,并打印出当前路径下的道路地址等信息.

此文章使用的rtk数据为,ubuntu下利用串口工具cutecom 保存的log文件.

# -*- coding: utf-8 -*-
from os.path import join
import folium as fm
import os
import xlrd
import pandas as pd
import folium
import numpy as np
import requests
import json
import csv 

def  showmap(root_path,data1):
    #认真的程序员可以将数据的处理和地图分成两个函数,但是注意传值的类型
    num=data1.__len__()
    print(num) 
    m = fm.Map(location=[38.8291223, 115.4533552],zoom_start=65
            # tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
            # tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
            # tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
            # tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
            # attr='default'
    )
    '''初始化地图'''
    places = []
    #针对不同数据,可能需要调试
    for i in range(1,num,1):
        re1 = data1[i][6]
        re2 = data1[i][7]
        # print(re1)
        places.append([float(re1),float(re2)])
    # print(places)
    route = folium.PolyLine(    #polyline方法为将坐标用线段形式连接起来
            places,    #将坐标点连接起来
            # weight=1000,  #线的粗细
            color='purple',  #线的颜色
            # opacity=0.1    #线的透明度
            ).add_to(m)    #将这条线添加到刚才的区域m内
    os.chdir(root_path)
    m.save("driving_fuxingxilu.log.html")  #将结果以HTML形式保存
    #     '''获取两列中每行的数据,并转化为坐标'''
    #     fm.Marker(place, popup='<i>Mt. Hood Meadows</i>').add_to(m)
    # '''用Marker方法在地图上显示点'''
    # m.save('tomapd.html')
    # '''此处可以直接写m,显示地图,但是我这里选用了先生成html文件,为了节省时间'''

def  Information(data1,root_path):
   
    data1 = np.array(data1)
    num=data1.__len__()
    for i in range(1,num,1):
        re1 = data1[i][6]
        re2 = data1[i][7]
        # print(re1,re2)
        # places.append([float(re1),float(re2)])
        url = 'https://restapi.amap.com/v3/geocode/regeo?key=e44f4aea2295e2144d2d1a0358c4cd95&location='+str(re2)+','+str(re1)
        # url = 'https://restapi.amap.com/v3/geocode/regeo?key=e44f4aea2295e2144d2d1a0358c4cd95&location=115.3682364,38.9040826'
        res = requests.get(str(url))
        json_data = json.loads(res.text)
        address = json_data['regeocode']['formatted_address']
        street = json_data['regeocode']['addressComponent']['streetNumber']['street']
        data2 = [data1[i]]+[address]
        os.chdir(root_path)
        deal(data2,i)
        
def deal(item,i):
    # 保存数据到csv文件
    new_item_csv = 'data'
    with open('{}.csv'.format(new_item_csv), 'a', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(item)
        print(i)

def Datacleaning(root_path):
    #认真的程序员可以将数据的处理和地图分成两个函数,但是注意传值的类型
    data = os.path.join(root_path,'fuxingxilu.log')
    '''将数据导入'''
    data1 = []
    with open(data, 'r') as file_to_read:
            while True:
                lines = file_to_read.readline()
                if not lines:
                    break
                head = lines[:6]
                if head != '$GPFPD':
                    continue
                gps_info_ = [i for i in lines.split(',')]
                if len(gps_info_) == 16 and float(gps_info_[2])>123000.760:
                    data1.append(gps_info_)
    data1 = np.array(data1)
    return data1

def main():
    root_path = '/media/robosense/c4900502-bec1-47cf-a8e2-ec8d00ea207f/2021-03-03/3-3/'
    print("运行主函数")
    
    data1=Datacleaning(root_path)
    showmap(root_path,data1)
    Information(data1,root_path)
    

if_name='_main_'
main()




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值