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

GeoDataDays 2025

#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

RomainG35 a écrit:

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

SANTANNA a écrit:

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

 

Pied de page des forums

Copyright Association GeoRezo