Pages: 1
- Sujet précédent - Correction Topologique linéaire postgis : SQL/MM Spatial exception - g - Sujet suivant
#1 Mon 09 December 2013 15:47
- Julien
- Membre
- Lieu: Paris
- Date d'inscription: 13 Feb 2006
- Messages: 138
Correction Topologique linéaire postgis : SQL/MM Spatial exception - g
Bonjour
je souhaite traiter un réseau non topologique (routes qui se croisent) en utilisant postgis. Sur un reseau ultra simple cela fonctionne bien, mais dès que j'utilise un réseau plus important je finis par avoir cette erreur : SQL/MM Spatial exception - geometry crosses edge xxxxxx lorsque j'execute la requête suivante :
UPDATE roadsbrut SET topo_geom = topology.toTopoGeom(geometrie, 'osm_fr_topo',1, 1);
Quelqu'un aurait-il eu le même problème avec la fonction toTopoGeom ?
merci d'avance
Julien
Hors ligne
#2 Mon 09 December 2013 22:48
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1159
Re: Correction Topologique linéaire postgis : SQL/MM Spatial exception - g
Salut,
Certaines de tes linestring doivent créer des faces invalides (qui se chevauchent) . ToTopoGeom ne gère pas çà, c'est a toi de te débrouiller.
une bonne approche consisterait à rattraper les éventuelles erreurs de topologie et de les stocker dans une table en vue d'un traitement ultérieur.
En SQL pur, je ne pense pas que ce soit possible, mais avec du PL/SQL http://www.postgresql.org/docs/9.2/stat … tures.html ca devrait le faire.
Dernière modification par tumasgiu (Mon 09 December 2013 23:12)
Hors ligne
#3 Mon 09 December 2013 23:29
- pchevallot
- Participant occasionnel
- Lieu: METZ
- Date d'inscription: 24 Apr 2008
- Messages: 15
- Site web
Re: Correction Topologique linéaire postgis : SQL/MM Spatial exception - g
Salut,
Peut-être avec quelque chose du genre, avec tes propres paramètres bien entendu :
Code:
DO $$DECLARE r record; BEGIN FOR r IN SELECT * FROM roadsbrut LOOP BEGIN UPDATE roadsbrut SET topo_geom = topology.toTopoGeom(geometry, 'osm_fr_topo', 1, 1.0) WHERE ogc_fid = r.ogc_fid; EXCEPTION WHEN OTHERS THEN RAISE WARNING 'Loading of record % failed: %', r.ogc_fid, SQLERRM; END; END LOOP; END$$;
tel que trouvé sur le blog de Mathieu Leplatre : http://blog.mathieu-leplatre.info/use-p … s.html#id3
De même, en essayant avec une tolérance plus basse ?
Bonne continuation,
Pascal
Hors ligne
#4 Tue 10 December 2013 09:37
- Julien
- Membre
- Lieu: Paris
- Date d'inscription: 13 Feb 2006
- Messages: 138
Re: Correction Topologique linéaire postgis : SQL/MM Spatial exception - g
Bonjour
merci beaucoup pour ces précieux conseils.
Je vous tiens au courant.
Concernant la tolérance je l'avais fixé à un mètre.
Julien
Hors ligne
#5 Wed 11 December 2013 11:48
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3197
- Site web
Re: Correction Topologique linéaire postgis : SQL/MM Spatial exception - g
Bonjour,
Pour ma part j'utilise TopoGeo_AddLineString('mytopo',st_geomfromwkb(:wkb,SRID),0)
Cf : http://postgis.net/docs/manual-2.0/Topo … tring.html
C'est mieux AMHA pour votre cas d'utilisation.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
Pages: 1
- Sujet précédent - Correction Topologique linéaire postgis : SQL/MM Spatial exception - g - Sujet suivant