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 18 March 2008 10:34

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 940
Site web

Problème de requête union dans postgis

Bonjour,

Je dispose de deux couches contenant exclusivement des polygones dans postgis.
Je souhaite procéder à une intersection de ces deux couches qui me donnerait une troisième couche résultante.
J'ai essayé d'obtenir un résultat en utilisant cette requête

CREATE TABLE intersection as SELECT intersection(z.the_geom, p.the_geom)  FROM zonage AS z, parcelle AS p


J'ai alors un message d'erreur de ce type:

INFO:  TopologyException: side location conflict (915316,40409.3,40409.3)
ERREUR:  GEOS Intersection() threw an error!


Ma question est la suivante : je voudrais identifier si l'erreur vient de ma requête, de la structure de mes données ou bien de GEOS. Si l'erreur est dans ma requête, où est-t-elle située?

Quelqu'un aurait-t-il une piste?

Je précise que je suis sous Debian Etch, que je suis passé par les packages debian pour l'installation: j'ai donc postgresql 8.1, postgis 1.1.6-2, proj 4.4.9 et geos 2.2.3-3

Merci pour toute aide de votre part

Thomas G

Hors ligne

 

#2 Tue 18 March 2008 18:25

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: Problème de requête union dans postgis

Bonjour Thomas,

1- Première réflex : tes géométires sont elles valides (SELECT isValid(the_geom) FROM zonage; Même chose pour l'autre table) ?
2- intersection renvoit quoi comme réponse : true ou une géométrie , à vérifier,j'ai pas ma doc sous les yeux§.
3- que donne un SELECT intersect() FROM zonage as z, parcelle as p ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Wed 19 March 2008 18:17

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

Re: Problème de requête union dans postgis

L'erreur ne vient pas de la requete mais des geometries traitées par
geos. (Yves, st_intersection renvoie une geometrie, qui peut etre
complexe suivant les geometries en input)
Il faut effectivement verifier la validite des geometries avec
isValid() et eventuellement tenter de corriger les invalides avec qqch
comme st_buffer(geom, 0.0).

Il faut surtout passer a Geos 3.0 rc4 et postgis 1.3.2 (les fonctions
sont desormais appelées st_*)
La 1.1.6 date vraiment trop et de grosses ameliorations ont ete
apportées a geos et postgis depuis.

Donc: mise a jour BD
Migration de la base (ou recreation)
Relancement de la requete.

Nicolas

Hors ligne

 

#4 Wed 19 March 2008 18:18

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

Re: Problème de requête union dans postgis

>  -----------------
>         Citation :
>  CREATE TABLE intersection as SELECT intersection(z.the_geom, p.the_geom)  FROM zonage AS z, parcelle AS p
>  -----------------

Ca serait bien, lors du create table as, de preciser un champ qui
pourrait servir de cle primaire, pour qualifier les objets de la
table.

Nico

Hors ligne

 

#5 Wed 19 March 2008 21:20

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 940
Site web

Re: Problème de requête union dans postgis

Merci

J'ai réglé le souci avec un jeu de test plus simple et comme indiqué par Yves, j'ai fait le test sur la validité de la géométrie de mes données initiales. L'erreur venait de là.

Merci

Thomas G

Hors ligne

 

Pied de page des forums

Powered by FluxBB