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 17 November 2021 15:07

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Plus courte distance point / polygone + récupérer pt du polygone

Bonjour,

J'ai une couche de points (adresses) et une coche de polygones (zones d'interventions), qui sont en relation attributaire (1-1) via un identifiant commun (id).
J'arrive à calculer la distance minimale entre le point et le polygone joint via cette requête :

Code:

SELECT    pt.id
        st_distance(pt.geom, poly.geom) as dist_min
FROM    pt
JOIN    poly ON pt.id = poly.id

Mais j'aimerais récupérer les coordonnées du point du périmètre du polygone correspondant à cette plus courte distance, et ainsi pouvoir construire la ligne [1] entre le point et le polygone.

Est-ce quelqu'un aurait une idée de requête pour récupérer ce point de distance minimale entre le polygone et le point, sur le périmètre du polygone ?

Merci pour vos conseils ! big_smile

[1] avec un ST_Makeline() :

Code:

st_makeLine(pt.geom, /* geom du point recherché */  )

Dernière modification par Sylvain M. (Wed 17 November 2021 15:08)


Sylvain M.

Hors ligne

 

#2 Wed 17 November 2021 15:29

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Re: Plus courte distance point / polygone + récupérer pt du polygone

Je crois que je viens de trouver !

Code:

ST_ClosestPoint(geometry g1, geometry g2);

Je teste ça !


Sylvain M.

Hors ligne

 

#3 Wed 17 November 2021 16:28

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Re: Plus courte distance point / polygone + récupérer pt du polygone

Je confirme que ça fonctionne.
Voici donc la bonne requête :

Code:

ST_Makeline(ST_ClosestPoint(poly.geom, pt.geom), pt.geom) as geom

(en fait "makeline" puisque je travaille avec des couches virtuelles, et donc SpatiaLite, pas PostGis)


Sylvain M.

Hors ligne

 

Pied de page des forums

Powered by FluxBB