Feedback

C# - Entfernung zwischen zwei geografischen Koordinaten berechnen

Veröffentlicht von am 16.04.2008
(1 Bewertungen)
Mit dieser Klasse kann die Entfernung zwischen zwei geografischen Koordinaten berechnet werden.
Das Ergebnis wird in Kilometern zurückgegeben.
GFU-Schulungen  [Anzeige]

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

static class DistanceCalculator
{
	/// <summary>
	/// Gets the distance between two points.
	/// </summary>
	/// <param name="latitude1">The latitude1.</param>
	/// <param name="longitude1">The longitude1.</param>
	/// <param name="latitude2">The latitude2.</param>
	/// <param name="longitude2">The longitude2.</param>
	/// <returns></returns>
	public static double GetDistanceBetweenTwoPoints(double latitude1, double longitude1, double latitude2, double longitude2)
	{
		double theta = longitude1 - longitude2;
		double distance = Math.Sin(ConvertDecimalDegreesToRadians(latitude1)) *
						  Math.Sin(ConvertDecimalDegreesToRadians(latitude2)) + 
						  Math.Cos(ConvertDecimalDegreesToRadians(latitude1)) * 
						  Math.Cos(ConvertDecimalDegreesToRadians(latitude2)) *
						  Math.Cos(ConvertDecimalDegreesToRadians(theta));
						  
		distance = Math.Acos(distance);
		distance = ConvertRadiansToDecimalDegrees(distance);
		distance = distance * 60 * 1.1515;
		// convert to kilometers
		return distance * 1.609344;
	}

	/// <summary>
	/// Converts the decimal degrees to radians.
	/// </summary>
	/// <param name="degree">The degree.</param>
	/// <returns></returns>
	private static double ConvertDecimalDegreesToRadians(double degree)
	{
		return (degree * Math.PI / 180.0);
	}

	/// <summary>
	/// Converts the radians to decimal degrees.
	/// </summary>
	/// <param name="radian">The radian.</param>
	/// <returns></returns>
	private static double ConvertRadiansToDecimalDegrees(double radian)
	{
		return (radian / Math.PI * 180.0);
	}
}

1 Kommentare zum Snippet

al_jamal schrieb am 09.12.2010:
Vielen Dank, sehr nützlich!

ich hab da noch eine Frage.

Wenn ich eine Tabell mit ein paar gespeicherten koordinaten habe wie könnte ich dann zb abfragen dass ich nur alle städte in einem bestimmten umkreis bekomme? also eine umkreissuche

weil wenn ich dass hier nehem müsste ich ja von jeder stdt erstmal die entfernung berechnen aber vielleicht kann man ja anhand der kkordinaten schon vorher angeben was die minimum lat und lon sind im WHERE

danke :)
 

Logge dich ein, um hier zu kommentieren!