#1 Wed 21 November 2012 15:09
[postgis] ERREUR: GEOS buffer() threw an error!
Bonjour,
Je souhaite générer le tampon d'une couche géographique sur une assez grande distance: 15 km
Code:
select st_buffer(the_geom, 15000) as the_geom from bati_insee_tmpn_uu_sel
Mais j'obtiens le message suivant:
Code:
NOTICE: std::bad_alloc ERREUR: GEOS buffer() threw an error! ********** Erreur ********** ERREUR: GEOS buffer() threw an error! État SQL :XX000
J'ai vérifié la validité de ma couche source bati_insee_tmpn_uu_sel de cette façon:
Code:
select count(*) , st_isvalid(the_geom) from bati_insee_tmpn_uu_sel group by st_isvalid(the_geom)
Mais aucune erreur géométrique n'est relevée.
En fait, j'ai l'impression que c'est le tampon qui est généré qui comporte des erreurs géométriques et postgis ne souhaite pas créer un objet invalide géométriquement..
Auriez-vous une idée pour solutionner le problème?
Merci!
geodata au cerema et petits billets en géomatique
Hors ligne
#2 Wed 21 November 2012 16:02
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: [postgis] ERREUR: GEOS buffer() threw an error!
Bonjour,
Quelle version de PostGIS ?
Vous avez reussi a identifier la geometrie qui pose un probleme ?
Nicolas
Hors ligne
#3 Wed 21 November 2012 16:51
Re: [postgis] ERREUR: GEOS buffer() threw an error!
Bonjour,
J'utilise
Code:
SELECT version() "PostgreSQL 8.4.14 on i486-pc-linux-gnu, compiled by GCC gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3, 32-bit" SELECT PostGIS_full_version() "POSTGIS="1.4.0" GEOS="3.1.0-CAPI-1.5.0" PROJ="Rel. 4.7.1, 23 September 2009" USE_STATS"
Fait intéressan: lorsque je lance le tampon depuis QGIS, ce dernier m'indique que les tampons de certains objets n'ont pu être créés à cause d'erreurs géométriques.
En regardant le résultat, j'en vois en effet deux.
Dans postgis, je lance alors la requête de tampon de manière ciblée sur l'un des 2 objets qui pose pb et j'obtiens l'erreur citée ci-dessus
Code:
select st_buffer(the_geom, 15000) as the_geom from u_mr.bati_insee_tmpn_uu_sel where uu2010='00759'
Code:
NOTICE: std::bad_alloc ERREUR: GEOS buffer() threw an error! ********** Erreur ********** ERREUR: GEOS buffer() threw an error! État SQL :XX000
Avec une valeur de tampon plus faible: 200m, je n'obtiens pas d'erreur.
peut-être cela vient-il de la version de postgis utilisée ou bien voyez-vous une autre façon de résoudre le pb?
je n'ai pas la main sur le serveur pour maj postgis..
geodata au cerema et petits billets en géomatique
Hors ligne
#4 Wed 21 November 2012 18:41
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: [postgis] ERREUR: GEOS buffer() threw an error!
Bonsoir,
Effectivement, la version de PostGIS est tres vieille.
Il y a eu de nombreuses améliorations depuis, notamment dans le moteur algorithmique GEOS.
Si vous n'avez pas la main, pouvez-vous demander a celui ou celle qui l'a si une montée en version est possible ?
Pouvez-vous faire parvenir le ou les geometries qui plantent, qu'on regarde si des versions plus récentes règlent le pb ?
Sinon une piste peut etre:
Appliquer st_snapToGrid ou st_simplifyPreserveGeometry pour tenter de modifier légèrement les géométries en entrée (en deçà de la précision des données).
Nicolas
Hors ligne