From e821dbea5a67732013df94cbd1eb72407b439edf Mon Sep 17 00:00:00 2001 From: Marie-Dominique Van Damme Date: Fri, 11 Oct 2024 23:29:40 +0200 Subject: [PATCH] qgis: add LayerToTrack method --- tracklib/util/qgis.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tracklib/util/qgis.py b/tracklib/util/qgis.py index 09c68dc..8e5c882 100755 --- a/tracklib/util/qgis.py +++ b/tracklib/util/qgis.py @@ -39,12 +39,12 @@ knowledge of the CeCILL-C license and that you accept its terms. """ -from tracklib import Track, TrackCollection +from tracklib import Track, TrackCollection, ENUCoords, ObsTime, Obs try: from qgis.PyQt.QtCore import QVariant from qgis.core import QgsProject, QgsVectorLayer, QgsField - from qgis.core import QgsPointXY, QgsFeature, QgsGeometry + from qgis.core import QgsPointXY, QgsFeature, QgsGeometry, QgsWkbTypes from qgis.core import QgsMarkerSymbol, QgsLineSymbol, QgsSimpleLineSymbolLayer #from qgis.core import QgsFillSymbol from PyQt5.QtGui import QColor @@ -465,6 +465,31 @@ def plotMatching(matching, track2, af_name="pair", NO_DATA_VALUE:int=-1): QgsProject.instance().addMapLayer(layerMatching) + @staticmethod + def layerToTrack(layer): + track = Track() + + if layer.wkbType() == QgsWkbTypes.Point: + for f in layer.getFeatures(): + pt = f.geometry().asPoint() + time = ObsTime() + E = pt.x() + N = pt.y() + point = Obs(ENUCoords(E, N, 0), time) + track.addObs(point) + + if layer.wkbType() == QgsWkbTypes.LineString: + for f in layer.getFeatures(): + ligne = f.geometry() + for vertex in ligne.vertices(): + time = ObsTime() + E = vertex.x() + N = vertex.y() + point = Obs(ENUCoords(E, N, 0), time) + track.addObs(point) + + return track + ''' # SpatialIndex