Как я могу определить почтовый индекс пользователя, если у меня есть его широта/долгота? Нужна помощь в написании запроса

Я использую геолокацию HTML5 для сбора пользователей по широте и долготе, и мне также нужно выяснить, каков их почтовый индекс. У меня есть база данных всей широты и долготы для каждого почтового индекса в США и Канаде. Как я могу написать запрос, чтобы узнать их почтовый индекс? Ниже приведен пример того, как данные структурированы в таблице «zips».

Country  PostalCode  Latitude  Longitude
USA      0051        40.813078 -73.046388
USA      00616       18.426456 -66.673779

Я не могу выполнить команду «ВЫБРАТЬ Почтовый индекс ИЗ почтовых индексов, ГДЕ Широта = user.lat И Долгота = user.long». Я считаю, что мне нужно найти ближайшую широту/длину. Любые предложения о том, как я могу написать это?


person mike    schedule 20.05.2010    source источник


Ответы (1)


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

Поскольку расстояния относительно короткие, вы можете использовать формулу расстояния: d = SQRT(((PCLA - ULA) ** 2) + ((PCLO - ULO) ** 2)). Ответ в градусах, а не в километрах или милях.

Какой бы почтовый индекс ни был кратчайшим расстоянием от вашего пользователя, вероятно является почтовым индексом.

В противном случае вы можете просто спросить пользователя. :-)

Посмотрите почтовый индекс, который они вам дают, рассчитайте расстояние и посмотрите, разумно ли это расстояние.

Вот более точная формула для вычисления расстояния между двумя земными координатами.

person Gilbert Le Blanc    schedule 20.05.2010
comment
Спасибо! Очень полезно. Тем не менее, я думаю, что лучше спросить у пользователя. В этой таблице около миллиона записей, и, вероятно, было бы не лучшей идеей постоянно нажимать на нее с таким количеством данных. - person mike; 20.05.2010
comment
Пожалуйста. У нас есть транзакция в нашем приложении, которая выполняет этот расчет расстояния. Наши пользователи хотят, чтобы мы использовали что-то вроде карт Google, но мы медлим из-за стоимости использования Google на предприятии. Однако мы рекомендуем нашим пользователям открывать транзакцию в одном окне, а карты Google — в другом. :-) - person Gilbert Le Blanc; 20.05.2010