Как вы определяете, каковы соседние почтовые индексы?
-
16-09-2019 - |
Вопрос
У меня ситуация, похожая на то, что происходит в системе поиска работы, где вы вводите почтовый индекс, по которому ищете работу, и приложение возвращает задания по этому почтовому индексу, а также по почтовым кодам, которые находятся в 5, 10, 15, 20 или 25 милях от этого почтового индекса, в зависимости от настроек, установленных пользователем.
Как бы вы рассчитали соседние местоположения для почтового индекса?
Решение
Я не знаю, можете ли вы рассчитывать на geonames.org быть рядом на протяжении всего срока службы вашего приложения, но вы могли бы использовать веб-сервис, подобный их, чтобы не изобретать велосипед.
Другие советы
Вам нужно получить список почтовых индексов с соответствующими координатами долготы / широты. Погуглите это - существует множество поставщиков услуг.
Затем взгляните на этот вопрос для получения алгоритма вычисления расстояния
Я бы не стал его вычислять, я бы сохранил его в виде фиксированной таблицы в базе данных (только для изменения при изменении распределения почтовых индексов в стране).Создайте отношение "is_neighbor_zip", которое имеет пары (меньший, больший).Чтобы определить, являются ли два кода соседними, проверьте в таблице наличие конкретной пары.Если вам нужны все соседние zip-файлы, возможно, было бы лучше сделать таблицу симметричной.
Вам нужно использовать базу данных ГИС и запросить у нее почтовые индексы, которые находятся поблизости от вашего текущего местоположения.
Вы не можете просто взять номер почтового индекса и применить некоторые математические вычисления, чтобы найти другие близлежащие почтовые индексы.Почтовые индексы не так географически разбросаны, как коды городов в США, но они не являются системой координат.
Единственным исключением является то, что почтовые индексы + 4 являются подразделами более крупного почтового индекса.Вы можете предположить, что любые почтовые индексы + 4, которые имеют один и тот же почтовый индекс, близки друг к другу.
Раньше я работал над рационализацией обработки почтовых индексов в компании, вот несколько практических замечаний, которые я сделал:
Тестирование почтовых индексов
Надеюсь, есть другая полезная информация.
Всякий раз, когда вы создаете почтовый индекс, геокодируйте его (напримерgoogle geocoder api, сохраняя широту и логитуду) затем загуглите формуляр haversine, он рассчитает расстояние (по прямой) от контрольной точки, которое также может быть геокодировано, если это город или почтовый индекс.
Чтобы прояснить еще кое-что:
Когда вы извлекаете записи на основе их местоположения, вам необходимо сравнить каждую десятичную дробь по долготе и широте с контрольной точкой (почтовый индекс с географическим кодом ваших пользователей или название города).
Вы можете запросить:
SELECT * FROM photos p WHERE p.long < 60 AND p.long > 50 AND p.lat > -10 AND p.lat > 10
Чтобы найти все фотографии Великобритании и т.д., потому что Великобритания находится между 50 и 60 градусами долготы и + -10 широтой (возможно, я переключил long на lat, я нечетко разбираюсь в этом)
Если вы хотите найти расстояние, то вам нужно будет поискать в Google формулу haversine и ввести свои эталонные значения.
Надеюсь, это немного прояснит ситуацию, оставьте комментарий, если вам нужны подробности