使用mapdist()计算北京到纽约的距离

Use mapdist() to calculate distance between beijing and new york

我尝试使用 mapdist() 函数计算邮政编码为 10027 的纽约市与中国北京之间的距离,但它 returns NA。有没有人知道它是如何工作的?

> mapdist(as.numeric(geocode("10027")),as.numeric(geocode("beijing,china")))
                                       from
1 500 Riverside Dr, New York, NY 10027, USA
                                                               to
1 Bei Jing Shi Ren Min Zheng Fu, Dongcheng Qu, Beijing Shi, China
  km miles minutes hours
1 NA    NA      NA    NA   `

如果您查看 R 的帮助选项,它可以很好地说明正在发生的事情。

#import ggmap

    library(ggmap)

#get set of longitudinal and latitudinal coordinates

    (wh <- as.numeric(geocode("the white house, dc")))
    (lm <- as.numeric(geocode("lincoln memorial washington dc")))

您还必须设置步行、骑自行车或驾车的模式。

mapdist(wh, lm, mode = "walking")

正如Alistaire所说,对于地理距离,你必须根据地球的球形来计算距离。即使地球不是完美的圆形,也有相当准确的公式。

下面是我直接从这个网站拿来的公式:

http://www.r-bloggers.com/great-circle-distance-calculations-in-r/

gcd.hf <- function(long1, lat1, long2, lat2) {
  R <- 6371 # Earth mean radius [km]
  delta.long <- (long2 - long1)
  delta.lat <- (lat2 - lat1)
  a <- sin(delta.lat/2)^2 + cos(lat1) * cos(lat2) * sin(delta.long/2)^2
  c <- 2 * asin(min(1,sqrt(a)))
  d = R * c
  return(d) # Distance in km
}

如果你问的是地理距离,我会阅读 link。