Определение расстояния между двумя почтовыми индексами (альтернативы mapdist)

Я хочу рассчитать расстояние между ок. 100 000 различных почтовых индексов. Я знаю о функции mapdist в пакете ggmap

mapdist отлично работает:

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

Однако mapdist полагается на API геокодирования Google, который подпадает под ограничение запроса 2500 запросов геолокации в день.

Знаете ли вы о каком-либо альтернативном r-коде для вычисления расстояния между двумя точками, используя другую услугу с более высоким пределом запроса (например, Nokia Maps или Bing)?

Ответ 1

taRifx.geo::georoute (доступно только здесь, пока я не вытащу еще одно обновление, после чего он будет доступен через install.packages), можно использовать Bing Maps (который поддерживает, я считаю, 25 тыс. В день) и может вернуться на расстояние.

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

Вам нужно будет получить ключ API Bing Maps и установить его в своих глобальных параметрах R (идеальное размещение находится в .Rprofile), но ключ свободен:

options(BingMapsKey="whateverBingGivesYouForYourKey")

Ответ 2

Если вы запустите новый сеанс R и запустите library(ggmap) в новом сеансе, вы можете сделать еще 2500 запросов.

Функция distQueryCheck() показывает, сколько запросов осталось.

Ответ 3

Это может быть тривиально, но один совершенно бесплатный вариант - использовать данные географии Census ZCTA для получения координат для каждого почтового индекса, а затем вычислять расстояния Хаверсина (или некоторую аналогичную метрику расстояния) между координатами.