我正在尝试计算数千个起点和目的地的行驶时间和距离。googleway
但是,我公司的防火墙在使用or包时似乎引起了一些问题gmapsdistance
,但对于包来说工作得很好ggmap
。例如:
# Library packages
library(ggmap)
library(googleway)
library(gmapsdistance)
# Set my origin and destination places
org <- "waco, texas"
dest <- "houston, texas"
# Register my key (note: insert your own Google key)
myKey <- "insert_key"
register_google(key = myKey)
# Calculate distance
mapdist(from = org, to = dest, mode = "driving")
# Source : https://maps.googleapis.com/maps/api/distancematrix/json?
# origins=waco,+texas&destinations=houston,+texas&key=xxx&mode=driving
# Error in curl::curl_fetch_memory(url, handle = handle) :
# Timeout was reached: Connection timed out after 10000 milliseconds
我已经能够通过使用其他问题中所述的解决方案和使用curl
包来绕过这个问题,例如:
library(curl)
# Get ie proxy
proxyPort <- ie_get_proxy_for_url()
# Split the string to feed the proxy and port arguments
proxyURL <- strsplit(proxyPort, ":")[[1]][1]
portUsed <- as.integer(strsplit(proxyPort, ":")[[1]][2])
# Set configuration
set_config(use_proxy(url=proxyURL, port = portUsed), override = TRUE)
# Register my key
register_google(key = myKey)
# Calculate distance
mapdist(from = org, to = dest, mode = "driving")
# Source : https://maps.googleapis.com/maps/api/distancematrix/json?# origins=waco,+texas&destinations=houston,+texas&key=xxx&mode=driving
# A tibble: 1 x 9
# from to m km miles seconds minutes hours mode
# <chr> <chr> <int> <dbl> <dbl> <int> <dbl> <dbl> <chr>
# 1 waco, texas houston, texas 297148 297. 185. 10235 171. 2.84 driving
你可以看到这行得通!
但是,googleway
andgmapsdistance
包的等效功能似乎仍然存在绕过防火墙的问题。例如:
# Using googleway
google_distance(org, dest, mode = "driving", key = myKey)
# Error in value[[3L]](cond) :
# There was an error downloading results. Please manually check the following # URL is valid by entering it into a browswer. If valid, please file a bug
# report citing this URL (note: your API key has been removed, so you will need # to add that back in)
# https://maps.googleapis.com/maps/api/distancematrix/json?#
#&origins=waco,+texas&destinations=houston,+texas&alternatives=false&units=metri# c&mode=driving&key=
# Using gmapsdistance
gmapsdistance(origin = "Washington+DC", destination = "Chicago+IL", mode = "driving", key = myKey)
#Error in function (type, msg, asError = TRUE) :
# Failed to connect to maps.googleapis.com port 80: Timed out
您可以看到两者google_distance
都gmapsdistance
失败了,似乎是防火墙错误。
有人可以帮我了解如何始终绕过防火墙,以及如何使用其他两个包来计算行驶距离和时间吗?