SQL Server & ASP .NET Blog

Interessantes und Wissenswertes

Distanz zwischen zwei GPS-Koordinaten per SQL berechnen

Um die Distanz zwischen zwei GPS Koordinaten in km zu berechnen kann folgende Funktion verwendet werden.

Hier im Beispiel wird eine Tabelle “Points” mit den Koordinaten in den Feldern “Latitude” und “Longitude” benötigt.

CREATE FUNCTION [dbo].[fCalcDistanceBetweenGPSCoordinates](@Point1ID INT, @Point2ID INT)
RETURNS FLOAT
AS
BEGIN
DECLARE @lat1 FLOAT
DECLARE @lon1 FLOAT
SELECT @lat1 = Latitude, @lon1 = Longitude
FROM dbo.tPoints
WHERE Point1 = @Point1ID
DECLARE @lat2 FLOAT
DECLARE @lon2 FLOAT
SELECT @lat2 = Latitude, @lon2 = Longitude
FROM dbo.tPoints
WHERE PointID = @Point2ID
DECLARE @dLat FLOAT
SET @dLat = (@lat1-@lat2) * PI() /180
DECLARE @dLon FLOAT
SET @dLon = (@lon1-@lon2) * PI() / 180
DECLARE @a FLOAT
SET @a = SIN(@dLat/2) * SIN(@dlat/2) + 
COS(@lat1 *PI()/180) * COS(@lat2*PI()/180) *
SIN(@dlon/2) * SIN(@dlon/2);
DECLARE @c FLOAT
SET @c = 2 * ATN2(SQRT(@a), SQRT(1-@a))
DECLARE @d FLOAT
SET @d = 6371 * @c 
RETURN @d
END

Die Berechnung habe ich mir natürlich nicht selber ausgedacht sondern von [hier]

Wer sich mit der Theorie auseinandersetzen möchte, findet [hier] einen passenden Artikel.

blog comments powered by Disqus