簡體   English   中英

計算R中多個坐標的距離

[英]Calculating distance of multiple coordinates in R

正如標題中所寫,我想使用 package osrm 計算從我家鄉的所有加油站到這里附近的兩個高速公路入口的距離。

station_ms 包含加油站的緯度和經度,highway_ms.df 包含高速公路入口的緯度和經度。

只計算我的數據集的一行的距離是沒有問題的,但我無法創建一個循環/函數,它對每一行都執行此操作。

這是我的代碼:

route4 <-  osrmRoute(src = c(stations_ms$longitude[1], stations_ms$latitude[1]), 
                    dst = highway_ms.df[1,],
                    overview = "FALSE")

for (i in 1:nrow(stations_ms)) {
 route[i] <- osrmRoute(src = c(stations_ms$longitude[i], stations_ms$latitude[i]),
                       dst = highway_ms.df[1,],
                       overwiew = "FALSE")
}
```

Maybe someone can help me :)

這是一個可行的示例,可能會有所幫助。

osrmRoute中的overview有以下選項:

“完整”、“簡化”或 FALSE。 使用“full”返回詳細幾何,使用“simplified”返回簡化幾何,使用 FALSE 僅返回時間和距離。

如果您只想要時間和距離,使用FALSE應該可以正常工作。 我的評論是關於拼寫(用“w”而不是“v”)。

我做了一些示例數據:

my_points <- data.frame(
  id = 1:3,
  longitude = c(13.4, 13.5, 13.3),
  latitude = c(52.4, 52.5, 52.3)
)

並且想找到到柏林葯房的距離(使用osrm軟件包附帶的apotheke.df )。 你可以這樣做:

library(osrm)

route <- list()
for (i in 1:nrow(my_points)) {
  route[[i]] <- osrmRoute(src = c(my_points$longitude[i], my_points$latitude[i]),
                          dst = apotheke.df[1,],
                          overview = FALSE)
}

這從一個名為route的空列表開始。 然后,我們用時間和持續時間填充每個列表元素。 最終結果是以下列表:

R> route

[[1]]
duration distance 
   20.56    11.77 

[[2]]
duration distance 
   17.38     7.63 

[[3]]
duration distance 
   33.12    27.45

可以轉換為矩陣或數據框(在這種情況下,我制作了一個矩陣):

R> do.call(rbind, route)

     duration distance
[1,]    20.56    11.77
[2,]    17.38     7.63
[3,]    33.12    27.45

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM