Autor Zpráva
Chuchycek
Profil
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
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
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
SELECT gps_distance(build_location_x, build_location_y, 50.250718, 14.583435), * FROM builds ORDER BY 1
Chuchycek
Profil
juriad:
Aha :D, sorry, dík

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: