【问题标题】:Calculating walking distance using Google Maps in R在 R 中使用谷歌地图计算步行距离
【发布时间】:2017-01-28 00:44:25
【问题描述】:

我一直在寻找大约 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")

但是,这会给出以下错误代码。

函数错误(类型、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

【问题讨论】:

    标签: r google-maps google-maps-api-3


    【解决方案1】:

    我没有足够的声誉发表评论,但您是否尝试将参数 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")
    

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2011-07-19
      • 2016-09-23
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多