Skip to content

Commit 721386c

Browse files
committed
feat: show coordinates in routing_from_line_list in project crs
1 parent 47f4e90 commit 721386c

File tree

3 files changed

+28
-30
lines changed

3 files changed

+28
-30
lines changed

ORStools/gui/ORStoolsDialog.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
PROFILES,
8585
PREFERENCES,
8686
)
87-
from ORStools.utils import maptools, configmanager, transform, gui, exceptions
87+
from ORStools.utils import maptools, configmanager, gui, exceptions
8888
from .ORStoolsDialogConfig import ORStoolsDialogConfigMain
8989

9090
MAIN_WIDGET, _ = uic.loadUiType(gui.GuiUtils.get_ui_file_path("ORStoolsDialogUI.ui"))
@@ -415,6 +415,9 @@ def __init__(self, iface: QgisInterface, parent=None) -> None:
415415
lambda: self.color_duplicate_items(self.routing_fromline_list)
416416
)
417417

418+
self.last_crs = self.canvas.mapSettings().destinationCrs()
419+
self.canvas.destinationCrsChanged.connect(self._on_crs_changed)
420+
418421
self.load_provider_combo_state()
419422
self.provider_combo.activated.connect(self.save_selected_provider_state)
420423

@@ -435,6 +438,7 @@ def _save_vertices_to_layer(self) -> None:
435438
self.routing_fromline_list.item(x).text()
436439
for x in range(self.routing_fromline_list.count())
437440
]
441+
map_crs = self._iface.mapCanvas().mapSettings().destinationCrs()
438442

439443
if len(items) > 0:
440444
timestamp = datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
@@ -450,6 +454,7 @@ def _save_vertices_to_layer(self) -> None:
450454
feature.setAttributes([idx])
451455

452456
point_layer.dataProvider().addFeature(feature)
457+
point_layer.setCrs(map_crs)
453458
QgsProject.instance().addMapLayer(point_layer)
454459
self.canvas.refresh()
455460

@@ -530,11 +535,7 @@ def _on_linetool_init(self) -> None:
530535

531536
def create_vertex(self, point, idx):
532537
"""Adds an item to QgsListWidget and annotates the point in the map canvas"""
533-
map_crs = self.canvas.mapSettings().destinationCrs()
534-
535-
transformer = transform.transformToWGS(map_crs)
536-
point_wgs = transformer.transform(point)
537-
self.routing_fromline_list.addItem(f"Point {idx}: {point_wgs.x():.6f}, {point_wgs.y():.6f}")
538+
self.routing_fromline_list.addItem(f"Point {idx}: {point.x():.6f}, {point.y():.6f}")
538539

539540
crs = self.canvas.mapSettings().destinationCrs()
540541
annotation = self._linetool_annotate_point(point, idx, crs)
@@ -549,17 +550,20 @@ def _reindex_list_items(self) -> None:
549550
]
550551
self.routing_fromline_list.clear()
551552
self._clear_annotations()
552-
crs = QgsCoordinateReferenceSystem(f"EPSG:{4326}")
553553
project_crs = self.canvas.mapSettings().destinationCrs()
554-
for idx, x in enumerate(items):
555-
coords = x.split(":")[1]
556-
item = f"Point {idx}:{coords}"
557-
x, y = (float(i) for i in coords.split(", "))
554+
for idx, origin in enumerate(items):
555+
origin_coords = origin.split(":")[1]
556+
x, y = (float(i) for i in origin_coords.split(", "))
558557
point = QgsPointXY(x, y)
559558

560-
self.routing_fromline_list.addItem(item)
561-
transform = QgsCoordinateTransform(crs, project_crs, QgsProject.instance())
559+
transform = QgsCoordinateTransform(self.last_crs, project_crs, QgsProject.instance())
560+
562561
point = transform.transform(point)
562+
563+
coords = f"{point.x():.6f}, {point.y():.6f}"
564+
item = f"Point {idx}: {coords}"
565+
self.routing_fromline_list.addItem(item)
566+
563567
annotation = self._linetool_annotate_point(point, idx)
564568
self.annotations.append(annotation)
565569
self.project.annotationManager().addAnnotation(annotation)
@@ -606,3 +610,8 @@ def show(self):
606610
"""Load the saved state when the window is shown"""
607611
super().show()
608612
self.load_provider_combo_state()
613+
614+
def _on_crs_changed(self) -> None:
615+
"""Handle CRS change event."""
616+
self._reindex_list_items()
617+
self.last_crs = self.canvas.mapSettings().destinationCrs()

