Я только что разработал калькулятор расстояний для почтовых индексов для моей компании Dads, где все наши клиенты хранятся в архиве, и каждый раз, когда новый потенциальный клиент делает запрос, система проверяет его по почтовым индексам всех других клиентов. Проблема в том, что он еще не делает расчет расстояния. Ввод почтового индекса DT1 с расстоянием, установленным в 5 миль, говорит о том, что DT1, 2 и 3 находятся рядом. DT2 говорит DT1 и 2, DT3 говорит DT1, 3 и 4. Это не имеет никакого смысла. И все же, если я пройду BH2 с расстояния в 50 миль, он вернет Борнмут, Дорчестер, Портсмут, Бат, Саутгемптон и еще пару городов. Все это правильно, однако я не знаю, что происходит с почтовыми индексами DT. DT11 не возвращает (меньше 5 миль), а также DT10 (кроме себя).
Прежде всего, я использовал корень (x * x + y * y) - я считаю, что это называется теоремой Пифагора ... не уверен, поскольку прошло много лет с тех пор, как я использовал этот термин !!
Я также пробовал следующее:
$sinstuff = sin(deg2rad($latitude))*sin(deg2rad($latitude2));
$cosstuff = cos(deg2rad($latitude))*cos(deg2rad($latitude2))*cos(deg2rad($longitude-$longitude2));
$sumstuff = $sinstuff + $cosstuff;
$acosstuff = rad2deg(acos($sumstuff));
$distance = $acosstuff*60*1.1515; //dunno what the 60 and 1.1515 is all about - I got this formula off a website.
Это формула, которая, кажется, приносит странные результаты. Я также заметил, что точное расстояние между DT11 и DT11 примерно равно +/- 0,00000989 {и много других чисел}. Это также кажется немного странным, поскольку, конечно, расстояние между DT11 и самим собой составляет 0 ...
Кто-нибудь когда-нибудь делал что-нибудь подобное успешно?
У меня есть огромная партия файлов - всего около 158 МБ - содержащих полный почтовый индекс Великобритании с соответствующей широтой и долготой. Моя цель состоит не в том, чтобы сравнивать указанный полный почтовый индекс с любым другим полным почтовым индексом, чтобы определить, какие коды городов находятся на расстоянии менее определенного расстояния, а затем сравнить указанный почтовый индекс со всеми полными почтовыми индексами, которые находятся в этих областях. Это эффективно? Есть ли более эффективный способ?
Любая помощь с этим будет принята с благодарностью.
С уважением,
Richard
PS Я знаю, что есть некоторые сайты, которые рассказывают вам, как работать на расстоянии, но я, кажется, не могу заставить работать любой из них корректно (как вы можете заметить сверху).
PPS Я знаю, что могу использовать Google API для этого - но это не вариант, так как это будет автономное приложение, работающее на локальной установке wamp-сервера. Он предназначен для использования на выставках, где мы не можем гарантировать подключение к Интернету.