Определение расстояния между двумя почтовыми индексами (альтернативы 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 для получения координат для каждого почтового индекса, а затем вычислять расстояния Хаверсина (или некоторую аналогичную метрику расстояния) между координатами.