GreatCircle и MySQL запрос - PullRequest
       5

GreatCircle и MySQL запрос

0 голосов
/ 11 июля 2011

У меня есть таблица с координатами lon / lat Мне нужно получить пользователей из таблицы MySQL, которые находятся на некотором расстоянии от заданных координат (это может быть круг или квадрат)

Я использую класс GreatCircle ( Вопрос о расстоянии по большому кругу ), чтобы получить координаты север-восток-запад на некотором расстоянии от начальной точки:

$distance = 300;

$GreatCircle = new GreatCircle();

// North
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 0, $lon, $lat);
$N_lon = $new_coordinates['lon'];
//$N_lat = $new_coordinates['lat'];

// East
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 90, $lon, $lat);
//$E_lon = $new_coordinates['lon'];
$E_lat = $new_coordinates['lat'];

// South
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 180, $lon, $lat);
$S_lon = $new_coordinates['lon'];
//$S_lat = $new_coordinates['lat'];

// West
$new_coordinates = $GreatCircle->getPositionByDistance($distance, 270, $lon, $lat);
//$W_lon = $new_coordinates['lon'];
$W_lat = $new_coordinates['lat'];

Теперь я могу создать sql, чтобы получить другие координаты из моего стола на расстоянии 300 метров?

$GreatCircle = 
"l.longitude <= $E_lon 
AND l.latitude <= $N_lat
AND l.longitude >= $W_lon
AND l.latitude >= $S_lat";

1 Ответ

2 голосов
/ 11 июля 2011

это сработает, если вы не возражаете против квадрата.(хотя имейте в виду, что иногда значения lat / long являются отрицательными ...)

обычно, вы передаете в функцию два набора пар lat / long и в результате получите расстояние назад.тогда вы просто проверите, находится ли расстояние в пределах вашего предела.(это будет круговая версия)

...