[OSM-Devserver] pgsql/hstore für POI-Karten!

Sven Geggus lists at fuchsschwanzdomain.de
Sa Mär 20 18:29:43 CET 2010


Sven Geggus <lists at fuchsschwanzdomain.de> wrote:

> Das scheint irgendwie an dem Union im view zu liegen. Wenn man die
> Anfragen direkt auf die germany_osm_hstore_point bzw.
> germany_osm_hstore_line loslässt sind die schnell.

Offensichtlich war der view keine so gute Idee. Man möchte halt nicht
für alle Geometrien den centroid ausrechnen sondern erst die
Ergebnisse des spacial query. In meinem Fall ohne spacial query war
das nicht relevant weil da der Index des hstore zum tragen kam.

Keine Ahnung ob man das folgende dann noch in einen view reinkriegt.
Der folgende fluch braucht jedenfalls immer unter 100ms:

SELECT tags->'name',astext(Centroid(way))
FROM germany_osm_hstore_line
  WHERE ST_Intersects(way, st_transform(SetSRID('BOX(8.36410 49.00026, 8.38170 49.01380)'::box2d,4326),900913))
  AND (tags->'amenity') = 'restaurant'
UNION ALL
SELECT tags->'name',astext(way) FROM germany_osm_hstore_point
  WHERE ST_Intersects(way, st_transform(SetSRID('BOX(8.36410 49.00026, 8.38170 49.01380)'::box2d,4326),900913))
  AND (tags->'amenity') = 'restaurant';

Den hack mit dem (tags ? 'amenity') braucht man in Deinem Fall nicht,
weil der index auf dem hstore sowieso nicht verwendet werden kann.

Gruss

Sven

-- 
"Ich fürchte mich nicht vor der Rückkehr der Faschisten in der Maske der
Faschisten, sondern vor der Rückkehr der Faschisten in der Maske der
Demokraten" (Theodor W. Adorno)
/me is giggls at ircnet, http://sven.gegg.us/ on the Web