2017-02-16 25 views
1

Я пытаюсь геолокацию вектора, используя библиотеку R Ggmap.Ограничение скорости Ggmap «dsk»

location_google_10000 <- geocode(first10000_string, output = "latlon", 
    source = "dsk", messaging = FALSE) 

Проблема заключается в том, что я использую «DSK» -The науки данных инструментарий API- и, следовательно, не оценивать пределы, как Google (Limites до 2500 координат в день). Однако, когда я пытаюсь запустить с вектором, который содержит более чем 2500, то появляется следующее сообщение:

Error: google restricts requests to 2500 requests a day for non-business use. 

Я попытался запустить код с DSK с 1000 адресов, а затем проверить, если на самом деле Google или DSK был использован апи:

> geocodeQueryCheck() 
2500 geocoding queries remaining. 

Так по какой-то причине она не позволит мне использовать более чем 2500 с «DSK», но я уверен, что его не с помощью Google.

ответ

3

Я просто столкнулся с той же проблемой и нашел ваше сообщение. Я смог обойти это, установив значения client и signature на фиктивные значения, например.

geocode(myLocations, client = "123", signature = "123", output = 'latlon', source = 'dsk') 

Проблема, как представляется, с этой частью функции геокодирования ...

if (length(location) > 1) { 
     if (userType == "free") { 
      limit <- "2500" 
     } 
     else if (userType == "business") { 
      limit <- "100000" 
     } 
     s <- paste("google restricts requests to", limit, "requests a day for non-business use.") 
     if (length(location) > as.numeric(limit)) 
      stop(s, call. = F) 

userType устанавливается выше в этой части кода ...

if (client != "" && signature != "") { 
     if (substr(client, 1, 4) != "gme-") 
      client <- paste("gme-", client, sep = "") 
     userType <- "business" 
    } 
    else if (client == "" && signature != "") { 
     stop("if signature argument is specified, client must be as well.", 
      call. = FALSE) 
    } 
    else if (client != "" && signature == "") { 
     stop("if client argument is specified, signature must be as well.", 
      call. = FALSE) 
    } 
    else { 
     userType <- "free" 
    } 

Так , если параметры client и signature пустые userType установлен на «свободный», и в свою очередь предел установлен в 2500. Предоставляя значения для этих параметров, вы считаетесь «бизнес-пользователем» с лимитом в 100 000. Это хорошая проверка, если предполагается, что пользователь использует «Google» в отличие от «dsk» в качестве источника, но является чрезмерным, если источник «dsk» и, вероятно, должен быть переопределен. Чтобы быть наивным, возможно, что-то вроде ...

if (source == "google") { 
     if (client != "" && signature != "") { 
       if (substr(client, 1, 4) != "gme-") 
        client <- paste("gme-", client, sep = "") 
       userType <- "business" 
      } 
      else if (client == "" && signature != "") { 
       stop("if signature argument is specified, client must be as well.", 
        call. = FALSE) 
      } 
      else if (client != "" && signature == "") { 
       stop("if client argument is specified, signature must be as well.", 
        call. = FALSE) 
      } 
      else { 
       userType <- "free" 
      } 
    } else { 
      userType <- "business" 
} 

Это может вызвать проблемы, если client или signature параметры были запланированы для других источников, хотя. Я буду пинговать автора пакета.

+0

Спасибо! Это вроде как работы, но все же ограниченные. Причина в том, что, хотя использование фиктивных значений перепрыгивает предел 2500, теперь он останавливается с лимитом бизнеса Google, что составляет 10 000: Ошибка: Google ограничивает запросы на 100000 запросов в день для нерабочего использования. –