2013-06-28 12 views
9

Ich möchte den Abstand zwischen ca. 100.000 verschiedene Postleitzahlen Ich weiß um die mapdist Funktion im ggmap PaketErmittlung der Entfernung zwischen zwei Postleitzahlen (Alternativen zu mapdist)

mapdist funktioniert perfekt:

library(ggmap) 
mapdist('Washington', 'New York', mode = 'driving') 

#   from  to  m  km miles seconds minutes hours 
# 1 Washington New York 366284 366.284 227.6089 13997 233.2833 3.888056 


mapdist('20001', '10001', mode = 'driving') 

# from to  m  km miles seconds minutes hours 
# 1 20001 10001 363119 363.119 225.6421 13713 228.55 3.809167 

jedoch mapdist auf dem Google Geocoding API basiert, die auf ein Abfragelimit von 2.500 geolocation fordern pro Tag unterliegen.

Kennen Sie alternative R-Codes, um die Entfernung zwischen zwei Punkten mit einem anderen Dienst zu berechnen, der ein höheres Anforderungslimit aufweist (z. B. Nokia Maps oder Bing)?

+0

Als Alternative können Sie 'gdist' aus' Imap' Paket verwenden, das [Großkreis-Abstand] berechnet (http://en.wikipedia.org/wiki/Great-circle_distance), aber ich denke, dass Sie lat bekommen müssen/lange Koordinaten ... – agstudy

+0

@agstudy Guter Punkt. Es gibt auch eine Haversine-Formel im 'rdist'-Paket, glaube ich. Der Vorteil dieser Vorgehensweise besteht darin, dass Sie nur eine Geocodierungssuche pro Punkt anstelle einer Geocodierungssuche pro Punktpaar benötigen. Das kann nicht von Bedeutung sein (wenn Sie nur Beobachtungen von bestimmten Paaren von Punkten wünschen) oder könnte sehr wichtig sein (wenn alle Ihre Routen vom selben Punkt aus beginnen) –

Antwort

12

taRifx.geo::georoute (nur verfügbar here, bis ich ein anderes Update ausstoßen, zu welchem ​​Zeitpunkt es über install.packages verfügbar sein wird) kann Bing Maps verwenden (was unterstützt glaube ich 25k pro Tag) und kann eine Entfernung zurückgeben.

georoute(c("3817 Spruce St, Philadelphia, PA 19104", 
      "9000 Rockville Pike, Bethesda, Maryland 20892"), 
      verbose=TRUE, returntype="time", 
      service="bing") 

Sie werden einen Bing Maps-API-Schlüssel und legen Sie sich in Ihrer R globale Optionen (ideale Platzierung ist in .Rprofile), aber der Schlüssel ist frei bekommen müssen:

options(BingMapsKey="whateverBingGivesYouForYourKey") 
+0

+1! gutes Zeug. und 25k pro Tag ist wirklich ein guter Punkt für Bing. – agstudy

+1

Sie können 'taRifx.geo :: geocode' verwenden, um Bing auch für die Geokodierung zu verwenden. –

+0

Geocodierung ist der Prozess des Findens (lat/lon)? Tut mir leid, ich weiß nicht geos Begriffe ... – agstudy

0

Wenn Sie beginnen eine neue R-Sitzung und führen library(ggmap) in der neuen Sitzung, können Sie weitere 2500 Abfragen vornehmen.

Die Funktion distQueryCheck() zeigt an, wie viele Abfragen noch vorhanden sind.

Verwandte Themen