Ich versuche, eine Methode zu sortieren, um den Abstand zwischen 2 Punkten in C# zu berechnen.Berechnen der Entfernung zwischen 2 Punkten in C#
Dies ist der Code, den ich versucht habe, obwohl ich fürchte, die Antwort, die ich bekomme, ist nicht korrekt.
static void Main()
{
//postcode australia 2600 -> 3000
float latA = -31.997976f;
float longA = 115.762877f;
float latB = -31.99212f;
float longB = 115.763228f;
decimal distance = (DistanceBetween(latA, latB, longA, longB));
Console.WriteLine("Distance is" + distance);
Console.ReadLine();
}
static decimal DistanceBetween(float latA, float longA, float latB, float longB)
{
var RadianLatA = Math.PI * latA/180;
var RadianLatb = Math.PI * latB/180;
var RadianLongA = Math.PI * longA/180;
var RadianLongB = Math.PI * longB/180;
double theDistance = (Math.Sin(RadianLatA)) *
Math.Sin(RadianLatb) +
Math.Cos(RadianLatA) *
Math.Cos(RadianLatb) *
Math.Cos(RadianLongA - RadianLongB);
return Convert.ToDecimal(((Math.Acos(theDistance) * (180.0/Math.PI)))) * 69.09M * 1.6093M;
}
dies wurde aus einer Antwort auf dieser Seite hier angepasst Distance between addresses
Irgendwelche Gedanken auf, was falsch läuft/
Dank Ryan
http://www.movable-type.co.uk/scripts/latlong.html Diese Seite half mir immer heraus mit Entfernungen zwischen zwei Punkten zu berechnen. – woutervs
Danke, gute Verbindung. Ich lege das in eine asp.net-Anwendung, um die Entfernungen zwischen den Postleitzahlen zu berechnen, also muss ich diesen Code richtig bekommen! – user1672867
Meine erste Schätzung wird ein Zeichenproblem in Ihren trignometrischen Conversions sein. Ziehen Sie Wolframalpha oder einen Taschenrechner hoch, gehen Sie durch den Code und sehen Sie die Ergebnisse für jede Ihrer '' Math.Sin''' (oder andere trigonometrischen Funktionen) und sehen Sie, ob die Ergebnisse übereinstimmen. Konvertieren von Grad zu Radianten muss auch Zeichen berücksichtigen, wenn in trig Funktionen –