Calcular la distancia entre dos puntos geográficos en SQL Server

Distancia entre dos puntos por latitud y longitud

3
12753

Calcular la distancia en metros o kilómetros entre dos puntos es más sencilla de lo que parece. Aquí expongo una función, que retorna la distancia lineal entre dos localidades.

A la función le enviamos la latitud y longitud de los dos lugares (punto a y punto b) y el tipo de dato en el que deseamos el resultado, metros (M) o kilómetros (K).

CREATE FUNCTION dn_fn_CalculaDistancia(
@latitud1 float,
@longitud1 float,
@latitud2 float,
@longitud2 float,
@unidad_metrica char(1)
)
RETURNS float
AS
BEGIN

  --Unidad Metrica: K=kilometros  M=metros 
  DECLARE @distancia float
  
  --Radio de la tierra según WGS84
  DECLARE @radius float
  SET @radius = 6378.137 

  DECLARE @deg2radMultiplier float 
  SET @deg2radMultiplier = PI() / 180
  
  SET @latitud1 = @latitud1 * @deg2radMultiplier
  SET @longitud1 = @longitud1 * @deg2radMultiplier
  SET @latitud2 = @latitud2 * @deg2radMultiplier
  SET @longitud2 = @longitud2 * @deg2radMultiplier
    
  DECLARE @dlongitud float
  SET @dlongitud = @longitud2 - @longitud1
    
  SET @distancia = ACOS(SIN(@latitud1) * SIN(@latitud2) + COS(@latitud1) *
                         COS(@latitud2) * COS(@dlongitud)) * @radius
  
  IF @unidad_metrica = 'M'  
     SET @distancia = @distancia * 1000
  
  -- Retorna distancia en Metros o Kilómetros	
  RETURN @distancia

END

Recordemos es la distancia lineal punto a punto.

  • MSSQL calculo distancia coordenadas
  • Cómo calcular distancia entre dos coordenadas GPS
  • Distancia entre dos puntos geográficos
  • Geolocalización en SQL Server
  • Distancia entre dos puntos (dados por longitud y latitud)

3 Comentarios

Dejar respuesta

Please enter your comment!
Please enter your name here