2017-01-05 7 views
1

Ich habe versucht, die Entfernung zwischen einer Liste von Haus Postleitzahlen und eine Liste der Schule Postleitzahlen für ca. 2.000 Studenten zu bekommen. Ich verwende das gmapsdistance Paket innerhalb von R, um dies über die Google Maps Distance Matrix API zu erhalten. Ich habe einen gültigen API-Schlüssel eingegeben und dies aus Sicherheitsgründen im folgenden Code ersetzt.Berechnen der Gehstrecke mit Google Maps in R

library(gmapsdistance) 
set.api.key("valid API key") 

results <- gmapsdistance(origin = school$HomePostcode, 
         destination = school$SchoolPostcode, 
         mode = "walking", 
         shape = "long") 

Dies gibt jedoch den folgenden Fehlercode.

Fehler in Funktion (Typ, msg, asError = TRUE): Unbekannt SSL-Protokollfehler in Verbindung

Suchen Sie auf der Google APIs Website maps.googleapis.com:443, es sieht aus wie Es hat nicht die Abfrage für alle Daten ausgeführt, es gibt nur 219 Anfragen. Ich weiß, dass ich in Bezug auf die Anzahl der Anfragen, die ich an einem Tag erledigen kann, begrenzt bin, aber das Limit liegt bei 2.500 und es lässt mich nicht einmal näher kommen.

Ich habe versucht, den Code auf einer Reihe von Postleitzahlen, wie unten ausgeführt;

test <- gmapsdistance(origin = "EC4V+5EX", 
         destination = "EC4V+3AL", 
         mode = "walking", 
         shape = "long") 

Welche gibt das Folgende, wie ich erwarten würde.

$Time 
[1] 384 

$Distance 
[1] 497 

$Status 
[1] "OK" 

Meine Daten ungefähr so ​​aussieht, habe ich die Daten anonymisiert und entfernt alle Variablen, die nicht benötigt werden. Es gibt 1.777 Postleitzahlensätze.

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 

Antwort

3

Ich habe nicht genug Ruf zu kommentieren, aber haben Sie versucht, den Parameter combinations-"pairwise" einzustellen. Wenn sie auf "all" gesetzt ist, berechnet sie alle Kombinationen zwischen einem Ursprung und allen Zielen.

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 

Mit diesem kleinen Satz von 6 Zielen es funktioniert, habe ich einen API-Schlüssel, wenn Sie mir einen größeren Satz sendet ich versuchen kann.

Eine andere Möglichkeit wäre, das Paket googleway zu verwenden, es erlaubt auch einen API-Schlüssel zu setzen. Beispiel:

library(googleway) 

test <- google_distance(origins = from, 
         destinations = to, 
         mode = "walking", 
         key="YOURAPIKEYHERE")