Adds support automatic timestamp offset calculation.

This commit is contained in:
Lukas Prause
2023-06-27 15:42:22 +02:00
parent 6f1f5afa07
commit 30fa09168e

View File

@@ -2,6 +2,7 @@
import multiprocessing import multiprocessing
import os import os
from argparse import ArgumentParser from argparse import ArgumentParser
from datetime import datetime
from math import ceil from math import ceil
from time import sleep 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("--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("--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("--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( parser.add_argument(
"-c", "-c",
"--cores", "--cores",
@@ -132,13 +134,24 @@ if __name__ == "__main__":
# load dataframe an put it into geopandas # load dataframe an put it into geopandas
df = pd.read_csv(args.gps_file) df = pd.read_csv(args.gps_file)
df["kmh"] = df["speed (knots)"].apply(lambda x: x * 1.852) 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: if args.neg_offset:
df["datetime"] = pd.to_datetime(df["datetime"]) - pd.Timedelta(minutes=args.time_offset) df["datetime"] = pd.to_datetime(df["datetime"]) - pd.Timedelta(minutes=args.time_offset)
else: else:
df["datetime"] = pd.to_datetime(df["datetime"]) + pd.Timedelta(minutes=args.time_offset) 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: else:
df["datetime"] = pd.to_datetime(df["datetime"]) df["datetime"] = pd.to_datetime(df["datetime"])
df = df.set_index("datetime") df = df.set_index("datetime")
df.index = pd.to_datetime(df.index) df.index = pd.to_datetime(df.index)