#1 Wed 25 March 2009 19:45
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
POSGIS réparer les geometries
Bonjour,
j'ai une couche de polygones (plusieurs dizaines de milliers de polygones) sous postgis (MULTIPOLYGON).
Je souhaite nettoyer les geometries. J'ai tenté plusieurs solutions :
1. enlever les polygones qui ne sont pas valides (fonction isvalid(the_geom) = 'FALSE' or
cela me supprime environ 10 000 objets (j'aurai toléré une dizaine pour éventuellement réparer à la main)
2. J'ai tenté avec la fonction cleanGeometry téléchargée à l'adresse suivante :
http://www.sogis1.so.ch/sogis/dl/postgi … ometry.sql
or j'ai un message d'erreur du style : Error encountered checking Geometry returned from GEOS
connaissez-vous cette fonction? avez-vous eu des soucis? Faut-il avoir version plus récente...?
3. J'ai tenté avec Arcmap et la fonction "repair geometry". Après un temps fou, je suis étonné car j'ai perdu plus de 1000 polygones. De plus, Lorsque je réimporte le shape "réparé" dans POSTGIS, j'ai encore 500 polygones invalides.
4. je me suis inspiré de l'exemple trouvé sur cette page :
http://postgis.refractions.net/support/ … anPolygons
La couche finale a 1000 polygones de +; ces 1000 polygones ont certains champs vides (NULL)
Par contre, j'ai cette fois-ci aucun problème de geométrie sur cette nouvelle couche.
Si vous n'avez pas de solutions précises, peut-être aurez-vous des remarques ou des retour d'expérience.
Je n'ai pas encore essayé sous grass, mais j'imagine qu'il existe des fonctions pour réparer les géométries.
Merci d'avance.
Pascal PLUVINET
Hors ligne
#2 Thu 26 March 2009 14:06
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSGIS réparer les geometries
pas de solution?
Pascal PLUVINET
Hors ligne
#3 Thu 26 March 2009 14:14
Re: POSGIS réparer les geometries
Bonjour,
Avez vous regarder pourquoi ces 10 000 objets posent problèmes ?
Il me semble que dans la prochaine version de postGIS vous aurez la possibilité d'en savoir plus sur le problème que peuvent poser certaines géométries.
GRASS peut être une solution puisqu'il va recréer la topologie.
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
#4 Thu 26 March 2009 14:20
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSGIS réparer les geometries
Deux types de problèmes :
soit "Ring Self-intersection at or near point 859714 1.8822..." (autointersection)
soit " IllegalArgumentException: points must form a closed"
Avez-vous déjà essayer cleangeometry?
Savez-vous qand devrait sortir les nouvelles versions de postgis?
Pascal PLUVINET
Hors ligne
#5 Thu 26 March 2009 14:30
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: POSGIS réparer les geometries
Bonjour,
Vous pourriez essayer de faire un
UPDATE ma_table set the_geom = st_buffer(the_geom,0)
qui devrait construire une géométrie nouvelle et propre à partir de vos géométries.
ça peut le faire...
Bonne chance !
Guillaume
Hors ligne
#6 Thu 26 March 2009 17:03
- Lionel B
- Participant actif
- Lieu: Macon
- Date d'inscription: 5 Sep 2005
- Messages: 83
Re: POSGIS réparer les geometries
Bonjour,
vous pouvez essayer aussi un snaptogrid en choisissant comme pas de grille votre delta d'incertitude maximale sur le XY des points.
Lionel
Hors ligne
#7 Thu 26 March 2009 18:51
Re: POSGIS réparer les geometries
Bonsoir,
j'ai déjà utilisé cleangeometry sur une table d'occupation du sol de 380000 objets.
983 géométries étaient fausses après import dans postgis.
La mise à jour de ma colonne "geométrie" update avec st_buffer(geometrie,0) a rendu les géométries valides mais la surface de ma couche a augmenté.
Je m'explique, la somme des intersections entra ma couche d'occupation du sol et mes zones d'étude devenait supérieure à la somme des surfaces de mes zones d'étude.
C'est l'utilisation de la fonction cleangeometry qui a solutionné mon problème. Toutes mes géométries sont valides et la somme de mes surfaces aussi.
Pour information, mon fichier shp de base n'avait pas de géométries invalides, c'est leur transformation avec shp2pgsql qui les as invalidées.
j'ai "détaillé" le problème et la manip ici : http://sig.cenlr.org/wakka.php?wiki=Act … anPolygons.
Concernant les versions :
environnement windows
select postgis_geos_version() => 3.0.0-CAPI-1.4.1
select postgis_lib_version() => 1.3.3
Dernière modification par Mathieu BOSSAERT (Thu 26 March 2009 18:53)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#8 Sun 29 March 2009 20:49
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: POSGIS réparer les geometries
merci pour vos réponses.
pour l'instant j'ai combiner un "repair geometry" sur Arcgis et un buffer(the_geom,0) sur Postgis.
A l'occasion, je tenterai d'autres manip 100% postgis.
Pascal PLUVINET
Hors ligne