#1 Tue 27 November 2018 17:13
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
PostGIS - Plus proche voisin
Bonjour,
Nous cherchons à déterminer le cours d'eau sur lequel se situent un ensemble de points de mesure.
Je m'attendais à trouver une fonction du genre ST_nearestneighbour, mais impossible de mettre la main dessus.
On s'en sort par un calcul de la matrice des distances point-rivière suivi d'un "row_number() + partition by", suivi d'un filtre.
Mais c'est un peu laborieux.
Est-ce que vous auriez une solution plus élégante ?
Merci
Dernière modification par Renaud (Tue 27 November 2018 17:19)
Renaud Mouche
Hors ligne
#2 Tue 27 November 2018 17:28
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1142
Re: PostGIS - Plus proche voisin
Utilisation d'une requête latérale ?
Code:
SELECT id_point, ( SELECT id_riviere FROM (SELECT st_distance(point.geom, riviere.geom) d, id_riviere FROM riviere ORDER BY point.geom <-> riviere.geom LIMIT 10) foo ORDER BY d LIMIT 1 ) FROM point
Dernière modification par tumasgiu (Tue 27 November 2018 17:32)
Hors ligne
#3 Tue 27 November 2018 17:53
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: PostGIS - Plus proche voisin
Bonsoir,
Et comme on me le faisait remarquer sur le forum Postgis, avec un postgis récent, pas besoin d'utiliser st_distance: geom <-> geom renvoie la vraie distance:
SELECT id_point,
( SELECT id_riviere FROM
(SELECT point.geom <-> riviere.geom d, id_riviere
FROM riviere ORDER BY point.geom <-> riviere.geom LIMIT 10) foo
ORDER BY d LIMIT 1
)
FROM point
Nicolas
Hors ligne
#4 Tue 27 November 2018 18:09
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1142
Re: PostGIS - Plus proche voisin
Super, j'ai du le lire mais j'ai aussi du l'oublier !
A ce moment là, la sous-requête de l'expression latérale est superflue non ?
Dernière modification par tumasgiu (Tue 27 November 2018 18:10)
Hors ligne
#5 Wed 28 November 2018 09:53
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: PostGIS - Plus proche voisin
Bonjour,
Merci pour le retour,
Je teste la solution
Renaud Mouche
Hors ligne