diff --git a/calc_gps_map_csv.py b/calc_gps_map_csv.py index 6b91778..a62db8b 100755 --- a/calc_gps_map_csv.py +++ b/calc_gps_map_csv.py @@ -2,6 +2,7 @@ import multiprocessing import os from argparse import ArgumentParser +from datetime import datetime from math import ceil from time import sleep @@ -53,6 +54,7 @@ if __name__ == "__main__": parser.add_argument("--save", default=None, help="Location to save pdf file.") parser.add_argument("--time_offset", default=0, type=int, help="Minutes added to GPS datetime.") parser.add_argument("--neg_offset", default=False, action="store_true", help="Subtract GPS time offset.") + parser.add_argument("--auto_offset", default=False, action="store_true", help="Calculate GPS time offset.") parser.add_argument( "-c", "--cores", @@ -132,13 +134,24 @@ if __name__ == "__main__": # load dataframe an put it into geopandas df = pd.read_csv(args.gps_file) df["kmh"] = df["speed (knots)"].apply(lambda x: x * 1.852) - if args.time_offset > 0: + if not args.auto_offset and args.time_offset > 0: if args.neg_offset: df["datetime"] = pd.to_datetime(df["datetime"]) - pd.Timedelta(minutes=args.time_offset) else: df["datetime"] = pd.to_datetime(df["datetime"]) + pd.Timedelta(minutes=args.time_offset) + elif args.auto_offset: + gps_first = datetime.strptime(df["datetime"].iloc[0], "%Y-%m-%d %H:%M:%S.%f") + pcap_first = datetime.strptime(transmission_df["datetime"].iloc[0], "%Y-%m-%d %H:%M:%S.%f") + calc_offset = gps_first - pcap_first + if gps_first > pcap_first: + time_offset = gps_first - pcap_first + df["datetime"] = pd.to_datetime(df["datetime"]) - time_offset + else: + time_offset = pcap_first - gps_first + df["datetime"] = pd.to_datetime(df["datetime"]) + time_offset else: df["datetime"] = pd.to_datetime(df["datetime"]) + df = df.set_index("datetime") df.index = pd.to_datetime(df.index)