ORStools/gui/directions_gui.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,12 @@ def _get_avoid_options(avoid_boxes):
8686
class Directions:
8787
"""Extended functionality for directions endpoint for GUI."""
8888

89-
def __init__(self, dlg, iface):
89+
def __init__(self, dlg):
9090
"""
9191
:param dlg: Main GUI dialog.
9292
:type dlg: QDialog
9393
"""
9494
self.dlg = dlg
95-
self.iface = iface
9695

9796
self.options = dict()
9897

@@ -103,7 +102,7 @@ def get_request_line_feature(self):
103102
:returns: coordinate list of line
104103
:rtype: list
105104
"""
106-
map_crs = self.iface.mapCanvas().mapSettings().destinationCrs()
105+
map_crs = self.dlg.canvas.mapSettings().destinationCrs()
107106
transformer = transform.transformToWGS(map_crs)
108107

109108
coordinates = []

ORStools/utils/maptools.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,8 @@
3232

3333
from qgis.gui import QgsMapToolEmitPoint, QgsRubberBand
3434
from qgis.core import (
35-
QgsProject,
3635
QgsPointXY,
37-
QgsCoordinateReferenceSystem,
3836
Qgis,
39-
QgsCoordinateTransform,
4037
QgsWkbTypes,
4138
QgsAnnotation,
4239
QgsMarkerSymbol,
@@ -46,7 +43,7 @@
4643
from qgis.PyQt.QtGui import QColor, QMouseEvent
4744

4845
from ORStools import ROUTE_COLOR
49-
from ORStools.utils import transform, router
46+
from ORStools.utils import router
5047
from ORStools.utils.exceptions import ApiError
5148

5249

@@ -188,16 +185,13 @@ def canvasReleaseEvent(self, event: QEvent) -> None:
188185
self.dlg.annotations.insert(self.move_i, annotation)
189186
self.dlg.project.annotationManager().addAnnotation(annotation)
190187

191-
transformer = transform.transformToWGS(crs)
192-
point_wgs = transformer.transform(point)
193-
194188
items = [
195189
self.dlg.routing_fromline_list.item(x).text()
196190
for x in range(self.dlg.routing_fromline_list.count())
197191
]
198192
backup = items.copy()
199193
items[self.move_i] = (
200-
f"Point {self.move_i}: {point_wgs.x():.6f}, {point_wgs.y():.6f}"
194+
f"Point {self.move_i}: {point.x():.6f}, {point.y():.6f}"
201195
)
202196

203197
self.dlg.routing_fromline_list.clear()
@@ -291,19 +285,15 @@ def create_rubber_band(self) -> None:
291285
else:
292286
self.dlg._clear_annotations()
293287
else:
294-
dest_crs = self.dlg.canvas.mapSettings().destinationCrs()
295-
original_crs = QgsCoordinateReferenceSystem("EPSG:4326")
296-
transform = QgsCoordinateTransform(original_crs, dest_crs, QgsProject.instance())
297288
items = [
298289
self.dlg.routing_fromline_list.item(x).text()
299290
for x in range(self.dlg.routing_fromline_list.count())
300291
]
301292
split = [x.split(":")[1] for x in items]
302293
coords = [tuple(map(float, coord.split(", "))) for coord in split]
303294
points_xy = [QgsPointXY(x, y) for x, y in coords]
304-
reprojected_point = [transform.transform(point) for point in points_xy]
305-
for point in reprojected_point:
306-
if point == reprojected_point[-1]:
295+
for point in points_xy:
296+
if point == points_xy[-1]:
307297
self.dlg.rubber_band.addPoint(point, True)
308298
else:
309299
self.dlg.rubber_band.addPoint(point, False)

0 commit comments

Comments
 (0)