|
|
|
|
|
|
|
|
parser.add_argument("-f", "--gps_file", required=True, help="GPS csv file.") |
|
|
parser.add_argument("-f", "--gps_file", required=True, help="GPS csv file.") |
|
|
parser.add_argument("-s", "--serial_file", required=True, help="Serial csv file.") |
|
|
parser.add_argument("-s", "--serial_file", required=True, help="Serial csv file.") |
|
|
parser.add_argument("-p", "--pcap_csv_folder", required=True, help="PCAP csv folder.") |
|
|
parser.add_argument("-p", "--pcap_csv_folder", required=True, help="PCAP csv folder.") |
|
|
parser.add_argument("-a", "--column", required=True, help="Column to plot") |
|
|
|
|
|
parser.add_argument("-l", "--label", help="Label above the plot.") |
|
|
|
|
|
parser.add_argument("--no_legend", action="store_false", default=True, help="Do not show legend.") |
|
|
|
|
|
parser.add_argument("--save", default=None, help="Location to save pdf file.") |
|
|
parser.add_argument("--save", default=None, help="Location to save pdf file.") |
|
|
parser.add_argument("--time_offset", default=None, type=int, help="Minutes added to GPS datetime.") |
|
|
parser.add_argument("--time_offset", default=None, type=int, help="Minutes added to GPS datetime.") |
|
|
parser.add_argument("--no_plot", default=False, action="store_true", help="Only calculations without plotting.") |
|
|
|
|
|
|
|
|
|
|
|
parser.add_argument( |
|
|
|
|
|
"--show_providerinfo", |
|
|
|
|
|
default=False, |
|
|
|
|
|
help="Show providerinfo for map tiles an zoom levels.", |
|
|
|
|
|
) |
|
|
|
|
|
parser.add_argument( |
|
|
parser.add_argument( |
|
|
"-c", |
|
|
"-c", |
|
|
"--cores", |
|
|
"--cores", |
|
|
|
|
|
|
|
|
df_wm = gdf.to_crs(epsg=3857) |
|
|
df_wm = gdf.to_crs(epsg=3857) |
|
|
#df_wm.to_csv("debug-data.csv") |
|
|
#df_wm.to_csv("debug-data.csv") |
|
|
# ax2 = df_wm.plot(figsize=(10, 10), alpha=0.5, edgecolor='k') |
|
|
# ax2 = df_wm.plot(figsize=(10, 10), alpha=0.5, edgecolor='k') |
|
|
if args.no_plot: |
|
|
|
|
|
df_wm.to_csv("{}gps_plot.csv".format(args.save)) |
|
|
|
|
|
print("Saved calculations to: {}gps_plot.csv".format(args.save)) |
|
|
|
|
|
exit(0) |
|
|
|
|
|
|
|
|
|
|
|
print("Start plotting...") |
|
|
|
|
|
|
|
|
|
|
|
ax2 = df_wm.plot() |
|
|
|
|
|
ax2 = df_wm.plot(args.column, cmap="hot", legend=args.no_legend, ax=ax2) |
|
|
|
|
|
# ax2 = df_wm.plot.scatter(x="longitude", y="latitude", c="kmh", cmap="hot") |
|
|
|
|
|
# zoom 17 is pretty |
|
|
|
|
|
cx.add_basemap(ax2, source=cx.providers.OpenStreetMap.Mapnik, zoom=15) |
|
|
|
|
|
|
|
|
|
|
|
# gdf.plot() |
|
|
|
|
|
ax2.set_axis_off() |
|
|
|
|
|
ax2.set_title(args.label if args.label else args.column) |
|
|
|
|
|
|
|
|
|
|
|
if args.show_providerinfo: |
|
|
|
|
|
##################################### |
|
|
|
|
|
# Identifying how many tiles |
|
|
|
|
|
latlon_outline = gdf.to_crs("epsg:4326").total_bounds |
|
|
|
|
|
def_zoom = cx.tile._calculate_zoom(*latlon_outline) |
|
|
|
|
|
print(f"Default Zoom level {def_zoom}") |
|
|
|
|
|
|
|
|
|
|
|
cx.howmany(*latlon_outline, def_zoom, ll=True) |
|
|
|
|
|
cx.howmany(*latlon_outline, def_zoom + 1, ll=True) |
|
|
|
|
|
cx.howmany(*latlon_outline, def_zoom + 2, ll=True) |
|
|
|
|
|
|
|
|
|
|
|
# Checking out some of the other providers and tiles |
|
|
|
|
|
print(cx.providers.CartoDB.Voyager) |
|
|
|
|
|
print(cx.providers.Stamen.TonerLite) |
|
|
|
|
|
print(cx.providers.Stamen.keys()) |
|
|
|
|
|
##################################### |
|
|
|
|
|
|
|
|
|
|
|
# df.plot(x="longitude", y="latitude", kind="scatter", colormap="YlOrRd") |
|
|
|
|
|
|
|
|
|
|
|
if args.save: |
|
|
|
|
|
plt.savefig("{}gps_plot.pdf".format(args.save)) |
|
|
|
|
|
else: |
|
|
|
|
|
plt.show() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
df_wm.to_csv("{}gps_plot.csv".format(args.save)) |
|
|
|
|
|
print("Saved calculations to: {}gps_plot.csv".format(args.save)) |