Autor | Zpráva | ||
---|---|---|---|
Chuchycek Profil |
#1 · Zasláno: 8. 6. 2014, 19:40:58
Ahoj,
narazil jsem na takový problém, mám gps souřadnice x, y a snažím se napsat sql, které by mi vypsalo nejbližší body, od bodů které zadám. Tohle je jistě blbost. Nesetkal se s tím někdo, kdo by mi mohl poradit, jak to lze udělat přes klauzuli WHERE? SELECT * FROM builds ORDER BY build_location_x = '50.250718', build_location_y='14.583435' DESC |
||
Alphard Profil |
#2 · Zasláno: 8. 6. 2014, 19:59:04
Spočítat vzdálenost a podle ní řadit.
DROP FUNCTION IF EXISTS `gps_distance`;; CREATE FUNCTION `gps_distance`(lat1 FLOAT,lng1 FLOAT,lat2 FLOAT,lng2 FLOAT) RETURNS float READS SQL DATA DETERMINISTIC BEGIN SET lat1 = lat1 * pi() / 180; SET lng1 = lng1 * pi() / 180; SET lat2 = lat2 * pi() / 180; SET lng2 = lng2 * pi() / 180; RETURN acos ( cos(lat1)*cos(lng1)*cos(lat2)*cos(lng2) + cos(lat1)*sin(lng1)*cos(lat2)*sin(lng2) + sin(lat1)*sin(lat2) ) * 6372.795; END;; Možná to platí jen pro naši oblast, už si nevzpomínám na zdroj. |
||
Chuchycek Profil |
#3 · Zasláno: 8. 6. 2014, 20:07:17
Alphard:
Ale tohle se řeší v případě, že já mám dva body a chci jejich oblast, ale pokud chci z jednoho bodu udělat okruh? |
||
juriad Profil |
#4 · Zasláno: 8. 6. 2014, 20:09:01
SELECT gps_distance(build_location_x, build_location_y, 50.250718, 14.583435), * FROM builds ORDER BY 1 |
||
Chuchycek Profil |
#5 · Zasláno: 8. 6. 2014, 20:10:14
juriad:
Aha :D, sorry, dík |
||
Časová prodleva: 11 let
|
0