繁体   English   中英

寻找城市之间的距离?

[英]Finding distances between cities?

在弄乱了我的代码一段时间并修复了错误消息后,我能够无错误地运行代码,但它没有按照我的预期运行并计算每个城市之间的距离。

#Separate cities want to find distance between
count = 0
for (i in 1:n_cities) {
    { 
       for (j in i:n_cities-1)
        count = count + 1
    }
        city_1 <- cities3[i,]
        city_2 <- cities3[i+count,]
        rad <- (pi/180)
        distance <- 6371 * acos( (sin(city_1$latitude*rad)*sin(city_2$latitude*rad)) + (cos(city_1$latitude*rad)*cos(city_2$latitude*rad)*cos((city_1$longitude - city_2$latitude)*rad)) )
        City.1 <- city_1$city
        City.2 <- city_2$city
        cities3[[City.1]]
        cities3[[City.2]]
        cities3[[distance]]
}

我需要在数据框中找到每个城市之间的距离,所以如果我的数据中有 4 个城市,我需要找到 6 个距离。 我认为我的问题在于计数器并在整个数据集中运行循环。 有谁知道我在计数器和循环中做错了什么? 我认为过去的一切都应该有效。

不是最漂亮的,而是这样的:

# load the city data
lines<-"Minsk, 53.85, 27.5,
Brussels, 50.833333, 4.333333,
Addis Ababa, 9.05, 38.7,
Helsinki, 60.133333, 25, 
Berlin ,52.533333, 13.416667, 
Hong Kong, 22.25, 114.166667"
con <- textConnection(lines)
data <- read.csv(con, header=T)
colnames(data)<-c("city", "lat", "lon")

# Get all combinations from city to city
data2<-expand.grid(data$city, data$city)
colnames(data2)<-c("city", "city2")
data2<-merge(data, data2, by.x="city")
data2<-merge(data, data2, by.x="city", by.y="city2")
data2<-unique(data2[c(1,2,3,5,6,7)])

# Calculate the distances
library(geosphere)
library(dplyr)
data3<-data2 %>% rowwise() %>% 
  mutate(distance = distHaversine(c(lon.x, lat.x), c(lon.y, lat.y)))
data3<-data3[!duplicated(data3$distance) & data3$distance!=0, ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM