Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 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: 1132

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: 3169
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

 

Pied de page des forums

Powered by FluxBB