我一直在努力争取家庭邮政编码列表与大约2,000名学生的学校邮政编码列表之间的距离。我正在使用R中的gmapsdistance
包来从Google Maps Distance Matrix API获取此功能。为了安全起见,我已经输入了一个有效的API密钥并在下面的代码中替换了它。
library(gmapsdistance)
set.api.key("valid API key")
results <- gmapsdistance(origin = school$HomePostcode,
destination = school$SchoolPostcode,
mode = "walking",
shape = "long")
但是,这会产生以下错误代码。
函数错误(type,msg,asError = TRUE): 与maps.googleapis.com:443
相关的未知SSL协议错误
在Google API网站上看,它似乎没有运行所有数据的查询,它说只有219个请求。我知道我在一天内可以完成的请求数量有限,但限制是2,500,甚至不能让我接近这一点。
我尝试在一组邮政编码上运行代码,如下所示;
test <- gmapsdistance(origin = "EC4V+5EX",
destination = "EC4V+3AL",
mode = "walking",
shape = "long")
正如我所料,它给出了以下内容。
$Time
[1] 384
$Distance
[1] 497
$Status
[1] "OK"
我的数据看起来像这样,我已经匿名化了数据并删除了所有不需要的变量。有1,777套邮政编码。
head(school)
HomePostcode SchoolPostcode
1 EC4V+5EX EC4V+3AL
2 EC2V+7AD EC4V+3AL
3 EC2A+1WD EC4V+3AL
4 EC1V+3QG EC4V+3AL
5 EC2N+2PT EC4V+3AL
6 EC1M+5QA EC4V+3AL
答案 0 :(得分:4)
我没有足够的声誉来评论,但您是否尝试将参数combinations
设置为"pairwise"
。如果设置为"all"
,则它将计算一个原点和所有目的地之间的所有组合。
library(gmapsdistance)
from <- c("EC4V+5EX", "EC2V+7AD", "EC2A+1WD", "EC1V+3QG", "EC2N+2PT", "EC1M+5QA")
to <- c("EC4V+3AL", "EC4V+3AL", "EC4V+3AL", "EC4V+3AL", "EC4V+3AL", "EC4V+3AL")
test <- gmapsdistance(origin=from,
destination=to,
combinations="pairwise",
key="YOURAPIKEYHERE",
mode="walking")
test$Distance
or de Distance
1 EC4V+5EX EC4V+3AL 497
2 EC2V+7AD EC4V+3AL 995
3 EC2A+1WD EC4V+3AL 2079
4 EC1V+3QG EC4V+3AL 2492
5 EC2N+2PT EC4V+3AL 1431
6 EC1M+5QA EC4V+3AL 1892
有了这个小的6个目的地,它有一个API密钥,如果你发给我一个更大的设置,我可以试试。
另一种选择是使用包googleway
,它允许设置API密钥。例如:
library(googleway)
test <- google_distance(origins = from,
destinations = to,
mode = "walking",
key="YOURAPIKEYHERE")