一、安装依赖

     1、folium, 地图显示

        pip3   install     folium

     2、coord-convert,坐标转换

      pip3 install coord-convert

   或源码安装

   git clone https://github.com/sshuair/coord-convert.git

   pip install -r requirements.txt

   python setup.py install


       

二、代码实现

     import os
import sys
import pandas as pd
import numpy as np

#import  matplotlib.pyplot as plt

import  folium
from pyproj import Transformer
from coord_convert.transform import wgs2gcj, wgs2bd, gcj2wgs, gcj2bd, bd2wgs, bd2gcj




def     Load_GNSS_Dataset(csv_file):
    data = pd.read_csv(csv_file)
    #print(data, type(data))
    frame = pd.DataFrame(data)
    t = frame.iloc[:, 0]
    lat = frame.iloc[:, 1]
    lon = frame.iloc[:, 2]
    alt = frame.iloc[:, 3]

    return  t.to_numpy(), lat.to_numpy(), lon.to_numpy(), alt.to_numpy()
    
    
    
def     Show_GPS_Trajectory_Map(argv):
    gnss_file = argv[0]
    t, wgs84_lats, wgs84_lons, wgs84_alts = Load_GNSS_Dataset(gnss_file)
    #lons, lats = wgs2gcj(wgs84_lons[0], wgs84_lats[0])
    Lats = []
    Lons = []
    for  i in range(len(wgs84_lats)):
        gcj_lon, gcj_lat = wgs2gcj(wgs84_lons[i], wgs84_lats[i])
        Lats.append(gcj_lat)
        Lons.append(gcj_lon)
    lats = np.array(Lats)
    lons = np.array(Lons)

    # create map
    Map = folium.Map(
            location=[lats[0], lons[0]], #map center
            zoom_start=12,
            tiles= 'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7',
            attr='高德-常规图',
            
            #tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}',
            #attr='彩色版'

            #tiles =  'https://rt0.map.gtimg.com/tile?z={z}&x={x}&y={-y}',
            #attr='腾讯地图'
            )
    folium.PolyLine(locations=[list(zip(lats, lons))], color='blue', weight=5).add_to(Map)
    Map.save('GPS_track.html');



if __name__ == "__main__":
    if len(sys.argv)<2:
        print("Usage:\n  < GPS csv>")
        sys.exit()
    #print(sys.argv[1:], type(sys.argv[1:]))
    if 2== len(sys.argv):
        sys.exit(Show_GPS_Trajectory_Map(sys.argv[1:]))
    else:
        sys.exit()





















标签: none

评论已关闭