Message posté par : Nicolas Ribot
----------------------------------------
Bonsoir,
Oui, PostGIS dispose d'une fonction pour tester ce que vous voulez: st_dwithin(geoma,
geomb, distance). (
https://postgis.net/docs/manual-3.0/ST_DWithin.html)
Renvoie vrai si geoma et geomb sont distantes de "distance" ou moins.
Vous pouvez faire une jointure spatiale entre vos deux tables avec cette fonction.
Comme vous le dites, il peut y avoir plusieurs tronçons proches d'un terminal: les
colonnes stat_tronc et notroncon devraient etre de type array, (tableau de meme type que
les colonnes troncons.status et troncons.notroncon).
Pour utiliser au mieux postgis, créez des index spatiaux sur les colonnes geometry des
deux tables si ce n'est pas deja fait (et lancez un analyze <table> apres la
création des index).
En SQL, en select d'abord pour vérifier que ca marche:
-----------------
Code :
select te.gid, array_agg(tr.status) as stat_tronc, array_agg(tr.notroncon) as notroncon
from terminal te join troncons tr on st_dwithin(te.geom, tr.geom, 0.5)
group by te.gid;
-----------------
Vous pouvez alors transformer cela en update, par ex en utilisant une CTE (common table
expression): WITH tmp as (...) update terminal t ...
Nicolas
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=333451#p333451
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net