Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions backend/server/adventures/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@ def _parse_gpx_distance_km(self, gpx_file_field):
total_meters += segment_length

for route in gpx.routes:
route_length = route.length_3d() or route.length_2d()
route_length = route.length()
if route_length:
total_meters += route_length

Expand Down Expand Up @@ -1122,4 +1122,4 @@ def get_item(self, obj):
'id': str(obj.item.id),
'type': obj.content_type.model,
}


24 changes: 18 additions & 6 deletions backend/server/adventures/utils/geojson.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,26 @@ def gpx_to_geojson(gpx_file):
gpx = gpxpy.parse(f)

features = []
for track in gpx.tracks:
track_name = track.name or "GPX Track"
for segment in track.segments:
coords = [(point.longitude, point.latitude) for point in segment.points]

if gpx.tracks:
for track in gpx.tracks:
track_name = track.name or "GPX Track"
for segment in track.segments:
coords = [(point.longitude, point.latitude) for point in segment.points]
if coords:
feature = geojson.Feature(
geometry=geojson.LineString(coords),
properties={"name": track_name}
)
features.append(feature)
elif gpx.routes:
for route in gpx.routes:
route_name = route.name or "GPX Track"
Comment thread
seanmorley15 marked this conversation as resolved.
Outdated
coords = [(point.longitude, point.latitude) for point in route.points]
if coords:
feature = geojson.Feature(
geometry=geojson.LineString(coords),
properties={"name": track_name}
properties={"name": route_name}
)
features.append(feature)

Expand All @@ -36,4 +48,4 @@ def gpx_to_geojson(gpx_file):
return {
"error": str(e),
"message": "Failed to convert GPX to GeoJSON"
}
}
Loading