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