Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 227
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Entfernung zwischen zwei geografischen Koordinaten berechnen


Autor: Jan Welker
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 10591
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit dieser Klasse kann die Entfernung zwischen zwei geografischen Koordinaten berechnet werden.
Das Ergebnis wird in Kilometern zurückgegeben.


Abgelegt unter: Entfernung, API, Geodata, Geografische Koordinaten, Longitude, Latitude.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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);
	}
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

al_jamal schrieb am:  09.12.2010 15:20:08

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 :)


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.