diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2025-10-19 22:28:20 +0200 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2025-10-28 21:06:37 +0100 |
| commit | 9be283944a72019ee0d151011c049fc21ca7e718 (patch) | |
| tree | 4a4143e9c5b9b3a966ac8cca6679c33cc38b61df | |
| parent | 7b5740fbef267b26c7fc1493736e3edb52fd0173 (diff) | |
| download | fietsboek-9be283944a72019ee0d151011c049fc21ca7e718.tar.gz fietsboek-9be283944a72019ee0d151011c049fc21ca7e718.tar.bz2 fietsboek-9be283944a72019ee0d151011c049fc21ca7e718.zip | |
have trackmap's be rendered on geo.Path
| -rw-r--r-- | fietsboek/actions.py | 2 | ||||
| -rw-r--r-- | fietsboek/trackmap.py | 12 | ||||
| -rw-r--r-- | fietsboek/views/detail.py | 3 |
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") |
