[OSM-Devserver] PostGIS nächstes Objekt

Tobias Wendorff tobias.wendorff at tu-dortmund.de
Fr Nov 12 18:57:45 CET 2010


Am 12.11.2010 17:56, schrieb Alexander Matheisen:
> ST_Distance_Sphere brauche ich, weil ich die Entfernung in Metern haben
> will.

Achso, Du zeigst die Entfernung an? Ich hab's damals einfach
mit dem Mercator-Verzerrungsfaktor korrigiert. War irgendwas
mit COS ... müsste ic hmal nachschauen.


> 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

Hier klappt's so:
SELECT DISTINCT ON (nameH)
    h.osm_id,
    h.tags->'name' AS nameH, 
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 nameH, distance