|
|
@ -0,0 +1,16 @@ |
|
|
|
CREATE OR REPLACE FUNCTION `distance`( |
|
|
|
lon1 DOUBLE, |
|
|
|
lat1 DOUBLE, |
|
|
|
lon2 DOUBLE, |
|
|
|
lat2 DOUBLE |
|
|
|
) RETURNS double |
|
|
|
BEGIN |
|
|
|
SET @earth_radius = 6371; |
|
|
|
SET @dLat = deg2rad(lat2-lat1); |
|
|
|
SET @dLon = deg2rad(lon2-lon1); |
|
|
|
SET lat1 = deg2rad(lat1); |
|
|
|
SET lat2 = deg2rad(lat2); |
|
|
|
SET @a = SIN(@dLat/2) * SIN(@dLat/2) + SIN(@dLon/2) * SIN(@dLon/2) * COS(lat1) * COS(lat2); |
|
|
|
SET @c = 2 * ATAN2(SQRT(@a), SQRT(1-@a)); |
|
|
|
RETURN @earth_radius * @c; |
|
|
|
END; |