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)
Como podríamos aplicar esto para la búsqueda de puntos geográficos según su latitud y longitud en determinado radio?
Hola, no entiendo tu pregunta, en la función del ejemplo solo se deben de enviar los valores X y Y para el calculo de la distancia lineal.
Eso hace esta función, solo compara si el resultado es por ejemplo mayor o menor a tu Radio definido.