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Ă© ?

#1 Fri 19 November 2021 14:51

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

Eviter la redondance jointure avec buffer

Bonjour

J'ai une couche de points que je cherche Ă  joindre Ă  une couche de surface  sur la base d'une distance de 1000m ,

J'ai utilisé st_dwithin(b.geom, a.geom,1000) le souci c'est que du coup un point peut se retrouver dans plusieurs polygones, j'ai donc rajouté limit 1 mais je pense que j'ai pas mis la limite au bon endroit ( je me retrovue que avec 1 jointure )

Hors ligne

 

#2 Fri 19 November 2021 22:13

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 455

Re: Eviter la redondance jointure avec buffer

Bonjour, que voulez-vous faire pour les points qui se trouvent dans le rayon de 1000m de plusieurs polygones ?
Autrement dit, quelles sont les rĂšgles que vous cherchez Ă  appliquer avec votre requĂȘte ?

Et en effet le Limit 1 Ă  la fin d'une requĂȘte limite le nombre de rĂ©sultats Ă ... 1. Donc votre rĂ©sultat semble cohĂ©rent.

Dernière modification par p.jeremie (Fri 19 November 2021 22:13)

Hors ligne

 

#3 Tue 23 November 2021 08:46

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 1044

Re: Eviter la redondance jointure avec buffer

Peut-ĂȘtre ajouter un ORDER BY ST_Distance(b.geom, a.geom) pour ne garder que le polygone le plus proche.


Sylvain M.

Hors ligne

 

#4 Tue 23 November 2021 08:53

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

Re: Eviter la redondance jointure avec buffer

Bonjour,

La question de p.jeremie est légitime smile

En utilisant des fonctions comme stClusterwithin() sur vos polygones, vous pourrez modéliser la relation un point appartient à n polygones et à quels polygones.
AprĂšs je ne veux pas ĂȘtre dĂ©sagrĂ©able, mais la formulation de votre problĂšme, dĂ©note d'une certaine confusion, et les fonctions que je cites ne sont pas d'un usage simple, ça nĂ©cessite de bien comprendre ce que l'on fait.


Christophe
L'avantage d'ĂȘtre une Ăźle c'est d'ĂȘtre une terre topologiquement close

Hors ligne

 

#5 Tue 23 November 2021 14:12

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1226

Re: Eviter la redondance jointure avec buffer

Vous pouvez aussi utiliser DISTINCT dans votre clause SELECT pour supprimer les doublons.
Tout depends du resultat auquel vous voulez arriver.

Hors ligne

 

#6 Tue 23 November 2021 17:12

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

Re: Eviter la redondance jointure avec buffer

Je suis allé vite dans le développement du problÚme.

si je fais une jointure simple entre 2 points et 2 polygone distant disons de 10 m  et que ma clause de jointure est une distance de 1000m je vais me retrouver avec des doublons.  Le rĂ©sultat Ă©tant que chaque surface ne doit possĂ©der ou pas, un identifiant de point, et cette identifiant de point ne peut pas se retrouver dans un autre polygone (unique). hors dans l'exemple citĂ© je me retrouverais avec 4 lignes car chacune rĂ©ponde Ă  la condition de jointure alors que je n'en veux que deux.   

J'ai effectué un cross join lateral (...... where b.geom <-> a.geom < 1000 limit 1) , mais je me retrouve néanmoins avec des doublons (ce qui est logique). il faudrait pour chaque relation mettre l'identifiant du point testé dans une liste et mettre une clause qui vérifie que l'identifiant testé n'est pas déjà dans la liste.

Dernière modification par neskuik01 (Wed 24 November 2021 12:22)

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo