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

GEODATA DAYS 2024

#1 Tue 03 July 2012 10:29

nawak
Participant assidu
Date d'inscription: 11 Sep 2007
Messages: 216

probleme st_difference Postgis

Bonjour,

J'essaye de trouver la difference entre deux couches avec la fonction st_Difference() dans postgis. Dans ces deux couches il y a le trait de cote histolitt super précis avec plein de petites iles etc et une zone_lambda (voir illustration).

un :

create table diff_test
as select st_Difference(a.the_geom,b.the_geom) as the_geom
from zone_lambda  a, trait_inter b where a.the_geom && b.the_geom;

ne modifie pas la géométrie de ma zone_lambda et me crée un feuillet de géométries aussi nombreuses qu'il y a d'objet dans ma couche trait_inter...

Je ne sais pas si c'est super clair, enfin si quelqu'un a déjà rencontré ce problème il devrait tilter...

Une soluce ?

Merci

Dernière modification par nawak (Tue 03 July 2012 16:21)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Tue 03 July 2012 14:33

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1224
Site web

Re: probleme st_difference Postgis

Bonjour,

je pense qu'il manque le test d'intersection (st_intersects(a.geom, b.geom)
l'opérateur && teste le chevauchement des rectangles d'encombrement.


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#3 Tue 03 July 2012 16:17

nawak
Participant assidu
Date d'inscription: 11 Sep 2007
Messages: 216

Re: probleme st_difference Postgis

Salut,

effectivement avec cette méthode je n'ai plus que 800 objets modifiés (je n'ai plus que 800 géométries qui se superposent)...Je viens de m'appercevoir que dans le feuillet de géométrie, la première géométrie est belle et bien différenciée par le trait côte et que les autres géométries sont certainement dues à la présence des îles (voir copie d'écran).

Mais comment faire pour n'obtenir qu'une géométrie (différence trait de côte + trouée par les îles) ? Serait-ce un probleme de polygone /multipolygone ?

Hors ligne

 

#4 Wed 04 July 2012 09:56

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1224
Site web

Re: probleme st_difference Postgis

Bonjour,

en calculant la différence entre l'union des objets (équivaut à un seul objet) de la couche trait de côte et la zone lambda.

Par contre la répétitioon des objets montrée dans votre capture d'acran est étrange...


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#5 Wed 04 July 2012 11:27

nawak
Participant assidu
Date d'inscription: 11 Sep 2007
Messages: 216

Re: probleme st_difference Postgis

N'est-ce pas ? Mais j'ai comme l'impression que ce sont les petites îles complétement incluses dans le polygone qui créent la répitition...

Hors ligne

 

#6 Wed 04 July 2012 18:32

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1224
Site web

Re: probleme st_difference Postgis

Bonsoir,

la requête ci-dessous retourne la partie marine de la zone :

Code:

 WITH union_trait_de_cote AS (SELECT st_union(trait_dec.the_geom) AS the_geom FROM temp.trait_dec)
  SELECT st_difference(forme_dec.the_geom, union_trait_de_cote.the_geom) AS the_geom
  FROM temp.forme_dec, union_trait_de_cote;

Celle-ci la partie terreste :

Code:

SELECT st_union(st_intersection(forme_dec.the_geom, trait_dec.the_geom)) AS the_geom
  FROM temp.forme_dec, temp.trait_dec
  WHERE st_intersects(forme_dec.the_geom, trait_dec.the_geom);

Bonne soirée,


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

Pied de page des forums

Powered by FluxBB