Es gibt eine Polylinie mit einer Liste von Koordinaten der Ecken = [(x1, y1), (x2, y2), (x3, y3), ...] und einem Punkt (x, y). In Shapely gibt geometry1.distance(geometry2)
den kürzesten Abstand zwischen den beiden Geometrien zurück.Koordinate des nächsten Punktes einer Linie
>>> from shapely.geometry import LineString, Point
>>> line = LineString([(0,0),(5,7),(12,6)]) #geometry2
>>> list(line.coords)
[(0.0, 0.0), (5.0, 7.0), (12.0, 6.0)]
>>> p = Point(4,8) #geometry1
>>> list(p.coords)
[(4.0, 8.0)]
>>> p.distance(line)
1.4142135623730951
Aber ich muß auch die Koordinaten des Punktes auf der Linie finden, der am nächsten zu dem Punkt (x, y) ist. Im obigen Beispiel ist dies die Koordinate des Punkts auf dem LineString-Objekt, der 1,4142135623730951 Einheit entfernt von Punkt (4,8) ist. Die Methode distance() sollte die Koordinaten bei der Berechnung der Entfernung haben. Gibt es einen Weg, um es von dieser Methode zurück zu bekommen?
kurze Nachricht für alle, die den Posten werden folgende könnte: 'line.project (p)' Maßnahmen der Projektionspunkt entlang der Linie vom Startknoten-Koordinate in dem Argument von Linestring() -Methode angegeben. Aber 'np = line.interpolate (line.project (p))' gibt den POINT (5 7) wie in globalen Koordinaten, nicht vom Anfang der Zeile. Hier begann die Linie von (0,0). Es könnte also verwirrend sein. –