banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 29 May 2024 11:30

EPODE_L_B
Participant occasionnel
Lieu: Chambéry
Date d'inscription: 22 Mar 2023
Messages: 40

QGIS: Joindre extremites de lignes a une couche de points

Bonjour,

Je pêche sur mon problème même si je pense que je ne suis pas loin de la solution...

J'ai dans mon projet Qgis une couche de lignes (réseaux), et une couche de 192 points (regards), les deux couches ne se superposent pas. Je cherche à faire en sorte que les extrémités des lignes se trouvant à proximité de mes points les rejoignent (voir sur image en pj: à gauche), cela en créant ainsi un nouveau sommet + segment pour atteindre le point.

J'ai déjà essayé l'outil 'accrocher les géométries à la couche' en testant tous les types de comportements mais ça ne donne pas le bon résultat.
(voir sur image en pj: à droite)

J'ai mis une capture d'écran pour éclairage !

Merci d'avance pour votre aide !

Hors ligne

 

#2 Wed 29 May 2024 11:35

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS: Joindre extremites de lignes a une couche de points

Bonjour,

Pas de capture à l'horizon

Hors ligne

 

#3 Wed 29 May 2024 11:44

EPODE_L_B
Participant occasionnel
Lieu: Chambéry
Date d'inscription: 22 Mar 2023
Messages: 40

Re: QGIS: Joindre extremites de lignes a une couche de points

bizarre pourtant j'ai bien intégré la pièce jointe depuis le bouton parcourir....
Et maintenant ?


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Wed 29 May 2024 19:54

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS: Joindre extremites de lignes a une couche de points

Vous voulez que vos lignes rejoignent les points les plus proches?

Hors ligne

 

#5 Fri 31 May 2024 09:29

EPODE_L_B
Participant occasionnel
Lieu: Chambéry
Date d'inscription: 22 Mar 2023
Messages: 40

Re: QGIS: Joindre extremites de lignes a une couche de points

Oui c'était ça ! Je voulais joindre les extrémités des lignes au point le plus proche.

Finalement j'ai obtenu une solution en bricolant avec l'outil "Géométrie par expression dans Qgis", je déroule la méthode peut être qu'elle sera utile à d'autres.

Couches de départ:

- Couche de lignes "RESEAU"
- Couche de points "REGARDS"

1. Vérifier qu'il y ai bien une colonne ID unique dans la couche de lignes
2. Extraction des points d'arrivée et de fin de ma couche de lignes (start_point et end_point) = 2 couches distinctes (START et END)
3. Outil "Joindre les attributs par le plus proche" entre la couche START et la couche REGARDS, puis la couche END avec la couche REGARDS
On obtient deux nouvelles couches avec les attributs :
- feature_x/feature_yet : les coordonnées des points START ou END
- nearest_x/ nearest_y : les coordonnées des points REGARDS

4.Si besoin, nettoyer ces couches en ne conservant que les points START ou END situés dans un rayon proche des points REGARDS (outils sélection dans un rayon puis inverser la sélection et supprimer les entités non souhaitées)

5. Depuis les propriétés de la couche RESEAU, faire deux jointures sur l'ID pour les couches START et END (en ajoutant un préfixe aux champs joints : featurex/y et nearest x/y)

6. A partir de la couche RESEAU, utiliser l'outil "Geometrie par expression" avec un make_line pour rejoindre les points START_nearest_x/y et START_feature_x/y , idem pour les données END

7. On obtient une nouvelle couche de lignes que l'on peut intégrer à la couche RESEAU.

Un script python aurait sans doute été plus efficace malheureusement je ne maîtrise pas ce langage..

Hors ligne

 

#6 Fri 31 May 2024 16:43

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3935

Re: QGIS: Joindre extremites de lignes a une couche de points

Bonjour,

Un script python aurait sans doute été plus efficace malheureusement je ne maîtrise pas ce langage..


A défaut de Python, vous pouvez essayer de créer un modèle.
Autrement, ceci devrait faire le job à partir du sommet final, dans l'algo "Géométrie par expression". Évidemment elle peut être étendue avec le sommet de départ et son proche point; je vous laisse chercher, si le cœur vous en dit.

Code:

with_variable(
 'mesregards',
 aggregate('regards', 'collect', @geometry), -- on agrège tous les points regards dans une seule entité à manipuler
 union(@geometry, -- la ligne de réseau existante que l'on étend
  make_line( -- avec une ligne
   end_point(@geometry), -- qui part du sommet final
   closest_point( @mesregards, end_point(@geometry)) -- vers son plus proche regard
   )
 )
)

Hors ligne

 

#7 Fri 31 May 2024 17:32

EPODE_L_B
Participant occasionnel
Lieu: Chambéry
Date d'inscription: 22 Mar 2023
Messages: 40

Re: QGIS: Joindre extremites de lignes a une couche de points

Merci beaucoup ! J'essayerai à l'occasion, ça me semble plus efficace en effet !

Hors ligne

 

Pied de page des forums

Powered by FluxBB