33 lines
865 B
Python
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
|