Export to GPX

Juan Sánchez2 years ago

Hello,

I want to export to GPX file but i don't see any option since 4.13 (More or less).

It's something that will return or it will be impossible to export to GPX format now?

Kind Regards!

Anton Tananaev2 years ago

We plan to add it back eventually, but it's not possible currently.

Juan Sánchez2 years ago

Hello!

And exist any workaround in order to export to GPX (from console or something)?

Kind regards

Anton Tananaev2 years ago

You can have a script that requests JSON through API and converts it into GPX.

Juan Sánchez2 years ago

So, as far i now, this https://github.com/zhaofeng-shu33/traccar_gps/tree/067c0807e5e26446e81fd3687928432d7902f676 could do the work, isn't it?

Regards!!

Uwe Barnstein2 years ago

Would be great @Anton Tananaev to get a script.
@Juan Sánchez: What you mentioned also uses the Accept:application/gpx+xml feature which is no longer supported.

Uwe Barnstein2 years ago

And... BTW. It would be great to have Accept:application/gpx+xml back in Traccar :-)

x6883992 years ago

I mocked up this script very fast. Maybe you can use it.
You just have to change the first lines for your need.

import requests
import gpxpy.gpx
from datetime import datetime

base_url = "http://192.168.211.22:8082/api/positions"
traccar_user = "user"
traccar_pass = "password"
traccar_device_id = 1  # 1=phone, 2=car
time_from = "2022-07-13T00:00:00Z"
time_to = "2022-07-19T23:59:59Z"
filename = "tracklog.gpx"

get_parameters = {"deviceId": traccar_device_id, "from": time_from, "to": time_to}
resp = requests.get(base_url, params=get_parameters, auth=(traccar_user, traccar_pass))
gps_points = resp.json()


gpx = gpxpy.gpx.GPX()
# 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)

for point in gps_points:
    dt = datetime.strptime(point["fixTime"], "%Y-%m-%dT%H:%M:%S.000+00:00")
    gpx_segment.points.append(gpxpy.gpx.GPXTrackPoint(point["latitude"], point["longitude"], time=dt))

xml = gpx.to_xml()

with open(filename, "wt") as text_file:
    n = text_file.write(xml)
Hans Strassguetl2 years ago

As I have a strong need to work with GPX, I have written a small program: traccar2gpx
It provides some features as cleaning the track from "no motion" trackpoints, color to GPX, naming the GPX track.
You can find it here: https://github.com/4tegs/traccar2gpx.

Anton Tananaev2 years ago

It looks like you only have a binary file. Is there a source code? By the way, Traccar does support GPX export out of the box.

Thomas3 months ago

Anton, I cannot find the area where I can export data in GPX-Format (checked the Web-Application and the API documentation) - could you please point me to it? Thanks!

Anton Tananaev3 months ago
Thomas3 months ago

Thanks! That was fast ;-). However if try to read this endpoint

https://xxx.yyy.de/gpx??deviceId=1&from=2024-02-07T15:00:00Z&to=2024-02-08T11:00:00Z

with Postman or python I get an "error" message:

<noscript>Enable JavaScript to use <a href="https://www.traccar.org/">Traccar GPS Tracking System</a>.</noscript>

I assume using js to call the endpoint would be the easiest way out here?

Hans Strassguetl3 months ago

Hi Thomas,
Check my code. It should be obvious then how it’s done. I do it with Python, works well.

Thomas3 months ago

Thanks Hans.
Yup, my bad. My endpoint url was wrong; works like a charm now - many thanks for the superfast responses here.