[OSM-dev-fr] Test d'erreur de topologie

Vincent Pottier vpottier at gmail.com
Jeu 30 Sep 15:31:38 BST 2010


Bonjour,

Pour rechercher les landuses sans voirie, j'ai une requête du genre

SELECT ...
FROM        france_polygon AS c
                 LEFT OUTER JOIN france_line AS r
                     ON ( r.highway='residential'
                            OR r.highway='unclassified'
                            OR r.highway='tertiary'
                            OR r.highway='secondary'
                            )
                        AND (
                            ST_Intersects(c.way, r.way)
                            OR ST_Contains(c.way, r.way)
                            )
WHERE c.landuse='residential'
     AND r.osm_id IS NULL

PostGis butte sur certains polygones. J'obtiens des messages du genre :


NOTICE:  TopologyException: side location conflict at -0.693222 44.8857
ERREUR:  GEOS intersects() threw an erro

J'ai déjà corrigé un polygone, je tombe sur un second. Le temps que je 
corrige, que je recharge le FranceLarge.osm.... À raison d'une 
correction par-ci par-là, ça va prendre des années avant que j'ai un 
résultat.
Je suppute que l'erreur vient, dans le cas présent d'un trou dans le 
polygone constitué de plusieurs polygones inner juxtaposés[1]. Lors de 
l'import CLC, les trous contenant plusieurs landuses sont fait avec un 
polygone unique découpant ce trou, et plusieurs polygones le remplissant 
et non par une somme de polygones en inner (j'espère être assez clair).

Y a-t-il un moyen :
soit de visualiser ces trous composés de plusieurs inners (pour 
accélérer la correction),
soit de corriger osm2pgsql (mais ça me semble lointain...)
soit de changer la requête pur éviter ces plantages.

Merci de vos remarques...

[1 
]http://www.openstreetmap.org/?mlat=44.8857&mlon=-0.693222&zoom=18&layers=M 
en l'occurence, le trou est même constitué de deux landuse=retail
--
FrViPofm qui espère que la liste dev n'est pas encore tout à fait morte



More information about the dev-fr mailing list