SQL SERVER calculates the distance according to the latitude and longitude of the map.
Copy codeThe Code is as follows:
Go
-- Create a latitude and longitude distance calculation function
CREATEFUNCTION [dbo]. [fnGetDistance]
-- LatBegin start longitude
-- LngBegin start dimension
(@ LatBegin REAL, @ LngBegin REAL, @ LatEnd REAL, @ LngEnd REAL)
RETURNSFLOAT
AS
BEGIN
-- Distance (km)
DECLARE @ Distance REAL
DECLARE @ EARTH_RADIUS REAL
SET @earth_radius = 6378.137
DECLARE @ RadLatBegin REAL,
@ RadLatEnd REAL,
@ RadLatDiff REAL,
@ RadLngDiff REAL
SET @ RadLatBegin = @ LatBegin * PI ()/180.0
SET @ RadLatEnd = @ LatEnd * PI ()/180.0
SET @ RadLatDiff = @ RadLatBegin-@ RadLatEnd
SET @ RadLngDiff = @ LngBegin * PI ()/180.0-@ LngEnd * PI ()/180.0
SET @ Distance = 2 * ASIN (
SQRT (
POWER (SIN (@ RadLatDiff/2), 2) + COS (@ RadLatBegin) * COS (@ RadLatEnd)
* POWER (SIN (@ RadLngDiff/2), 2)
)
)
SET @ Distance = @ Distance * @ EARTH_RADIUS
-- SET @ Distance = Round (@ Distance * 10000)/10000
RETURN @ Distance
END
@ Distance: km