Ich benutze PostGIS schon lange, musste aber nie die LINESTRING
Geometrie verwenden ...! :)
Folgendes möchte ich tun: Ich habe eine Tabelle mit Linienfolgen (die Straßen einer bestimmten Stadt darstellen, SRID 3395) und möchte die nächsten Linienfolgen zu einem bestimmten Punkt finden (GPS-Position, SRID 4326).
Die Lösung, die ich gefunden habe, besteht darin, alle Linienfolgen in meinem Punkt mithilfe der expand()
Methode auszuwählen und den Abstand zwischen den einzelnen Linienfolgen und meinem Punkt mithilfe der ST_Distance()
Methode zu bestimmen .
Hier ist die SQL:
SELECT myLineId, myLineName, ST_Distance(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395),myLineGeom) AS myLineDistance
FROM myLines
WHERE myLineGeom && expand(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395), 100)
ORDER BY myLineDistance;
Die Ergebnisse sehen gut aus, aber ich habe das Gefühl, dass etwas in meiner Implementierung nicht stimmt.
1) Glaubt ihr, dass die expand()
alle betroffenen Linestrings bekommen können?
2) Glaubt ihr, das ST_Distance()
ist die richtige Methode? Ich denke, ich mache es falsch, da die Entfernung, die ich erhalten möchte, die kleinste Entfernung zwischen dem Punkt und meiner Linie ist und nicht die Entfernung zwischen dem Punkt und einem der Punkte der Linienfolge.
Illustration: