#1 Tue 18 March 2008 10:34
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
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: 1554
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
En ligne
#4 Wed 19 March 2008 18:18
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
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
En ligne
#5 Wed 19 March 2008 21:20
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