[Talk-de] Kreuzungsgenerator: Beispiel Dortmund

Lars Francke lars.francke at gmail.com
Do Nov 13 22:20:05 UTC 2008


> 1. Den Straßenschwerpunkt bestimmen: Länge der Straße halbieren und
> dann die Koordinate auf die Straße legen.
> 2. Kreuzungspunkte ermitteln.
>
> Mir ist heute keine Idee für die erste Variante gekommen, weiß jemand,
> wie man das geschickt lösen kann? PostGIS hat sowas doch sicher
> eingebaut, oder?

Da fällt mir diese Funktion von PostGIS ein:
http://postgis.refractions.net/documentation/manual-svn/ST_Line_Interpolate_Point.html

Du uebergibst Ihr einen Linestring und ein Zahl zwischen 0 und 1 - in
Deinem Falle 0.5 und Du bekommst einen Punkt auf dem Linestring
wieder. Klingt nach genau dem was Du willst. Ich benutze das mit
Erfolg beim routen wenn man auf der Karte neben eine oder irgendwo auf
eine Straße klickt. Setzt allerdings voraus, dass du diese Linestrings
hast, die lassen sich aber relativ einfach berechnen.

Hier was ich gemacht habe (auf dem Osmosis-Schema)d
SELECT AddGeometryColumn('ways', 'line', 4326, 'LINESTRING', 2);
UPDATE ways w SET line = (SELECT st_makeline(geom) FROM (SELECT geom
FROM nodes n, way_nodes wn WHERE w.id = wn.way_id AND n.id =
wn.node_id ORDER BY wn.sequence_id) AS foo);
CREATE INDEX idx_way_line ON ways USING GIST (line);

Gruß,
Lars




Mehr Informationen über die Mailingliste Talk-de