16

我想计算大约之间的距离。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 个地理定位请求。

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

4

3 回答 3

14

taRifx.geo::georoute(仅我推出另一个更新之前可用,此时它将通过 提供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 全局选项中(理想的位置是 in .Rprofile),但该密钥是免费的:

options(BingMapsKey="whateverBingGivesYouForYourKey")
于 2013-06-28T11:42:05.907 回答
1

这可能是微不足道的,但一个完全免费的选择是使用人口普查 ZCTA 地理数据来获取每个邮政编码的坐标,然后计算坐标之间的Haversine 距离(或一些类似的距离度量)。

于 2018-04-21T03:41:24.727 回答
0

如果您启动一个新的 R 会话并library(ggmap)在新会话中运行,您可以再进行 2500 次查询。

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

于 2014-06-25T18:28:24.617 回答