#1 Wed 31 March 2010 13:47
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Postgis St_Intersect
Bonjour
Je fais une requête d'intersection postgis entre une table et des MultiPoint
SELECT proid FROM table WHERE ST_intersects (the_geom, ST_GeometryFromText ('MULTIPOINT((323200 2457700),(493200 2439300))',27572))
et j'obtiens l'erreur suivante
NOTICE: TopologyException: side location conflict 401354 2.45319e+06
ERREUR: GEOS intersects() threw an error!
********** Erreur **********
ERREUR: GEOS intersects() threw an error!
État SQL :XX000
Suite à ce post http://georezo.net/forum/viewtopic.php?id=53437 j'ai fait la requête
SELECT isValid(the_geom) FROM document_gestion_durable where isValid(the_geom)=false;
J'ai 97 lignes à false. J'ai du mal à comprendre le problème et surtout comment le résoudre.
Pouvez-vous m'éclairer?
Tio.
Hors ligne
#2 Wed 31 March 2010 14:13
Re: Postgis St_Intersect
Bonjour,
Il faut afficher les géométries en WKT pour voir le problème : polygone non fermé, limite des polygones qui se croisent, trou en bordure de limite. Normalement l'import aurait dû planté. Mais sans informations supplémentaires impossible de trouver le problème
Tu peux utiliser ST_IsValidReason pour déterminer quelle est la source d'erreur. Version 1.4 de PostGIS seulement !
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 31 March 2010 17:47
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Postgis St_Intersect
Bonjour,
après avoir pris connaissance des raisons d'invalidité des geometries, tu peux tester cette fonction (à rajouter)
http://www.sogis1.so.ch/sogis/dl/postgi … ometry.sql
Pascal PLUVINET
Hors ligne
#4 Wed 31 March 2010 19:14
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Re: Postgis St_Intersect
Ok merci à tous les deux. La requête d'Yves est lancée depuis 5 heures et j'attends toujours le résultat. Je vous tiens au courant.
Merci Tio
Hors ligne
#5 Thu 01 April 2010 15:16
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Re: Postgis St_Intersect
Les requêtes ne sont toujours pas terminées. Je me demande si c'est normal?
Select ST_IsValidReason(the_geom) from document_gestion_durable where isValid(the_geom)=false 22120000ms
et
Select ST_IsValidReason(the_geom) from document_gestion_durable 82845000ms.
A votre Avis ??
Tio
Hors ligne
#6 Thu 01 April 2010 17:39
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Postgis St_Intersect
Les requêtes ne sont toujours pas terminées. Je me demande si c'est normal?
Select ST_IsValidReason(the_geom) from document_gestion_durable where isValid(the_geom)=false 22120000ms
et
Select ST_IsValidReason(the_geom) from document_gestion_durable 82845000ms.
A votre Avis ??
Tio
Bonjour,
Grosse volumétrie des données ? ou objets tres complexes en base ?
IsValid scanne tous les objets et pour chacun les analyse de facon topologique. Ca peut donc prendre du temps.
Nicolas
Hors ligne
#7 Fri 02 April 2010 19:28
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Re: Postgis St_Intersect
Il y a 2200 polygones dont une bonne moitié multiploygon.
il y a 96 objets qui déconnent. Si les requête ne sont pas terminé lundi je le ferai ligne par ligne. Merci Je vous tiens au courant
Hors ligne
#8 Fri 02 April 2010 22:19
Re: Postgis St_Intersect
bizarre que la moitié des données soient en polygone et d'autres en simple !
un update des géométrie simple en multi serait déjà une bonne chose (multi(the_geom) WHERE issimple(the_geom)=false)
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
#9 Fri 09 July 2010 14:28
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Re: Postgis St_Intersect
Bonjour
J'ai avancé le sujet et vous remercie de ces informations je corrige les problèmes au et à mesure.
Toutefois, je vous joins un fichier image qui est un multipolygon jointif en un point. La requête isValidReason retourne "Ring Self-intersection[421847.148556714 2458020.34076502]".
Quel votre analyse sur ce type de problème?
Merci de votre aide Tio
Hors ligne
#10 Fri 09 July 2010 14:53
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Postgis St_Intersect
Bonjour
J'ai avancé le sujet et vous remercie de ces informations je corrige les problèmes au et à mesure.
Toutefois, je vous joins un fichier image qui est un multipolygon jointif en un point. La requête isValidReason retourne "Ring Self-intersection[421847.148556714 2458020.34076502]".
Quel votre analyse sur ce type de problème?
Merci de votre aide Tio
Bonjour,
Comme l'erreur l'indique, il y a une self intersection, sur le point indiqué:
OGC indique que les elements d'un multipolygone ne peuvent se toucher qu'en un point fini.
Dans votre cas, il doit y avoir une vraie intersection, due aux erreurs d'arrondi des coordonnées.
Deux solutions (combinables, meme):
1°) Reduire la précision des coordonnées des geometries: telles qu'indiquées dans votre mail, ces coordonnées ont l'air d'etre métrique. Garder 5 ou 6 decimales ne sert a rien, a moins que les données aient ete numérisées avec une précision... diabolique.
Idealement, le fournisseur de données indique la précision de génération de ces données.
La methode snapToGrid(geom, precision), permet de forcer un certain nombre de décimales. (ou un nombre entier, sur des données métriques, cela représente une précision au metre)
2°) Corriger les polygones invalides en lancant un buffer(geometry, 0) sur ces polygones (et reverifier la validité des polygones).
Nicolas
Hors ligne