mapdist и googleway в R
Я пробовал карту расстояния между 2 почтовыми индексами. У меня около 30 тысяч записей. Я понимаю, что Google разрешает только 2500 запросов в день, и поэтому у меня теперь есть API от них. По какой-то причине - я изо всех сил пытался вставить ключ API в код. Я также натолкнулся на другой пакет под названием googleway, который делает то же самое, однако мне понравился формат mapdist. Есть ли способ:
а) использовать API в этом коде ИЛИ
б) Используйте пакет Google Way, чтобы получить результаты, похожие на mapdist
Цените вашу поддержку заранее.
library(ggmap)
library(plyr)
library(googleway)
key <- "XXX"
file_loc <- "C:/Users/Owner/Desktop/distance.csv"
x <- read.csv(file_loc, header = TRUE)
from <- x[1]
to <- x[2]
DF <- cbind(from, to); DF <- as.data.frame(DF) # create data frame
DF$from <- as.character(DF$from) # mapdist demands input to be character type
DF$to <- as.character(DF$to) # mapdist demands input to be character type
remove (from, to) #remove input to avoid confusion
DF$row.number <- 1:nrow(DF) #create an index number for each row
for (i in DF$row.number){
orig <- DF[i,c('from')]
dest <- DF[i,c('to')]
a <- mapdist(from = orig, to = dest, mode = "driving",output = c("simple", "all"), override_limit = FALSE)
a$row.number <- i
DF$minutes[match(a$row.number, DF$row.number)] <- a$minutes
DF$hours[match(a$row.number, DF$row.number)] <- a$hours
DF$km[match(a$row.number, DF$row.number)] <- a$km
DF$miles[match(a$row.number, DF$row.number)] <- a$miles
}
write.csv(DF, "newdata.csv") #Save dataset
1 ответ
Насколько я могу судить, вы не можете указать ключ API с ggmap::mapdist
Что касается googleway
(Я написал пакет), способ его использования
key <- "your_api_key"
google_distance(origins = list("MCG, Melbourne, Australia"),
destinations = list("Sydney Opera House, Australia"),
key = key)
# $destination_addresses
# [1] "Sydney NSW, Australia"
#
# $origin_addresses
# [1] "Jolimont Station, Wellington Cres, East Melbourne VIC 3002, Australia"
#
# $rows
# elements
# 1 869 km, 869270, 8 hours 51 mins, 31847, 8 hours 45 mins, 31485, OK
#
# $status
# [1] "OK"
или если у вас есть data.frame из / в адреса:
df <- data.frame(from = c("MCG, Melbourne, Australia", "Sydney Opera House, Australia"),
to = c("Sydney Opera House, Australia", "Canberra, Australia"))
res <- apply(df, 1, function(x){
google_distance(origins = list(x["from"]),
destinations = list(x["to"]),
key = key)
})
res
# [[1]]
# [[1]]$destination_addresses
# [1] "Sydney NSW, Australia"
#
# [[1]]$origin_addresses
# [1] "Jolimont Station, Wellington Cres, East Melbourne VIC 3002, Australia"
#
# [[1]]$rows
# elements
# 1 869 km, 869270, 8 hours 51 mins, 31847, 8 hours 44 mins, 31451, OK
#
# [[1]]$status
# [1] "OK"
#
#
# [[2]]
# [[2]]$destination_addresses
# [1] "Canberra ACT 2601, Australia"
#
# [[2]]$origin_addresses
# [1] "Sydney NSW, Australia"
#
# [[2]]$rows
# elements
# 1 286 km, 286143, 3 hours 1 min, 10859, 3 hours 6 mins, 11152, OK
#
# [[2]]$status
# [1] "OK"