Calcule a distância entre duas coordenadas de latitude / longitude no SQL Server
Crie uma função SQL que calcule a distância entre as coordenadas de latitude / longitude em milhas ou quilômetros
Contexto

Calcular a distância entre dois lugares pode ser bem complicado, existem alguns bons artigos por aí, no entanto, esta página entrará apenas no código.
Para mais informações sobre como as distâncias são calculadas em uma esfera, dê uma olhada em Haversine Formula na Wikipedia , é um pouco complexo, por isso não queremos duplicar o conteúdo.
Encontramos parte desse código online e o adaptamos para uma função SQL, com a capacidade de solicitar milhas ou quilômetros.
Isso só calcula "em linha reta", no entanto, foi testado como parte de um aplicativo que construímos em um iPhone e as distâncias foram pontuais.
SQL Server
CREATE FUNCTION CoordinateDistanceMiles(@Latitude1 float,@Longitude1 float,@Latitude2 float,@Longitude2 float,@Distance NVARCHAR(10))RETURNS FLOATAS BEGIN-- CONSTANTSDECLARE @EarthRadiusInMiles FLOAT=(CASE @Distance WHEN 'Miles' THEN 3959 WHEN 'Kilometers' THEN 6371 ELSE 0 END);DECLARE @PI FLOAT=PI();DECLARE @lat1Radians FLOAT=@Latitude1 * @PI / 180DECLARE @long1Radians FLOAT=@Longitude1 * @PI / 180;DECLARE @lat2Radians FLOAT=@Latitude2 * @PI / 180;DECLARE @long2Radians FLOAT=@Longitude2 * @PI / 180;RETURN Acos(Cos(@lat1Radians)*Cos(@long1Radians)*Cos(@lat2Radians)*Cos(@long2Radians)+Cos(@lat1Radians)*Sin(@long1Radians)*Cos(@lat2Radians)*Sin(@long2Radians)+Sin(@lat1Radians)*Sin(@lat2Radians)) * @EarthRadiusInMiles;END