Ich muss den Abstand von einem lat/lng Punkt zu einer Linie bekommen. Natürlich muss der Große Kreis folgen.Entfernung von Punkt zu Linie Großkreisfunktion funktioniert nicht richtig.
fand ich einen großen Artikel zu diesem Thema bei http://www.movable-type.co.uk/scripts/latlong.html
aber der Code funktioniert nicht richtig. Entweder mache ich etwas falsch oder es fehlt etwas. Hier ist die Funktion in Frage. Siehe den Link für die anderen Funktionen, falls erforderlich.
var R = 3961.3
LatLon.crossTrack = function(lat1, lon1, lat2, lon2, lat3, lon3) {
var d13 = LatLon.distHaversine(lat1, lon1, lat3, lon3);
var brng12 = LatLon.bearing(lat1, lon1, lat2, lon2);
var brng13 = LatLon.bearing(lat1, lon1, lat3, lon3);
var dXt = Math.asin(Math.sin(d13/R)*Math.sin(brng13-brng12)) * R;
return dXt;
}
lat/LON1 = -94,127592, 41,81762
lat/LON2 = -94,087257, 41,848202
lat/lon3 = -94,046875, 41,791057
Dies berichtet 0,865 Meilen. Die tatsächliche Entfernung beträgt 4,29905 Meilen.
Irgendwelche Hinweise, wie Sie das beheben können? Ich bin kein Mathematiker, nur ein langjähriger Programmierer.
Auch ich habe einige Probleme mit der Berechnung der Cross-Track-Abstand zu senden. Ich möchte, dass Sie Ihren Code als Beispiel verwenden, um meine Ergebnisse zu überprüfen, aber ich habe Probleme, Ihre Koordinaten zu verstehen. Wie kommt es, dass Sie Breitengrade <-90 haben, wenn sie nur zwischen -90 und +90 definiert sind? – oschrenk