script_gps.py
2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import pandas as pd
import sys
import folium
import matplotlib.pyplot as plt
from matplotlib.dates import DayLocator, HourLocator, DateFormatter, drange
import numpy as np
from rdp import rdp
def plot_path(df,out):
df2 = pd.DataFrame({\
'GPS_LATITUDE' :list(df['GPS_LATITUDE']),\
'GPS_LONGITUDE' :list(df['GPS_LONGITUDE']),\
'TIME_STAMP' :list(df['TIME_STAMP'])\
})
index_with_nan = df2.index[df2.isnull().any(axis=1)]
df2.drop(index_with_nan,0, inplace=True)
df2.reset_index(drop = True, inplace = True)
coordinates=np.array([np.array(df2['GPS_LATITUDE']),np.array(df2['GPS_LONGITUDE'])]).transpose()
#coordinates=rdp(coordinates,epsilon=0.000005)
print(coordinates.shape[0])
_map = folium.Map(location=[coordinates[0,0],coordinates[0,1]], zoom_start=20)
for i in range(len(coordinates)):
folium.Marker([coordinates[i,0],coordinates[i,1]],\
popup=str(i),\
icon=folium.Icon(color='green')).add_to(_map)
folium.Marker([coordinates[0,0],coordinates[0,1]],\
popup="A",\
icon=folium.Icon(color='green')).add_to(_map)
folium.Marker([coordinates[coordinates.shape[0]-1,0],coordinates[coordinates.shape[0]-1,1]],\
popup="B",\
icon=folium.Icon(color='red')).add_to(_map)
"""
_map = folium.Map(location=[df2['GPS_LATITUDE'][0],df2['GPS_LONGITUDE'][0]], zoom_start=20)
for i in range(len(df2['GPS_LATITUDE'])):
folium.Marker([df2['GPS_LATITUDE'][i],df2['GPS_LONGITUDE'][i]],\
popup=str(i),\
icon=folium.Icon(color='green')).add_to(_map)
folium.Marker([df2['GPS_LATITUDE'][0],df2['GPS_LONGITUDE'][0]],\
popup="A",\
icon=folium.Icon(color='green')).add_to(_map)
folium.Marker([df2['GPS_LATITUDE'][df2.shape[0]-1],df2['GPS_LONGITUDE'][df2.shape[0]-1]],\
popup="B",\
icon=folium.Icon(color='red')).add_to(_map)
print("nbr_points = "+str(df2.shape[0]))
"""
"""
L=[]
for i in range(df2.shape[0]):
L+=[[df2['GPS_LATITUDE'][i],df2['GPS_LONGITUDE'][i]]]
folium.PolyLine(L, tooltip="Journey", color='red').add_to(_map)
"""
_map.save(out)
def plot_magnitude(df,label,unit,x=None):
df2 = pd.DataFrame({\
label :list(df[label]),\
'TIME_STAMP' :list(df['TIME_STAMP'])\
})
index_with_nan = df2.index[df2.isnull().any(axis=1)]
df2.drop(index_with_nan,0, inplace=True)
df2.reset_index(drop = True, inplace = True)
if x!=None:
index_with_x =df2.index[df2[label]>x]
df2.drop(index_with_x,0, inplace=True)
df2.reset_index(drop = True, inplace = True)
fig, ax = plt.subplots()
ax.plot(df2['TIME_STAMP'],df2[label])
plt.xticks(np.linspace(0,df2.shape[0]-1,5,endpoint=True),fontsize=6)
plt.ylabel(unit)
fig.autofmt_xdate()
plt.title(label)
plt.savefig('{}.png'.format(label), format='png')
plt.close(fig)
input_file = sys.argv[1]
output_file = sys.argv[2]
df = pd.read_csv(input_file)
plot_path(df,output_file)
plot_magnitude(df,"GPS_ALTITUDE","in m")
plot_magnitude(df,"GPS_SPEED","in m/s",100)
plot_magnitude(df,"PID_SPEED","in km/h")