获取 R 中 2 个英国邮政编码之间的距离

问题描述 投票:0回答:1

我有一个数据框

df
,其中包含带有英国邮政编码值的多个观察结果。我想创建一个新列,计算每个观测值 df$origin 和 df$dest 中邮政编码之间的距离。

我还没有获得 Google Maps API 的资金,想知道我是否可以使用

PostcodeioR
来做到这一点?或者在 RStudio 中有替代的免费方法吗?

# MRE
origin <- c("S6 2PA", "S35 0DP", "M1 6BD", "DE55 4JF")
dest <- c("S5 7AU", "S5 7AU", "S5 7AU", "S5 7AU")

df <- tibble(origin,dest)

最好,创建的距离是驾驶距离,而不是直线距离,但我知道这可能是不可能的。

r maps distance postal-code
1个回答
1
投票

PoscodesioR 包将查找您的邮政编码并告诉您它们的经度/纬度,因此您可以使用多种方法中的任何一种来获取“乌鸦”距离,例如

geosphere::distHaversine

library(tidyverse)
library(PostcodesioR)
library(geosphere)

origin <- c("S6 2PA", "S35 0DP", "M1 6BD", "DE55 4JF")
dest <- c("S5 7AU", "S5 7AU", "S5 7AU", "S5 7AU")

df <- tibble(origin, dest)

df %>%
  mutate(miles = map2(origin, dest, 
                         ~ distHaversine(postcode_lookup(.x)[,7:8],
                                         postcode_lookup(.y)[,7:8])/1609.34) |>
           unlist())
#> # A tibble: 4 x 3
#> origin   dest   distance
#> <chr>    <chr>     <dbl>
#> 1 S6 2PA   S5 7AU     1.98
#> 2 S35 0DP  S5 7AU     4.63
#> 3 M1 6BD   S5 7AU    32.5 
#> 4 DE55 4JF S5 7AU    23.0 

这些在直接测量中看起来都非常准确。

我不知道有哪个完全免费的 API 可以测量行驶距离。获得 Google API 密钥将允许您获取行驶距离,据我所知,您每月应该能够免费获得大约 40,000 次测量结果。根据您的项目规模,您可能根本不需要资金(不过,如果您有 100 万个距离需要快速测量,那么这将花费大约 5,000 美元)

© www.soinside.com 2019 - 2024. All rights reserved.