forked from bwaldvogel/openmoves
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgpx_export.py
39 lines (28 loc) · 1.33 KB
/
gpx_export.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
import gpxpy.gpx
from flask import flash
from filters import radian_to_degree
from model import Sample
def gpx_export(move):
gpx = gpxpy.gpx.GPX()
gpx.creator = "OpenMoves - http://www.openmoves.net/"
# Create first track in our GPX:
gpx_track = gpxpy.gpx.GPXTrack()
gpx.tracks.append(gpx_track)
# Create first segment in our GPX track:
gpx_segment = gpxpy.gpx.GPXTrackSegment()
gpx_track.segments.append(gpx_segment)
# Create points:
gps_samples = move.samples.filter(Sample.sample_type.like('gps-%')).order_by(Sample.time.asc())
if gps_samples.count() == 0:
flash("No GPS samples found for GPX export", 'error')
return None
for gps_sample in gps_samples:
gpx_segment.points.append(gpxpy.gpx.GPXTrackPoint(latitude=radian_to_degree(gps_sample.latitude),
longitude=radian_to_degree(gps_sample.longitude),
elevation=gps_sample.gps_altitude,
time=move.date_time + gps_sample.time,
position_dilution=gps_sample.gps_hdop))
# You can add routes and waypoints, too...
return gpx.to_xml()