在R上的Google Distance Matrix API中点击查询限制

时间:2018-05-04 18:33:46

标签: r google-maps distance google-distancematrix-api

我有36个位置的列表,我必须从每个位置到每个其他位置获得距离矩阵,即36x36矩阵。在本论坛上使用关于此主题的其他问题的帮助,我能够将基本代码(仅在四个位置演示)组合如下:

library(googleway)
library(plyr)
key <- "VALID KEY" #removed for security reasons
districts <- c("Attock, Pakistan", 
           "Bahawalnagar, Pakistan", 
           "Bahawalpur, Pakistan",
           "Bhakkar, Pakistan")

#Calculate pairwise distance between each location
lst <- google_distance(origins=districts, destinations=districts, key=key)

res.lst <- list() 

lst_elements <- for (i in 1:length(districts)) {
e.row <- rbind(cbind(districts[i], distance_destinations(lst), 
distance_elements(lst)[[i]][['distance']]))
res.lst[[i]] <- e.row
}

# view results as list
res.lst

# combine each element of list into a dataframe. 
res.df <- ldply(res.lst, rbind)

#give names to columns
colnames(res.df) <- c("origin", "destination", "dist.km", "dist.m")

#Display result    
res.df

此代码适用于少量查询;即,如果位置很少,例如一次5个。对于任何更大的东西,我得到一个&#34; Over-Query-Limit&#34;消息错误:&#34;您已超出此API的费率限制&#34;即使我没有达到2500限制。我还注册了“按使用付费”#39;结算选项,但我继续得到相同的错误。我想知道这是否是每秒发送多少请求的问题(即费率)?如果是这样,我可以修改我的代码来解决这个问题吗?即使没有API密钥,此代码也不会要求超过2500个查询,因此我应该可以执行此操作,但即使启用了结算,我也很难解决此问题。

2 个答案:

答案 0 :(得分:1)

免费配额为2500 元素

  

发送到距离矩阵API的每个查询都受限于允许的元素的数量,其中,起始数乘以目标数量定义元素数量

     

标准使用限制
  标准API的用户:

     

每天2,500个免费元素,以客户端和服务器端查询的总和计算。   每个请求最多25个来源或25个目的地。

36x36请求将是1296个元素。在2之后,你将失去配额。

答案 1 :(得分:0)

对于仍在努力解决这个问题的人;我能够通过使用while循环来解决它。由于我在2500查询限制之下,这是一个速率问题而不是查询限制问题。使用while循环,我将位置分成块(每次运行距离查询2x36)并循环遍历整个数据以获得我需要的36x36。