#1 Mon 06 January 2020 11:39
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Jointure spatiale id table 2 dans table 1
Bonjour,
je cherche à récupérer les identifiants de point qui se situe sur le noeud initial de mes segments, j'ai fais un test :
Code:
UPDATE tablesegment SET idnini= pt.idnoeud FROM tablepoint pt INNER JOIN tablesegment ligne ON ST_equals(pt.geom,ST_StartPoint(ligne.geom)) WHERE ligne.id='419411';
La requête s’exécute mais idnini reste vide, n'ayant jamais travaillé avec des jointures spatiales je suis pas certain que la syntaxe soit correcte.
Dernière modification par neskuik01 (Mon 06 January 2020 11:47)
Hors ligne
#2 Mon 06 January 2020 12:42
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Jointure spatiale id table 2 dans table 1
Bonjour,
Plutot:
Code:
UPDATE tablesegment t SET idnini= pt.idnoeud FROM tablepoint pt where ST_dwithin(pt.geom,ST_StartPoint(t.geom), 0.001) and t.id='419411';
st_dwithin vous permet de prendre en compte une certaine précision (ici 0.001, a ajuster). St_equals est surement un peu "violent" pour trouver des points.
Je vous conseille de tester la requete en select avant de faire un update sur une table. Plus sûr
Nicolas
Hors ligne
#3 Mon 06 January 2020 13:34
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Re: Jointure spatiale id table 2 dans table 1
Clair net et efficace . Merci
Hors ligne