如何使用mapdist计算多个坐标的距离?并阅读中文

时间:2014-06-18 09:29:17

标签: r

我正在尝试在ggmap包中使用mapdist函数来计算距离和行走,在很多地方之间的行驶速度。我看过帮助文件了  mapdist可以接受那个坐标,但是找不到如何输入多个坐标?以下代码有效,但如何将另一个坐标放入“g”?或者如何在数据框中放置多个坐标,mapdist可以读取它们? 并且,mapdist可以在中国的位置阅读吗? 感谢您的回复!

g=c(121.754252477584,24.7528993303431)
c=c(121.752751736839,24.7554214120371)
mapdist(g,c,mode=c("driving","walking","bicycling"),output=c("simple"))

1 个答案:

答案 0 :(得分:3)

自从被问到这个问题已经有一段时间了,但我想我会在未来的帮助下加上这个。

这个命令是我从Github上的一个脚本中学到的 - 最初由Peter Schmiedeskamp提交 - 它提醒我R可以从Google Maps API中获取驱动时间。我在example on my blog中使用来计算从各种房屋销售到市中心位置的行车时间。

location是包含每个观察纬度/经度坐标的列,格式为(36.841287,-76.218922)locMall是我的数据集中的一列,每行都有商城的纬度/长坐标。只是为了澄清:此列中的每个单元格具有完全相同的值,而location的每个单元格都不同。还有用的东西:模式可以是drivingwalkingbicycling

library(ggmap)

library(plyr)

google_results <- rbind.fill(apply(subset(sample, select=c("location", "locMall")), 1, function(x) mapdist(x[1], x[2], mode="driving")))

现在让我们看一下结果:

head(google_results,4)

          from                      to             m    km      miles   sec. minutes
1 (36.901373,-76.219024) (36.848950, -76.288018) 10954 10.954  6.806816 986 16.433333
2 (36.868871,-76.243859) (36.848950, -76.288018)  7279  7.279  4.523171 662 11.033333
3 (36.859805,-76.296122) (36.848950, -76.288018)  2101  2.101  1.305561 301  5.016667
4 (36.938692,-76.264474) (36.848950, -76.288018) 12844 12.844  7.981262 934 15.566667
    hours
1 0.27388889
2 0.18388889
3 0.08361111
4 0.25944444