Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Mon 06 January 2020 11:39

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 195

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: 1536

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 wink

Nicolas

Hors ligne

 

#3 Mon 06 January 2020 13:34

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 195

Re: Jointure spatiale id table 2 dans table 1

Clair net et efficace wink. Merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB