[OSM-dev] invalid geometry in planet_polygon

nimix melchiormoos at gmail.com
Tue Aug 24 17:37:07 BST 2010



Stefan de Konink-3 wrote:
> 
> 
> The index is never used... and how do I know? Because I actually tried
> it...
> 
> 

Your right if you want to do a ... WHERE St_IsValid(geom) query, the planner
don't uses the index because 99% of geometries are valid, so an index scan
seems to be useless. In that case I made postgres use the index by double
negation, but that only works fast if there are few invalid geometries:

SELECT * FROM planet_osm_polygon WHERE NOT osm_id IN(SELECT osm_id FROM
planet_osm_polygon WHERE NOT ST_IsValid(geom));

If the table is very lage there might be an other index that is used to
access the rows anyway to whitch you can add the ST_IsValid(geom) filter
like:
CREATE INDEX idx_ploygon_geom_with_valid ON planet_osm_polygon USING gist
(way) WHERE ST_IsValid(way);

This would speedup queries like ...WHERE way && geometry AND
ST_IsValid(way).
-- 
View this message in context: http://gis.638310.n2.nabble.com/invalid-geometry-in-planet-polygon-tp5454655p5457602.html
Sent from the Developer Discussion mailing list archive at Nabble.com.



More information about the dev mailing list