Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DELIMITER $$
- DROP PROCEDURE geodist; $$
- CREATE PROCEDURE geodist (IN mylon double, IN mylat double, IN dist_in_km int)
- BEGIN
- declare dist_in_miles float;
- declare lon1 float;
- declare lon2 float;
- declare lat1 float;
- declare lat2 float;
- set dist_in_miles = dist_in_km * 1.609344;
- set lon1 = mylon-dist_in_miles/abs(cos(radians(mylat))*69);
- set lon2 = mylon+dist_in_miles/abs(cos(radians(mylat))*69);
- set lat1 = mylat-(dist_in_miles/69);
- set lat2 = mylat+(dist_in_miles/69);
- SELECT concat(dest.lat, ',' , dest.lon) as LatLng, prcodf, prpay, codpos, libbp, colrue,
- 3956 * 2 * ASIN(SQRT(POWER(SIN((mylat - dest.lat) * pi()/180 / 2), 2) + COS(mylat * pi()/180) *COS(dest.lat * pi()/180) * POWER(SIN((mylon -dest.lon) * pi()/180 / 2), 2))) * 1.609344 as distance_in_km
- FROM
- mondial_relay_pickup_points dest
- WHERE
- dest.lon between lon1 and lon2
- and dest.lat between lat1 and lat2
- having distance_in_km < dist_in_km ORDER BY distance_in_km
- limit 10;
- END;
- $$
- call geodist(4.9979310, 50.5735450, 10);$$
Add Comment
Please, Sign In to add comment