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]

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

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!