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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Fri 19 November 2021 14:51

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

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

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

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: 3163
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: 1129

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

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

Powered by FluxBB