Я разрабатываю базу данных по набору персонала, и мне нужно, чтобы она выполняла несколько задач, которые включают интеграцию способа вычисления расстояния:
1) рассчитать расстояние, которое кандидат живет от клиента?
2) рассчитать клиентов в радиусе кандидатов, доступных для работы в любой день?
3) подсчет количества кандидатов с правильной квалификацией для вакансии в радиусе клиента.
как вы можете видеть, мне нужно рассчитать расстояние по двум основным направлениям: 1) радиус 2), как ворона, я предпочел бы точное расстояние, но первое будет делать. я знаю, что я могу интегрировать карты Google или другое сетевое сопоставление, но я хочу, чтобы система была автономной, поэтому она может функционировать без подключения к Интернету. система будет иметь внешний интерфейс HTML5, а Back Back – в Mysql и PHP.
спасибо, biagio
Расстояние между двумя точками может быть рассчитано по следующей формуле:
6371*acos(cos(LatitudeA)*cos(LatitudeB)*cos(longitudeB-longitudeA)+sin(LatitudeA)*sin(latitudeB))
Конечно, это приближение «ворона» в Км.
Его можно перевести на 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 client – кандидат на значение x) ² + (y-value client – y-value кандидат) ²
Во-первых, разве радиус фактически не «как воронёт» от клиента до кандидатов? В любом случае … вам нужно будет найти алгоритм вычисления того, что вам нужно, исходя из расстояния между точками.
Если вы хотите, чтобы система была автономной, вам понадобятся значения для координат (широта, долгота) точек. Для этого вам, возможно, понадобится подключение к Интернету и использование службы, такой как карты Google, чтобы найти координаты на основе адресов точек. Но как только вы храните тогда в своем db, вам не понадобится подключение к Интернету.
Существует формула для вычисления расстояния между двумя точками на основе координат, вы легко найдете ее 🙂