用Python绘制GPS(WGS84)坐标轨迹
一、安装依赖
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()
评论已关闭