Ich benutze Openlayers3 und ich habe die codierte Geometrie. Ich kann die Koordinaten (lat, lng) für alle Punkte im Pfad bekommen (ungefähr 500 Punkte pro Pfad). Wie berechne ich den Abstand zwischen dem Anfang des Pfades bis zu diesem Punkt, wenn ein zufälliger Punkt innerhalb des Pfades gegeben ist?Wie berechnet man einen Abstand zwischen zwei Punkten entlang eines Pfades?
Ich habe einen Blick auf Turfjs geworfen und es sieht sehr vielversprechend aus, aber die Lösung, die ich mir vorgestellt habe, wäre nicht sehr nett. Unter Verwendung eines zufälligen Punktes (p1) könnte ich den Punkt (p2) des Weges entdecken, der p1 am nächsten ist, dann ein neues Polygon erzeugen und seine Gesamtdistanz berechnen. Es kann Leistungsprobleme geben, obwohl die Suche O (log n) und das neue Polygon O (n) wäre.
EDIT: der zufällige Punkt ist nicht unbedingt im Pfad, es ist eine GPS-Koordinate und es gibt einen Spielraum für Fehler.
EDIT 2: Schätzung über die Anzahl der Punkte war weg, hat jeder Weg über 500 Punkte, nicht 5k
jemand einen besseren Ansatz kennt? Ich bin nicht sehr erfahren mit Openlayers3 oder Turfjs.
5k Punkte pro Weg ziemlich dicht klingt, können Sie dies als Linienzug interpretieren. Ich würde ein Array erstellen (und zwischenspeichern), das die Summe der Abstände vom Anfang zu jedem Punkt enthält. Daher können Sie die Entfernung zwischen zwei Ihrer Punkte durch 2 Array-Lookups + eine Subtraktion erhalten. – Thomas
Sie können die Punkte des Pfads schleifen, Abstände einzelner Pfade berechnen, den letzten Punkt speichern und in jeder Iteration überprüfen, wenn der gewünschte Punkt zwischen dem letzten Punkt und dem tatsächlichen Punkt liegt. Wenn die Bedingung wahr ist, verwenden Sie diesen zufälligen Punkt als tatsächlichen Punkt und beenden Sie die Berechnung. –
@Thomas, dieser zufällige Punkt ist nicht eine der Koordinaten, also ist es nicht nur eine einfache Suche, ich muss die am nächsten liegende Koordinate zum zufälligen Punkt finden. – lalkmim