Рассчитать расстояние

Я создаю базу данных по набору, и мне нужно, чтобы она выполняла несколько задач, которые включают интеграцию способа вычисления расстояния:

1) рассчитать расстояние, которое кандидат живет от клиента?

2) рассчитать клиентов в радиусе кандидатов, доступных для работы в любой день?

3) вычисление количества кандидатов с правильной квалификацией для вакансии в радиусе клиента.

как вы можете видеть, мне нужно рассчитать расстояние по двум основным направлениям: 1) радиус 2), как ворона, я предпочел бы точное расстояние, но первое будет делать. я знаю, что я могу интегрировать карты Google или другое сетевое сопоставление, но я хочу, чтобы система была автономной, поэтому она может функционировать без подключения к Интернету. система будет иметь переднюю часть HTML5, а Back Back - в Mysql и PHP.

спасибо biagio

3 ответа

Расстояние между двумя точками может быть рассчитано по следующей формуле:

6371*acos(cos(LatitudeA)*cos(LatitudeB)*cos(longitudeB-longitudeA)+sin(LatitudeA)*sin(latitudeB))

Конечно, это приближение "ворона" в Km.

который можно перевести на php:

$longA = 2.3458*(M_PI/180); // M_PI is a php constant
$latA = 48.8608*(M_PI/180);
$longB = 5.0356*(M_PI/180);
$latB = 47.3225*(M_PI/180);
$subBA = bcsub ($longB, $longA, 20);
$cosLatA = cos($latA);
$cosLatB = cos($latB);
$sinLatA = sin($latA);
$sinLatB = sin($latB);
$distance = 6371*acos($cosLatA*$cosLatB*cos($subBA)+$sinLatA*$sinLatB);
echo $distance ;

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


Просто мысль: если ваши клиенты и кандидаты живут в очень ограниченной области, я бы использовал прямоугольную карту и вводил значения x и y для всех городов в этой области в базе данных.

Из-за теоремы пифагора вы можете сказать:

distance² = (клиент x-value - кандидат на значение x) ² + (y-value client - y-value кандидат) ²


Во-первых, разве радиус фактически не равен расстоянию от клиента до кандидатов? В любом случае... вам нужно будет вычислить алгоритм вычисления того, что вам нужно, исходя из расстояния между точками.

Если вы хотите, чтобы система была автономной, вам понадобятся значения для координат (широта, долгота) точек. Для этого вам, возможно, понадобится подключение к Интернету и использование службы, такой как карты Google, чтобы найти координаты на основе адресов точек. Но как только вы храните его в своем db, вам не понадобится интернет-соединение.

Существует формула для вычисления расстояния между двумя точками на основе координат, вы легко найдете ее:)

licensed under cc by-sa 3.0 with attribution.