[OSM-Devserver] PostGIS nächstes Objekt

Jochen Topf jochen at remote.org
Fr Nov 12 18:25:06 CET 2010


On Fri, Nov 12, 2010 at 05:56:07PM +0100, Alexander Matheisen wrote:
> Gerade das geht ja irgendwie nicht. 
> 
> Mache ich also
> 
> SELECT * FROM (SELECT DISTINCT ON (h.tags->'name') h.osm_id,
> h.tags->'name' AS name, ST_X(ST_Transform(h.way, 4326)),
> ST_Y(ST_Transform(h.way, 4326)),
> ST_Distance_Sphere(ST_Transform(s.way,4326), ST_Transform(h.way,4326))
> AS distance FROM planet_point AS s, planet_point AS h WHERE s.osm_id =
> 613578611 AND h.tags->'highway' = 'bus_stop' AND h.way &&
> ST_Buffer(s.way, 2000) ORDER BY distance) as blubb ORDER BY distance
> LIMIT 2;
> 
> kommt folgende Fehlermeldung:
> ERROR:SELECT DISTINCT ON expressions must match initial ORDER BY
> expressions

Doch schwieriger als gedacht.

Wie wärs Du läßt das mit dem DISTINCT weg und machst das stattdessen in der
Anwendung? Also wenn Du weisst, dass ein Name max. 2mal vorkommt, dann machste
halt LIMIT 4 statt LIMIT 2 und schmeisst in der Anwendung dann jeweils das
zweite Vorkommen weg. Das LIMIT zu erhöhen macht das alles nicht wesentlich
langsamer, das teure ist ja der Query und das ORDER BY.

Jochen
-- 
Jochen Topf  jochen at remote.org  http://www.remote.org/jochen/  +49-721-388298