#1 Mon 27 September 2021 11:30
- RomainG35
- Participant occasionnel
- Date d'inscription: 13 Nov 2020
- Messages: 12
QGIS 3.20: Positionner un point de plus courte distance
Bonjour à tous,
J'étudie la dispersion d'espèces d'insectes aquatiques et je dispose de deux shapes :
- une couche points symbolisant l'emplacement de mes pièges dans le paysage
- une couche polygones représentant les différents éléments aquatiques du paysage
Grâce à NNjoin, j'ai pu calculer la distance entre chacun de mes pièges et l'élément en eau le plus proche, mais j'aimerai pouvoir placer le point correspondant sur mes éléments aquatiques.
J'avais imaginé créer des buffers autour de mes pièges correspondant à la distance la plus courte donnée par NNjoin puis placer mon point à l'intersection du buffer et de l'élément aquatique. Mais y a t il une manière d'automatiser cela pour accélérer la manœuvre et surtout le faire plus "proprement"?
Merci d'avance pour votre aide!
Hors ligne
#2 Mon 27 September 2021 14:04
- lofalco
- Juste Inscrit !
- Date d'inscription: 28 Nov 2011
- Messages: 7
Re: QGIS 3.20: Positionner un point de plus courte distance
Bonjour,
Je le ferais avec l'outil "Joindre les attributs par le plus proche" de la boite a outils.
Il permet notamment de joindre la distance et les coordonnées géographiques du (des) voisin(s) le(s) plus proche(s) d'une autre couche dans la table attributaire de la couche source.
Cédric
Hors ligne
#3 Tue 28 September 2021 08:30
- RomainG35
- Participant occasionnel
- Date d'inscription: 13 Nov 2020
- Messages: 12
Re: QGIS 3.20: Positionner un point de plus courte distance
Bonjour,
Merci pour la réponse, c'est un outil super intéressant que je ne connaissais pas. Mais je ne crois pas qu'il me permette de faire ce que je souhaite, ou alors je n'ai pas trouvé comment. Je souhaite placer de nouveaux points superposés aux éléments aquatiques correspondants aux points les plus proches de chacun de mes pièges.
Romain
Hors ligne
#4 Tue 28 September 2021 10:30
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 4119
Re: QGIS 3.20: Positionner un point de plus courte distance
Bonjour,
L'algorithme "Géométrie par expression" devrait permettre cela, sans même passer par NNjoin. Le code ci-après place le point sur le pourtour de la zone aquatique, à l'endroit le plus proche. Les commentaires sont à lire de l'intérieur vers le haut (et l'aide de chacune des fonctions est recommandée pour mieux comprendre ce qui se passe).
Code:
closest_point( exterior_ring( -- récupère le pourtour de la zone surface geom_from_wkt( -- texte que l'on reconvertit en géométrie (je n'ai pas trouvé comment éviter l'encodage/décodage de géométrie) array_to_string( -- on convertit la liste en texte overlay_nearest('macouchepolygone', geom_to_wkt($geometry)) -- on récupère le texte de la géométrie polygonale la plus proche, sous forme de liste à valeur unique ) ) ), $geometry -- la géométrie point qu'on veut "déplacer" )
Hors ligne
#5 Tue 28 September 2021 12:05
- lofalco
- Juste Inscrit !
- Date d'inscription: 28 Nov 2011
- Messages: 7
Re: QGIS 3.20: Positionner un point de plus courte distance
Bonjour,
Merci pour la réponse, c'est un outil super intéressant que je ne connaissais pas. Mais je ne crois pas qu'il me permette de faire ce que je souhaite, ou alors je n'ai pas trouvé comment. Je souhaite placer de nouveaux points superposés aux éléments aquatiques correspondants aux points les plus proches de chacun de mes pièges.
Romain
juste pour aller plus loin avec "Joindre les attributs par le plus proche" :
cela vous donnera la distance et les coordonnées géographiques (le centroïde des polygones si je dis pas de bêtise) du (des) voisin(s) le(s) plus proche(s) de votre couche polygones dans la table attributaire des votre couche points. En créant une nouvelle couche à partir de celle-ci et reprojetant cette couche avec les coordonnées géographiques de la couche polygone, ca devrait fonctionner (ca doit créer des points au centroïde des polygones).
Hors ligne
#6 Wed 29 September 2021 13:55
- shirosaki
- Participant actif
- Lieu: Lyon
- Date d'inscription: 30 Mar 2018
- Messages: 127
Re: QGIS 3.20: Positionner un point de plus courte distance
Bonjour,
L'algorithme "Géométrie par expression" devrait permettre cela, sans même passer par NNjoin. Le code ci-après place le point sur le pourtour de la zone aquatique, à l'endroit le plus proche. Les commentaires sont à lire de l'intérieur vers le haut (et l'aide de chacune des fonctions est recommandée pour mieux comprendre ce qui se passe).Code:
closest_point( exterior_ring( -- récupère le pourtour de la zone surface geom_from_wkt( -- texte que l'on reconvertit en géométrie (je n'ai pas trouvé comment éviter l'encodage/décodage de géométrie) array_to_string( -- on convertit la liste en texte overlay_nearest('macouchepolygone', geom_to_wkt($geometry)) -- on récupère le texte de la géométrie polygonale la plus proche, sous forme de liste à valeur unique ) ) ), $geometry -- la géométrie point qu'on veut "déplacer" )
Bonjour, il me semble que vous pouvez faire plus simple
closest_point(
overlay_nearest('macouchepolygone',$geometry)[0] -- on récupère la géométrie la plus proche de mon entité courante
,
$geometry -- la géométrie point qu'on veut "déplacer"
)
edit : oui en effet, ça marche
https://zupimages.net/viewer.php?id=21/39/tzy9.png
Dernière modification par shirosaki (Wed 29 September 2021 14:01)
Paul QUESNOT
Hors ligne
#7 Thu 30 September 2021 09:31
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 4119
Re: QGIS 3.20: Positionner un point de plus courte distance
Bonjour,
Bonjour, il me semble que vous pouvez faire plus simple
Effectivement! J'avais oublié qu'on pouvait récupérer les élément d'une liste directement. Merci.
Hors ligne