Это на самом деле сложный вопрос. Использование решения геокодирования, такого как GeoNames, может привести к серьезным ошибкам для большого количества запросов. Причиной этого является то, что GeoNames, просматривая запись в своей базе данных, которая ближе всего к вашей точке запроса, а затем возвращает ZIP-код, который у них есть на записи для этой точки. Это отлично работает, когда ваш запрос находится прямо над записью в своей базе данных, но может привести к ошибкам в противном случае. Например, если их ближайшая запись находится в нескольких кварталах от другого почтового индекса, вы получите неправильный ответ.
Бюро переписи населения США созданы карты кодов ZIP:
https://www.census.gov/geo/reference/zctas.html
Пожалуйста, смотрите свои записи на этой странице.
Я также работал над проектом, который использует карты переписи, чтобы предоставить API, который возвращает ZIP-код для заданной широты и долготы. Он находится на:
http://askgeo.com
Мы предлагаем как веб-API и библиотеки Java, что вы можете работать на вашем собственном сервере. Библиотека имеет отличную производительность. Так как наш сайт предлагает дополнительную информацию, чем просто почтовый индекс, вы можете прочитать о нашем сервисе ZIP код здесь:
http://askgeo.com/database/UsZcta2010
А вы читали о документации для Web API здесь:
http://askgeo.com/#web-api
Методология GeoNames в корне ошибочна для этого типа запросов. Если вы ищете многоугольник, содержащий заданную точку запроса, вам нужна карта с полигонами, и вам нужен пространственный указатель для быстрого поиска. В GeoNames нет ни одного. У AskGeo есть оба.
базы данных ZipCode специфичны, да страна; но zipcodes также являются специфичными для страны (например, США не имеют того же формата почтового индекса, что и Нидерланды или Великобритания). Вам нужно будет заниматься этим так или иначе, если вы хотите использовать zipcodes. – Piskvor