Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION calculate_distance_kilometers(lat1 float, lon1 float, lat2 float, lon2 float)
- RETURNS float AS $dist$
- DECLARE
- dist float = 0;
- radlat1 float;
- radlat2 float;
- theta float;
- radtheta float;
- BEGIN
- IF lat1 = lat2 OR lon1 = lon2
- THEN RETURN dist;
- ELSE
- radlat1 = pi() * lat1 / 180;
- radlat2 = pi() * lat2 / 180;
- theta = lon1 - lon2;
- radtheta = pi() * theta / 180;
- dist = sin(radlat1) * sin(radlat2) + cos(radlat1) * cos(radlat2) * cos(radtheta);
- IF dist > 1 THEN dist = 1; END IF;
- dist = acos(dist);
- dist = dist * 180 / pi();
- dist = dist * 60 * 1.1515 * 1.609344;
- RETURN dist;
- END IF;
- END;
- $dist$
- LANGUAGE plpgsql;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement