Renames column date_and_time to datetime.
This commit is contained in:
57
format_gps_to_csv.py
Normal file → Executable file
57
format_gps_to_csv.py
Normal file → Executable file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
import csv
|
||||||
|
from datetime import datetime
|
||||||
|
import math
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = ArgumentParser()
|
||||||
|
parser.add_argument("-f", "--file", required=True, help="NMEA file.")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
epoch = datetime.utcfromtimestamp(0)
|
||||||
|
|
||||||
|
outputfile = open(args.file.replace("nmea", "csv"), "w")
|
||||||
|
writer = csv.writer(outputfile, delimiter=",", lineterminator="\n")
|
||||||
|
writer.writerow(
|
||||||
|
["datetime", "time_epoch", "latitude", "longitude", "speed (knots)", "systime_epoch"]
|
||||||
|
)
|
||||||
|
csv_string = ""
|
||||||
|
|
||||||
|
for line in open(args.file, "r").readlines():
|
||||||
|
if line.startswith("$GPRMC"):
|
||||||
|
row = line.split(",")
|
||||||
|
|
||||||
|
time = row[1]
|
||||||
|
lat = row[3]
|
||||||
|
lat_direction = row[4]
|
||||||
|
lon = row[5]
|
||||||
|
lon_direction = row[6]
|
||||||
|
speed = row[7]
|
||||||
|
date = row[9]
|
||||||
|
systime_epoch = row[13] if len(row) < 14 else 0
|
||||||
|
|
||||||
|
date_and_time = datetime.strptime(date + " " + time, "%d%m%y %H%M%S.%f")
|
||||||
|
time_since_epoch = date_and_time.timestamp()
|
||||||
|
date_and_time = date_and_time.strftime("%y-%m-%d %H:%M:%S.%f") # [:-3]
|
||||||
|
|
||||||
|
lat = round(math.floor(float(lat) / 100) + (float(lat) % 100) / 60, 6)
|
||||||
|
if lat_direction == "S":
|
||||||
|
lat = lat * -1
|
||||||
|
|
||||||
|
lon = round(math.floor(float(lon) / 100) + (float(lon) % 100) / 60, 6)
|
||||||
|
if lon_direction == "W":
|
||||||
|
lon = lon * -1
|
||||||
|
writer.writerow([date_and_time, time_since_epoch, lat, lon, speed, systime_epoch])
|
||||||
|
outputfile.close()
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
gps_df = pd.read_csv(args.file.replace("nmea", "csv"))
|
||||||
|
#gps_df["datetime"] = pd.to_datetime(
|
||||||
|
# gps_df["systime_epoch"].apply(lambda x: datetime.fromtimestamp(x))
|
||||||
|
#)
|
||||||
|
gps_df.to_csv(args.file.replace("nmea", "csv"))
|
||||||
|
|||||||
Reference in New Issue
Block a user