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 Thu 28 November 2019 20:39

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

Update

Bonjour,

Je dispose d'un fichier de donnée de polygones, et une autre couche de tracés.

Dans ma couche de polygone, j'aimerais créer un nouveau champ qui contiendra la distance la plus courte séparant chaque polygone à un tracé, sur une surface tampon de 1000m entourant mes polygones.

Pour cela faire, j'ai d'abord crée ma table.

Code:

alter table polygone add column DIST_TRACE integer

Et j'implémente cette table grâce à Update

Code:

update polygone set DIST_TRACE = 

(select min(st_distance(polygone.geom, trace.geom)) dist
from polygone p, trace
where st_dwithin(polygone.geom, trace.geom, 1000)
group by p.id)

Malheureusement, il me retourne l'erreur suivante :

Code:

plus d'une ligne renvoyée par une sous-requête utilisée comme une expression

J'ai du mal à comprendre la raison ....

Merci à vous

Dernière modification par preliator (Thu 28 November 2019 20:40)

Hors ligne

 

#2 Fri 29 November 2019 09:09

Ben22
Participant actif
Lieu: 33
Date d'inscription: 11 May 2016
Messages: 95

Re: Update

Bonjour,

Il doit vous manquer la condition de jointure dans votre update :

Code:

update polygone t1 set DIST_TRACE = t2.dist
FROM 

 (select pd.id, min(st_distance(polygone.geom, trace.geom)) dist
 from polygone p, trace
 where st_dwithin(polygone.geom, trace.geom, 1000)
 group by p.id) t2
WHERE t1.id = t2.id

Hors ligne

 

Pied de page des forums

Powered by FluxBB