2016-03-19 42 views
0

mapdist() işlevini kullanarak zipcode 10027 ve Beijing, China ile New York City'deki bir konum arasındaki mesafeyi hesaplamaya çalışırım, ancak NA değerini döndürür. Nasıl çalıştığını bilen var mı?Haritac() ile beijing ile new york arasındaki mesafeyi hesaplamak için kullanın

> 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 ` 
+0

Size sürüş, yürüme veya bisiklet sürmek (** en kısa coğrafi uzaklık değil) vermek ve bu nedenle okyanusları geçemez. – alistaire

+0

Teşekkürler. Şimdi nedenini biliyorum. – zhichi

cevap

1

Eğer R'nin yardım seçeneğine bakarsanız, size neler olduğuna dair güzel bir örnek verir.

#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"))) 

Ayrıca yürümek, bisiklet sürmek veya araba kullanmak için bir mod belirlemeniz gerekir. Alistaire bahseder gibi

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

, coğrafi mesafeler için, sen yeryüzünün küre şekline göre mesafeleri hesaplamak gerekir. Dünya mükemmel dairesel olmasa da, makul ölçüde doğru olan formüller vardır. bu coğrafi mesafelerine soran eğer

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 
} 

Ben bağlantıyı okumuştu:

aşağıdaki

Bu doğrudan web sitesinden aldı bir formüldür.

+0

'mapdist', mapdist ('beyaz ev', 'lincoln memorial')' ile gerçekten çok mutlu; coğrafi kodlamaya gerek yok. – alistaire

+0

Verdikleri belgeler oldukça eski olabilir, güzel – InfiniteFlashChess

+0

Çok teşekkür ederim. Ama ben Norveç'te bir yer olan "teknoloji üniversitesini araştırıyor" gibi bazı yerler buldum, işlev işe yaramadı. – zhichi