Получить почтовый индекс от широты, долготы? - PullRequest
17 голосов
/ 25 августа 2010

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

Спасибо

Ответы [ 5 ]

34 голосов
/ 25 августа 2010

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

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

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

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

5 голосов
/ 09 мая 2012

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

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

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

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

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

http://askgeo.com

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

http://askgeo.com/database/UsZcta2010

А о документации по веб-API вы читаете здесь:

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

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

2 голосов
/ 07 марта 2012

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

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

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

0 голосов
/ 01 ноября 2015

Пример кода здесь:

Получить почтовый индекс из результатов [1] .formatted_address

https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

0 голосов
/ 25 августа 2010

РЕДАКТИРОВАТЬ:

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

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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...