ZIP/Почтовый код + Страна для Гео Координаты
Каков наиболее полный, точный и надежный способ получить координаты (широта/долгота) заданного почтового индекса данной страны? Мне нужно сделать много запросов, поэтому будет полезна высокая предельная ставка API (возможно, даже отсутствует).
GeoNames дампы были бы классными, но похоже, что у них слишком много дублирующих координат (пример), и также кажется, что в их базе данных отсутствуют некоторые почтовые индексы для определенных стран.
Существуют ли другие (надежные) альтернативы?
Пока Я читал Мета-вопрос, я наткнулся на эту ссылку:
http://query.yahooapis.com/v1/public/yql?q=select%20%2A%20from%20geo.places%20where%20text%3D%22Jyv%C3%A4skyl%C3%A4%22&format=xml
Я раньше слышал о YQL, но я понятия не имел, что могу использовать его для адресов GeoCode, поэтому немного искал и Я нашел это очень интересным часть информации:
Пределы использования
Предел приложения (определяется ваш ключ доступа): 100 000 звонков за день
Пределы IP:/v1/public/: 1,000 звонки в час; /v 1/yql/: 10000 звонки в час
Кто-нибудь знает, где я могу получить более конкретную информацию об использовании YQL для адресов GeoCode?
Ответы
Ответ 1
Yahoo! GeoPlanet даст вам центроидные лат/длинные точки для почтовых кодов. Они были надежны в моем опыте. Предел API составляет 50 000 запросов в день. Я не уверен, какова их политика в отношении результатов кэширования. У меня создается впечатление, что если вы обратитесь в Yahoo!, вы можете настроить соглашение с более высоким лимитом требований, хотя это может стоить немного денег.
Они также позволяют загружать значительную часть своих данных в соответствии с лицензией Creative Commons, но, к сожалению, это, как представляется, ограничено отношениями WOEID и названия стран.
Ответ 2
Я думаю, что ваш выбор, вероятно, будет зависеть от того, сколько API-вызовов вы намерены делать в день. Дневной лимит бесплатного API Карт Google - 15 000 запросов на каждый IP-адрес. (Источник: Вопросы API Карт Google.)
Вы можете выполнить геокодирование с помощью API Карт Google, используя следующий HTTP-запрос:
Простая CSV:
http://maps.google.com/maps/geo?q=W1A+1AA,+London&output=csv&sensor=false
Более сложный XML:
http://maps.google.com/maps/geo?q=W1A+1AA,+London&output=xml&sensor=false
Просто измените параметр "q" почтовым индексом и страной на геокод.
Однако, я думаю, что сохранение результатов геокодирования на постоянной основе в вашей базе данных может быть нарушением условий API Карт Google. Вы можете проверить дополнительную информацию об этих ограничениях.
Ответ 3
Самый простой способ - это найти качественного поставщика услуг без ограничения по запросу. Почему бы не попросить Google оферты? Из того, что я слышу, они довольно гибкие для бизнес-клиентов.
Если это не вариант, вы, безусловно, сможете получить отдельные файлы данных и дешевле, чем 33 000 во многих странах. Я уверен, что немецкий и австрийский файлы данных продаются по ценам в 3 цифры, а для Великобритании там Файл адреса почтовых индексов (PAF) это данные из Royal Mail, я не думаю, что качество становится лучше, чем это.
Разумеется, в дополнение к затратам и хлопотам было бы много работы по переходу на 26 отдельных файлов из разных почтовых отделений, а также на то, что я не стал бы завидую никому:) Если у вас есть бюджет, возможно, дешево разговаривать с Google или Yahoo.
Ответ 4
Это действительно очень сложная проблема, поскольку почтовый индекс на самом деле не является многоугольным регионом, а набор строк, объединенный вместе (см. лучший anser для Как получить ограничивающие координаты для почтовый (почтовый) код США для подробного объяснения этого.)
В Соединенных Штатах Бюро переписей ведет список приблизительных границ почтового индекса, называемых "Пятьзначных табличных областей почтового индекса" (ZCTA5). Вы можете загрузить их напрямую и обработать их, как вам нравится. Существует несколько инструментов геокодирования, которые помогут вам начать с этого; Я использую PostGIS (http://postgis.net/), но есть и другие, а самое главное - данные Open Street Maps (http://www.openstreetmap.org), который охватывает мир.