Подтвердить что ты не робот

Получить почтовый индекс из широты, долготы?

Я хочу получить почтовый индекс от текущего местоположения пользователей (Широта, Долгота), я использовал методы делегирования MKReverse Geocoder, но иногда я не могу получить информацию о почтовом индексе на основе широты и долготы (допустимые значения). Существуют ли другие альтернативы для MKReverseGeocoder? База данных ZipCode относится к странам, поэтому я не хочу их использовать. Любая другая идея или подсказка?

Спасибо

4b9b3361

Ответ 1

Рассмотрим веб-сервис GeoNames. Это полный набор геокодирования/обратного геокодирования в соответствии с лицензией на использование Creative Commons. Вы можете либо загружать свои данные, либо ударять по их веб-сервису. Лучше всего, они не требуют каких-либо ключей API или лицензирования глупости - вы просто попали в их веб-приложение и ударили, что получили данные.

Вот пример: http://ws.geonames.org/findNearbyPostalCodesJSON?formatted=true&lat=36&lng=-79.08 Это вернет вам объект JSON для почтовых индексов вокруг Chapel Hill, NC area.

Это также международный. Здесь Seaford, Англия, и единственная разница - это пара lat/lng, которую я отправляю: http://ws.geonames.org/findNearbyPostalCodesJSON?formatted=true&lat=50.5&lng=0.08

Затем вам нужно научиться делать веб-запросы и анализировать JSON (если у вас еще нет контроля над этими вещами), и вы все настроены.

Ответ 2

Это действительно сложный вопрос. Использование решения геокодирования, такого как GeoNames, может привести к серьезным ошибкам для большого количества запросов. Причиной этого является то, что GeoNames, просматривая запись в своей базе данных, которая ближе всего к вашей точке запроса, а затем возвращает ZIP-код, который у них есть на записи для этой точки. Это отлично работает, когда ваш запрос находится прямо над записью в своей базе данных, но может привести к ошибкам в противном случае. Например, если их ближайшая запись находится в нескольких кварталах от другого почтового индекса, вы получите неправильный ответ.

Бюро переписи США создало карты почтовых индексов:

https://www.census.gov/geo/reference/zctas.html

Пожалуйста, просмотрите их заметки на этой странице.

Я также работал над проектом, который использует карты переписи, чтобы предоставить API, который возвращает ZIP-код для заданной широты и долготы. Он находится по адресу:

http://askgeo.com

Мы предлагаем как веб-API, так и библиотеку Java, которые вы можете запускать на своем собственном сервере. Библиотека имеет отличную производительность. Поскольку наш сайт предлагает дополнительную информацию, кроме только кода почтового индекса, вы можете прочитать здесь нашу службу почтового индекса:

http://askgeo.com/database/UsZcta2010

И вы читаете о документации для Web API здесь:

http://askgeo.com/#web-api

Методология GeoNames в корне ошибочна для этого типа запросов. Если вы ищете многоугольник, содержащий заданную точку запроса, вам нужна карта с полигонами, и вам нужен пространственный указатель для быстрого поиска. В GeoNames нет ни одного. AskGeo имеет оба.

Ответ 3

Если у вас есть бесплатный db (доступен с этого сайта? Просто найдите базу данных почтового индекса, и вы увидите ее)

то вы можете запустить внутреннее тестирование SQL-запросов для близких lat/longs. Таким образом вам не придется беспокоиться о лицензировании веб-службы.

У вас есть три варианта. SQL BETWEEN, уравнение гипотенузы или Haversine. Хэверсин был лучшим, к счастью, он учился в другом месте

Ответ 4

EDIT:

Пара других вариантов, которые я видел недавно:

http://developer.yahoo.com/geo/placefinder/guide/index.html

http://jamiethompson.co.uk/projects/2010/04/30/an-open-free-uk-postcode-geocoding-web-service/

http://www.postcodeanywhere.co.uk/geocoding-service/api.aspx

-

Взгляните на API Карт Google - обратное геокодирование (полезно только при вставке результатов в интерфейс Google Maps).