Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Wed 18 September 2019 12:43
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
QGIS: Segments traces a partir d Identifiants de points
Bonjour à tous,
Voici mon problème : j'ai dans un fichier excel, un onglet de points ayant un identifiant et des coordonnées. Jusque là, aucun problème pour les visualiser.
Dans un autre onglet du même fichier excel, j'ai des routes (ce sont des routes aériennes) passant par ces points.
Exemple : j'ai les points LUSEM, LULUT, URUNA, PEPAX, VAVIX (de coordonnées connues dans le 1° onglet) et dans le 2° onglet, j'ai 2 routes. Chacune des 2 routes a 3 attributs : un Identifiant, un Type et un attributs Points contenant l'identifiant des points par lesquels chacune des 2 routes passe.
Exemple Route 1 : LUSEM, LULUT, URUNA et Route 2 : LULUT, PEPAX, VAVIX.
Je voudrais trouver une méthode automatique pour visualiser mes routes sous forme de segments passant par les points identifiés dans l'attribut Points .
Merci d'avance.
Hors ligne
#2 Wed 25 September 2019 12:00
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour,
Voici une solution en PJ, mais qui ne marche qu'en visualisation
- Créer une couche de points
- Créer une couche appelée routes de type lignes et y ajouter autant de lignes que de routes (tant pis si la géométrie ne correspond pas) avec les noms de points séparés par des virgules
- Dans cette couche, aller en mode "générateur de géométrie" mode ligne / polyligne et y taper l'expression suivante :
Code:
with_variable( 'arr_feat', array_foreach( string_to_array("points" , ','), concat(x(geometry(get_feature('points', 'lib', @element))), ' ', y(geometry(get_feature('points', 'lib', @element)))) ), geom_from_wkt('LINESTRING(' || array_to_string(@arr_feat, ',') || ')' ) )
geodata au cerema et petits billets en géomatique
Hors ligne
#3 Sat 28 September 2019 11:25
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
Merci beaucoup Mathieu pour cette solution que je vais expérimenter. Je l'ai visualisée sous QGIS 3.4 et cela correspond bien à ce que l'on souhaite.
En attendant, avec mes collègues, nous avons mis en forme le fichier des routes en créant un champ de type LineString (cf. pièce jointe). Ce qui nécessite pas mal de préparation sur Excel.
Question toute simple : quelle requête faut-il faire pour trouver les routes qui passent par un point?
Exemple : la rte 1 passe par les 5 points (LUSEM LULUT CNA POI PEPAX) et la rte 2 passe par les 4 points (LUSEM LULUT CNA MANAK).
Ces points apparaissent dans le champ Points.
Si je veux par exemple savoir quelles sont les routes qui passent par LUSEM et que je fais une requête : Points ilike LUSEM, cela ne fonctionnera pas car le champ Points ne contient pas que LUSEM, il faudrait faire une requête sur le champ Points qui contient la chaine de caractère LUSEM.
Merci de votre aide.
Hors ligne
#4 Mon 30 September 2019 16:11
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
J'ai trouvé, si je veux les routes qui passent par LUSEM, j'écris : "Points" like '%LUSEM%'
Mathieu, "aller en mode "générateur de géométrie" mode ligne / polyligne", comment fait-on pour accéder au générateur de géométrie?
Merci beaucoup.
Hors ligne
#5 Tue 01 October 2019 15:02
- Grég.oire
- Participant occasionnel
- Lieu: Toulouse
- Date d'inscription: 19 Sep 2008
- Messages: 13
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour,
Propriétés de la couche > onglet Symbologie (QGis 3) ou Style (QGis 2) > liste déroulante Type de symbole (QGis 3) ou Symbole (QGis 2) > Générateur de géométrie
QGis 3.10.3 / FME 2017.1 / Windows 7
Hors ligne
#6 Thu 03 October 2019 15:44
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour et merci pour les pistes, je pense que je me rapproche du but
Ma couche de points provient d'un fichier excel que je transforme en CSV pour l'intégrer dans QGIS, (fichier joint Pointsok.csv).
Puis je créé donc une couche route en linéaire (appelée RoutesOK).
Mes étapes sont les suivantes :
- Je créé d'abord mes attributs (fichier joint Création attributs route.jpg),
- Puis j’alimente ma base dans la table d'attributs en ajoutant les routes les unes après les autres (fichier joint Alimentation de la base.jpg avec une seule route).
- Puis je créé la géométrie en mettant le code que vous m'avez indiqué (fichier joint Generateur de geometrie.jpg)
Et ... ma route ne s'affiche pas ...
Je n'arrive pas à détecter mon erreur, merci encore de votre aide.
Hors ligne
#7 Mon 07 October 2019 14:42
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour,
Dans la colonne Nom_point, il faudrait supprimer les espaces après les virgules :
Code:
champ1,champ2,champ3
et non
Code:
champ1, champ2, champ3
Aussi, il me semble qu'il faille écrire:
Code:
string_to_array("Nom_point", ', ')
et non
Code:
string_to_array("Pointsok", ', ')
geodata au cerema et petits billets en géomatique
Hors ligne
#8 Sun 13 October 2019 11:51
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
OK merci beaucoup
Hors ligne
#9 Sun 13 October 2019 17:34
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour Mathieu,
Je me permets de revenir vers vous sur ce thème car je galère, je vous joins une archive contenant mon projet QGIS et mes fichiers qui vont avec (ainsi que les vôtres).
Je cherche à faire passer une route de Rtecyril par les 2 points LUSEM et LULUT qui sont dans Ptscyril en générant une géométrie tenant compte de votre code et de vos conseils. Mais, le wkt_geom reste toujours à NULL (alors que vous pourrez consulter mon code de génération de géométrie qui semble exact). Impossible de trouver pourquoi.
Merci de votre aide précieuse.
Hors ligne
#10 Mon 14 October 2019 12:03
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour,
Je ne comprends paqs pourquoi ça ne marche pas
Essayez peut-être d'ajouter vos points et votre ligne aux couches qui fonctionnent, à savoir vers ptscyril → points et routeciryl → routes
Aussi, quand un exemple fonctionne avec une expression, si vous créez de nouvelles données, essayez de conserver les mêmes noms de champs, histoire de réduire le nb d'adaptations
geodata au cerema et petits billets en géomatique
Hors ligne
#11 Thu 17 October 2019 15:17
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour,
Ça s'améliore un peu, mais il reste des choses bien mystérieuses.
Je me permets de vous joindre de nouveau un projet QGIS contenant 4 couches :
- Points et routes sont vos couches,
- pointsMathieuCyril est une couche reprenant votre couche de points et dans laquelle j'ai rajouté 2 points : le point 5 et le point 6 (qui sont très loin des vôtres).
- RoutesMathieuCyril est une couche reprenant votre couche de routes et dans laquelle j'ai modifié la route n° 2 la faisant passer par les points 1, 5 et 6 (au lieu de 1,2 et 3).
En appliquant votre code de génération de géométrie à RoutesMathieuCyril (sous votre contrôle), j'ai bien une visualisation de 2 routes, la route 1, inchangée par rapport à la votre et la route 2 qui passe bien par les points 1, 5 et 6.
Mais, ce qui est très curieux, c'est que le WKT de la route 2 pointe vers les coordonnées des points 1,2 et 3 et non 1, 5 et 6 (du coup la visu de cette route n'est pas stable, suivant le niveau de zoom, elle s'affiche ou non).
Encore merci pour votre aide, je pense qu'on n'est pas loin .
Hors ligne
#12 Thu 24 October 2019 17:39
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour Mathieu
Excusez moi, mais auriez-vous une solution suite à mon message précédent et à sa pièce jointe? (je dois faire une proposition pour un comité de projet début novembre).
Un grand merci d'avance si vous avez un peu de temps pour regarder cela.
Hors ligne
#13 Mon 28 October 2019 11:42
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour,
Personnellement, je ne vois d'incohérent dans votre couche RoutesMathieuCyril :
la première route passe bien par A, B et C
la seconde par 1,5,6
tel qu'indiqué
Cependant, l'affichage n'est pas stable, même pour moi, en QGIS 3.4
Je vous conseillerai donc de vous rabattre, pour plus de stabilité, sur une génération des couches lignes en "dur" via des couches virtuelles en SQL Spatialite, ou PostgreSQL/PostGIS
Mais il y a sans doute des plugins QGIS qui satisferont à votre demande. Regarder par exemple du côté de Points2One avec group features by (identifiant de votre ligne)
Quelques liens :
https://gis.stackexchange.com/questions … ts-in-qgis
https://www.sigterritoires.fr/index.php … with-qgis/
geodata au cerema et petits billets en géomatique
Hors ligne
#14 Mon 28 October 2019 16:55
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Segments traces a partir d Identifiants de points
Bonjour Mathieu
OK merci beaucoup de ces renseignements que je vais exploiter.
Ce qui est très curieux, c'est que, même si ma deuxième route parvient à passer par les points 5 et 6 que j'ai créés, le WKT de cette route pointe constamment vers les coordonnées des points 2 et 3 (les vôtres), impossible de voir les coordonnées des points 2 et 3.
Très étrange!!!
Hors ligne