如何使用mapdist计算多个坐标之间的距离?

4

我正在尝试使用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"))

最好将此内容发布到 http://gis.stackexchange.com/ - user3710546
1个回答

7

虽然这个问题已经有一段时间了,但我认为我可以为未来的人们提供帮助。

这个命令是我从Github上的一个脚本中学到的 - 最初由Peter Schmiedeskamp提交 - 这让我意识到R能够从Google Maps API中抓取驱车时间。我在我的博客示例中使用它来计算各种房屋销售到市中心位置的行车时间。

location是包含每个观测值的长/宽坐标的列,格式如下:(-76.218922,36.841287)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 (-76.219024, 36.901373) (-76.288018, 36.848950) 10954 10.954  6.806816 986 16.433333
2 (-76.243859, 36.868871) (-76.288018, 36.848950)  7279  7.279  4.523171 662 11.033333
3 (-76.296122, 36.859805) (-76.288018, 36.848950)  2101  2.101  1.305561 301  5.016667
4 (-76.264474, 36.938692) (-76.288018, 36.848950) 12844 12.844  7.981262 934 15.566667
    hours
1 0.27388889
2 0.18388889
3 0.08361111
4 0.25944444

*编辑:更新。现在代码需要经度和纬度。


这个很好用,谢谢。顺便问一下,在这段代码中,数字1有什么作用:apply(subset(sample, select=c("location", "locMall")), 1, function(x) mapdist(x[1], x[2], mode="driving"))。 - George
1
@George - 看看?apply - 数字1是MARGIN参数,它表示对每一行应用函数。另一个选项是数字2,表示对每一列应用函数。 - SymbolixAU

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接