确定两个邮政编码之间的距离(mapdist的替代方案)

时间:2013-06-28 09:52:01

标签: r google-maps-api-3 geospatial spatial ggmap

我想计算大约之间的距离。 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依赖于Google地理编码API,该API每天需要查询限制2,500个地理定位请求

您是否了解使用具有更高请求限制的其他服务(例如诺基亚地图或Bing)计算两点之间距离的替代r代码?

3 个答案:

答案 0 :(得分:14)

taRifx.geo::georoute(仅提供here,直到我推出另一个更新,此时可通过install.packages提供)可以使用Bing地图(支持我相信每天25k)并且可以返回一段距离。

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

您必须获取Bing Maps API密钥并将其设置在R全局选项中(理想位置位于.Rprofile),但密钥是免费的:

options(BingMapsKey="whateverBingGivesYouForYourKey")

答案 1 :(得分:1)

这可能是微不足道的,但一个完全免费的选择是使用Census ZCTA geography data来获取每个邮政编码的坐标,然后计算坐标之间的Haversine distances(或一些类似的距离度量)。 / p>

答案 2 :(得分:0)

如果您开始新的R会话并在新会话中运行library(ggmap),则可以再进行2500次查询。

函数distQueryCheck()显示剩余的查询数。