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 Wed 25 March 2009 19:45

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

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: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: POSGIS réparer les geometries

pas de solution?


Pascal PLUVINET

Hors ligne

 

#3 Thu 26 March 2009 14:14

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

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: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1222
Site web

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: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

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

 

Pied de page des forums

Powered by FluxBB