Skip to content

Commit 8b2d0fa

Browse files
fix: Mountain drawer - fix end city name+pos (#102)
Co-authored-by: Thomas Rouch <thom01.rouch@gmail.com>
1 parent d75aae1 commit 8b2d0fa

File tree

2 files changed

+55
-6
lines changed

2 files changed

+55
-6
lines changed

pretty_gpx/common/data/place_name.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,20 @@ def get_start_end_named_points(gpx_track: GpxTrack | MultiGpxTrack) -> list[Scat
4747
lon=start_lon,
4848
lat=start_lat,
4949
category=ScatterPointCategory.START)
50-
end = ScatterPoint(name=None,
51-
lon=start_lon,
52-
lat=start_lat,
53-
category=ScatterPointCategory.END)
5450

5551
if get_distance_m(lonlat_1=(start_lon, start_lat),
5652
lonlat_2=(end_lon, end_lat)) < 1000:
53+
# Start and end are too close, skip name and position of end point
54+
end = ScatterPoint(name=None,
55+
lon=start_lon,
56+
lat=start_lat,
57+
category=ScatterPointCategory.END)
58+
else:
59+
# Start and end are far enough, keep name of end point only if different from start
5760
name = get_place_name(lon=end_lon, lat=end_lat)
58-
if name != start.name:
59-
end.name = name
61+
end = ScatterPoint(name=name if name != start.name else None,
62+
lon=end_lon,
63+
lat=end_lat,
64+
category=ScatterPointCategory.END)
6065

6166
return [start, end]
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/usr/bin/python3
2+
"""Test Start/End names."""
3+
4+
import os
5+
6+
from pretty_gpx.common.data.place_name import get_start_end_named_points
7+
from pretty_gpx.common.gpx.gpx_track import GpxTrack
8+
from pretty_gpx.common.utils.asserts import assert_eq
9+
from pretty_gpx.common.utils.paths import CYCLING_DIR
10+
from pretty_gpx.common.utils.paths import HIKING_DIR
11+
12+
13+
def __core_test_start_end_names(path: str, gt_start_name: str, gt_end_name: str | None) -> None:
14+
"""Test Start/End names."""
15+
# GIVEN
16+
gpx = GpxTrack.load(path)
17+
18+
# WHEN
19+
start, end = get_start_end_named_points(gpx)
20+
21+
# THEN
22+
assert_eq(start.name, gt_start_name)
23+
assert_eq(end.name, gt_end_name)
24+
25+
26+
def test_vanoise_3() -> None:
27+
"""Test Vanoise 3."""
28+
__core_test_start_end_names(os.path.join(HIKING_DIR, "vanoise3.gpx"),
29+
gt_start_name="Aussois",
30+
gt_end_name="Pralognan-la-Vanoise")
31+
32+
33+
def test_vanoise() -> None:
34+
"""Test Vanoise."""
35+
__core_test_start_end_names(os.path.join(HIKING_DIR, "vanoise.gpx"),
36+
gt_start_name="Pralognan-la-Vanoise",
37+
gt_end_name=None) # Loop
38+
39+
40+
def test_marmotte() -> None:
41+
"""Test Marmotte."""
42+
__core_test_start_end_names(os.path.join(CYCLING_DIR, "marmotte.gpx"),
43+
gt_start_name="Le Bourg-d'Oisans",
44+
gt_end_name="L'Alpe d'Huez")

0 commit comments

Comments
 (0)