aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-10-19 22:28:20 +0200
committerDaniel Schadt <kingdread@gmx.de>2025-10-28 21:06:37 +0100
commit9be283944a72019ee0d151011c049fc21ca7e718 (patch)
tree4a4143e9c5b9b3a966ac8cca6679c33cc38b61df
parent7b5740fbef267b26c7fc1493736e3edb52fd0173 (diff)
downloadfietsboek-9be283944a72019ee0d151011c049fc21ca7e718.tar.gz
fietsboek-9be283944a72019ee0d151011c049fc21ca7e718.tar.bz2
fietsboek-9be283944a72019ee0d151011c049fc21ca7e718.zip
have trackmap's be rendered on geo.Path
-rw-r--r--fietsboek/actions.py2
-rw-r--r--fietsboek/trackmap.py12
-rw-r--r--fietsboek/views/detail.py3
3 files changed, 8 insertions, 9 deletions
diff --git a/fietsboek/actions.py b/fietsboek/actions.py
index 9c1142b..0e2284b 100644
--- a/fietsboek/actions.py
+++ b/fietsboek/actions.py
@@ -109,7 +109,7 @@ def add_track(
dbsession.add(track.cache)
LOGGER.debug("Building preview image for %s", track.id)
- preview_image = trackmap.render(gpx, layer, tile_requester)
+ preview_image = trackmap.render(track.path(), layer, tile_requester)
image_io = io.BytesIO()
preview_image.save(image_io, "PNG")
manager.set_preview(image_io.getvalue())
diff --git a/fietsboek/trackmap.py b/fietsboek/trackmap.py
index 584bf72..a850051 100644
--- a/fietsboek/trackmap.py
+++ b/fietsboek/trackmap.py
@@ -3,9 +3,9 @@
import io
import math
-from gpxpy.gpx import GPX
from PIL import Image, ImageDraw
+from . import geo
from .config import TileLayerConfig
from .views.tileproxy import TileRequester
@@ -44,7 +44,7 @@ class TrackMapRenderer:
def __init__(
self,
- track: GPX,
+ track: geo.Path,
requester: TileRequester,
size: tuple[int, int],
layer: TileLayerConfig,
@@ -73,7 +73,7 @@ class TrackMapRenderer:
min_x, max_x = 2**zoom * TILE_SIZE, 0
min_y, max_y = 2**zoom * TILE_SIZE, 0
- for point in self.track.walk(only_points=True):
+ for point in self.track.points:
x, y = to_web_mercator(point.latitude, point.longitude, zoom)
min_x = min(min_x, x)
max_x = max(max_x, x)
@@ -112,7 +112,7 @@ class TrackMapRenderer:
def _draw_lines(self, image, zoom, start_x, start_y):
coords = (
to_web_mercator(point.latitude, point.longitude, zoom)
- for point in self.track.walk(only_points=True)
+ for point in self.track.points
)
coords = [(x - start_x, y - start_y) for x, y in coords]
@@ -120,10 +120,10 @@ class TrackMapRenderer:
draw.line(coords, fill=self.color, width=self.line_width, joint="curve")
-def render(track: GPX, layer: TileLayerConfig, requester: TileRequester) -> Image.Image:
+def render(track: geo.Path, layer: TileLayerConfig, requester: TileRequester) -> Image.Image:
"""Shorthand to construct a :class:`TrackMapRenderer` and render the preview.
- :param track: Parsed track to render.
+ :param track: Track to render.
:param layer: The tile layer to take the map tiles from.
:param requester: The requester which will be used to request the tiles.
:return: The image containing the rendered preview.
diff --git a/fietsboek/views/detail.py b/fietsboek/views/detail.py
index e0ac87a..2f2d887 100644
--- a/fietsboek/views/detail.py
+++ b/fietsboek/views/detail.py
@@ -274,8 +274,7 @@ def track_map(request: Request):
loader: ITileRequester = request.registry.getUtility(ITileRequester)
layer = request.config.public_tile_layers()[0]
- parsed_gpx = gpxpy.parse(manager.decompress_gpx())
- track_image = trackmap.render(parsed_gpx, layer, loader)
+ track_image = trackmap.render(track.path(), layer, loader)
imageio = io.BytesIO()
track_image.save(imageio, "png")