On Fri, 2009-08-21 at 18:51 +0200, Peter Körner wrote:
> >> The second should fetch the border of Germany and the first
> >> one all boundaries in that. At least that's what I want it
> >> to do :)
> > 
> > I just ran that query on my database and used name='Australia' and it works 
> > as you thought it should.
> 
> Yes, you're right. It works with
>     Nederland, Australia, Italia
> 
> but not with
>     Deutschland, Danmark, Polska
> 
> 
> SELECT osm_id, admin_level, name
> FROM planet_osm_polygon
> WHERE ST_Within(way, (
>    SELECT way
>    FROM planet_osm_polygon
>    WHERE boundary='administrative' AND
>          name='Polska'
>    LIMIT 1
> ))
> AND boundary='administrative'
> LIMIT 25
> 
> 
> Any Idea Why?

In part it could be caused by invalid geometries. Postgis reports that
only Polska is actually a valid polygon geometry. Any errors could upset
algorithms like ST_Within().

gis=> select name,isvalid(way) from planet_osm_polygon where
boundary='administrative' AND admin_level='2' AND name in
('Deutschland','Danmark','Polska','Nederland','Australia','Italia');
NOTICE:  Holes are nested
NOTICE:  Hole lies outside shell
NOTICE:  Hole lies outside shell
NOTICE:  Hole lies outside shell
NOTICE:  Hole lies outside shell
    name     | isvalid
-------------+---------
 Nederland   | f
 Polska      | t
 Italia      | f
 Deutschland | f
 Danmark     | f
 Australia   | f
(6 rows)


        Jon



_______________________________________________
talk mailing list
talk@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk

Reply via email to