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 Sun 24 April 2016 16:03

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

[POSTGIS] st_difference vs difference dans QGIS

Bonjour,

Je bloque depuis hier soir sur st_difference! Je veux obtenir les données qui sont la difference de deux couches de polygones.
Je pense que st_difference est adaptée à ce problème, mais je n'obtiens aucuns résultats et surtout postgis plante (traitement très long).
Voici ma commande :

Code:

select distinct t1.*,  st_difference (t1.geom, t2.geom)
 from 
 "7123_POINT_TOUCHE_TRIANGLEleft_modif" t1,  "union_sondesjoin_netouchepas" t2

j'ai réalisé un test sur QGIS avec un petit jeu de données et ça fonctionne !

POurquoi POSTGIS ne veut pas me renvoyer le résultat? Peut-être qu'il y a une commande plus rapide?

d'avance merci

Ted

Hors ligne

 

#2 Thu 28 April 2016 12:14

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [POSTGIS] st_difference vs difference dans QGIS

Bonjour,

Aie ! ne faites jamais (ou alors en faisant très attention) de requetes de ce type sans lier les deux tables intervenant dans la requete.
En faisant:

select t1.id, t2.id
from t1, t2;

Vous demander la combinatoire de toutes les lignes de t1 x toutes celles de t2 (30 000 lignes dans une table, 1000 dans l'autre et hop: 30 millions de lignes générées, 30 millions de fois st_difference !!)

Il faut ajouter une jointure entre les deux tables: ici, une jointure spatiale: vous ne voulez faire la différence de deux objets que si ceux-si sont en relation spatiale:

select distinct t1.*,  st_difference (t1.geom, t2.geom)
from
"7123_POINT_TOUCHE_TRIANGLEleft_modif" t1 JOIN  "union_sondesjoin_netouchepas" t2 ON st_intersects(t1.geom, t2.geom)

Il faut alors créer des index spatiaux sur les colonnes geom des deux tables (puis analyse dessus).

Nicolas

Hors ligne

 

#3 Thu 28 April 2016 12:27

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

Re: [POSTGIS] st_difference vs difference dans QGIS

Merci Nicolas,

je teste ça dans la journée normalement

Hors ligne

 

#4 Tue 03 May 2016 12:05

Ted
Participant assidu
Date d'inscription: 16 Jan 2007
Messages: 181

Re: [POSTGIS] st_difference vs difference dans QGIS

Bonjour,

J'ai réussi en traitant les informations par différence d'Id ce qui m'a facilité le travail.
Je n'ai toujours pas réussi à faire fonctionner le st_difference, mais je ne me décourage pas. Sachant, que j'ai réussi à obtenir ce que je voulais, il fallait juste que je structure correctement mes données.

Tes

Hors ligne

 

Pied de page des forums

Powered by FluxBB