gpx-to-geotags/lib/gpx.py

33 lines
865 B
Python

from datetime import timedelta
import gpxpy
from gpxpy.gpx import GPXTrackPoint
def get_closest_point(gpx, timestamp, max_diff) -> GPXTrackPoint | None:
closest_point = None
closest_diff = timedelta.max
for track in gpx.tracks:
for segment in track.segments:
for point in segment.points:
diff = abs(point.time - timestamp)
if diff < closest_diff and diff.total_seconds() <= max_diff:
closest_diff = diff
closest_point = point
return closest_point
def get_gpx_data(file):
gpx_file = open(file, 'r')
gpx = gpxpy.parse(gpx_file)
data = []
for track in gpx.tracks:
for segment in track.segments:
for point in segment.points:
data.append((point.time, point.latitude, point.longitude))
return data