使用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。
我尝试使用 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。