r语言 - 使用 mapdist() 计算北京和纽约之间的距离



>我尝试使用 mapdist() 函数计算邮政编码为 10027 的纽约市与中国北京之间的距离,但它返回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")

正如阿利斯泰尔所提到的,对于地理距离,您必须根据地球的球形计算距离。尽管地球不是完美的圆形,但有一些公式是相当准确的。

以下是我直接从本网站获取的公式:

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
}

如果您要求地理距离,我会阅读链接。

最新更新