Геокодирование 5000 адресов в php скрипте - PullRequest
6 голосов
/ 13 октября 2010

Я рассчитываю геокодировать более 5000 адресов одновременно в сценарии PHP (это будет выполняться только один раз).

Однако я искал в Google потенциальный ресурс для выполнения именно этого, однакоЯ читал отчеты о том, что после 200 или около того запросов через них Google выгонит вас за день.

Мне просто интересно, есть ли другой способ геокодировать 5000 адресов или около того, другой сервис, такой как Googleпредложения или что-то подобное, что я мог бы использовать?

Или мне просто придется это пошатнуть?Проблема в том, что у меня не так много времени, и на 200 или 300 дней в день для 5000 результатов потребуется почти 5 (рабочих) недель.

Спасибо

Том

Ответы [ 5 ]

12 голосов
/ 13 октября 2010

Вместо этого вы можете использовать Bing Maps: Spatial Data API предназначен для пакетного геокодирования тысяч адресов одновременно (эта ссылка даже является подробным руководством по использованию с PHP).

Вам просто нужно зарегистрировать ключ на http://www.bingmapsportal.com, но это бесплатно и быстро (вы получите подтверждение по электронной почте в течение нескольких минут).

6 голосов
/ 13 октября 2010

Существует ли ограничение на количество запросов геокодирования, которые я могу отправить?

Если с одного IP-адреса получено более 2500 запросов геокодирования в течение 24 часов или запросы геокода отправляются с одного IP-адреса с слишком высокой скоростью, геокодер API Карт Google начнет отвечать кодом состояния 620.

[...]

Если вам необходимо отправить очень большой набор адресов в веб-службу геокодирования для кэширования для последующего использования, вам следует рассмотреть Premier API Карт Google , который предоставляет отдельную квоту пакетного геокодирования для этой цели.

- http://code.google.com/apis/maps/faq.html#geocoder_limit

Как упомянул @Pekka: обратите внимание, что условия обслуживания Google запрещают геокодирование для каких-либо целей, кроме отображения его на карте.

2 голосов
/ 13 октября 2010

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

http://www.google.de/search?q=geolocation+database&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox#hl=en&expIds=17259,17315,18168,23628,25646,25834,26637,26746,26761,26849&xhr=t&q=geolocation+database+download&cp=22&pf=p&sclient=psy&client=firefox&hs=MvK&rls=org.mozilla:ru%3Aofficial&source=hp&aq=f&aqi=&aql=&oq=geolocation+database+d&gs_rfai=&pbx=1&fp=d950b79c3319a56e

1 голос
/ 13 октября 2010

Как говорит @Bart Kiers, количество запросов, которые вы можете сделать за 24 часа, ограничено; есть также «не слишком быстрый» почасовой (?) лимит. Я бы посоветовал вам разделить (секунды в день) 86400/2500 (лимит), чтобы получить частоту запросов, которая не должна превышать «слишком быстрый» лимит в час. Это примерно один запрос в 35 секунд, который даст вам результаты через два дня.

Однако, проверьте коды возврата: если сервис начинает возвращать 620, остановитесь и дайте ему отдохнуть некоторое время, иначе вы рискуете забанить.

0 голосов
/ 13 октября 2010

То, что вы пытаетесь сделать, на самом деле не соответствует условиям предоставления услуг Google.

При этом Google начнет возвращать ответы с превышением квоты, если вы не сделаете паузу не менее 250 мс между геокодированиемзапросов.

На практике, если вы делаете только 2 запроса в секунду, вы не будете ограничены до 2'500 дней.

...