Determining the distance between two ZIP codes (alternatives to mapdist)

20,536

Solution 1

taRifx.geo::georoute (only available here until I push out another update, at which point it will be available via install.packages) can use Bing Maps (which supports I believe 25k per day) and can return a distance.

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

You'll have to get a Bing Maps API key and set it in your R global options (ideal placement is in .Rprofile), but the key is free:

options(BingMapsKey="whateverBingGivesYouForYourKey")

Solution 2

This might be trivial, but one completely free option is to use Census ZCTA geography data to get co-ordinates for each zip code, and then calculate Haversine distances (or some similar distance metric) between coordinates.

Share:
20,536
majom
Author by

majom

Updated on April 21, 2020

Comments

  • majom
    majom about 4 years

    I want to calculate the distance between approx. 100,000 different ZIP codes. I know about the mapdist function in the ggmap package

    mapdist works perfectly:

    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
    

    However, mapdist relies on the Google Geocoding API which is subject to a query limit of 2,500 geolocation requests per day.

    Are you aware of any alternative r code to calculate the distance between two points using another service which has a higher request limit (such as Nokia Maps or Bing)?

  • agstudy
    agstudy almost 11 years
    +1! good stuff. and 25k a day is really a good point for Bing.
  • Ari B. Friedman
    Ari B. Friedman almost 11 years
    You can use taRifx.geo::geocode to use Bing for geocoding also.
  • agstudy
    agstudy almost 11 years
    Geocoding is it the process of finding (lat/lon)? Sorry I don't know geos terms...
  • Ari B. Friedman
    Ari B. Friedman almost 11 years
    Yup. Turns addresses into lat/lon pairs. ggmaps has a function that's more complete in some ways but Google Maps-only.