Расстояние между почтовыми индексами
Я пытаюсь найти лучший способ определения расстояния между населенными пунктами (у нас есть почтовый индекс и местоположение).
В принципе, для каждой записи у нас есть местоположение и почтовый индекс, пользователь на front-end может ввести почтовый индекс и выбрать записи ...
- Within 10 Miles
- Within 20 Miles
- Within 40 Miles
- Within 50 Miles
Единственный способ, который я вижу, это получить КАЖДУЮ запись из базы данных и вычислить расстояние между каждой, ввести его во временную таблицу, а затем упорядочить эту таблицу по местоположению и отфильтровать ее. Это кажется очень долгим и трудоемким способом - есть ли у кого-нибудь предложения, как это можно сделать лучше? Или это лучший способ сделать это?
Например, клиент вводит SO40 9AA (почтовый индекс Саутгемптона) и затем выбирает "в пределах 50 миль", это должно отобразить все записи в пределах 50 миль от этого почтового индекса или местоположения.
Есть ли у вас геокод в вашем наборе данных? Если нет, вы можете добавить его для имеющихся у вас почтовых индексов с помощью такой службы, как http://geocoder.us/help/city_state_zip.shtml. Или вы можете получить базу данных с готовым кодом, доступную на сайте http://www.zipinfo.com/products/z5ll/z5ll.htm. Как только вы добавите код в записи, вы сможете использовать стандартный математический расчет расстояния, используя координаты lat / long для расчета расстояния.
Если вам нужно расстояние на автомобиле, используйте Google Maps API, в противном случае это расстояние будет "как ворон летит"
Если у вас есть географические координаты всех почтовых индексов, вот функция VB для получения расстояния по прямой между любыми двумя точками. Она выдает результаты в милях, но их достаточно легко конвертировать.