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 Tue 29 October 2019 22:11

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

Afficher distances

Bonjour à tous,

Je dispose d'une base de donnée spatiale sur PostGre représentant les maisons dans une grande ville. Je souhaiterais créer un champ qui afficherait "COLLE" si une maison est situé à moins de 20m d'une autre, et "SEPARE" dans le cas inverse.

J'ai réussi à m'approcher de la solution, en calculant la distance la plus courte qui sépare 2 maisons avec le code :

Code:

select a.id_rte500, b.id_rte500, st_distance(a.geom, b.geom) as distance
from gare a, gare b
where st_distance(a.geom, b.geom) < 500 and (a.id_rte500 != b.id_rte500)
order by distance

Cependant, je n'ai que les distances les plus courtes d'affichées.

Merci à vous.

Hors ligne

 

#2 Wed 30 October 2019 09:25

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

Re: Afficher distances

Bonjour,

Vous pouvez essayer st_clusterDBSCAN qui semble faire le job par rapport à votre demande.

Voici un exemple testé sur une de mes bases,  à adapter :

Code:

WITH hello as (SELECT * FROM (SELECT id, ST_ClusterDBSCAN(the_geom, eps:=19.99999,  minpoints := 2) OVER () as cid, the_geom FROM batiment ) t1
WHERE t1.cid IS NOT NULL) 

SELECT *, CASE WHEN id IN (SELECT id FROM hello ) THEN 'collé' ELSE 'separé' END as relation FROM batiment

Hors ligne

 

#3 Tue 05 November 2019 22:16

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

Re: Afficher distances

Merci à vous smile

Hors ligne

 

#4 Wed 06 November 2019 09:34

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3169
Site web

Re: Afficher distances

Bonjour

Vous pouvez aussi pour régler la distance utiiser la fonction st_clusterwithin(geometryset,distance)


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

Pied de page des forums

Powered by FluxBB