Feedback

C# - Entfernung zwischen zwei geografischen Koordinaten berechnen

Veröffentlicht von am 4/16/2008
(1 Bewertungen)
Mit dieser Klasse kann die Entfernung zwischen zwei geografischen Koordinaten berechnet werden.
Das Ergebnis wird in Kilometern zurückgegeben.
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 12/9/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!