首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有时空运动数据。如何计算坐标之间的速度?(使用R)

我有时空运动数据。如何计算坐标之间的速度?(使用R)
EN

Stack Overflow用户
提问于 2018-04-18 04:40:36
回答 1查看 33关注 0票数 0

我有一个包含四列(日期/时间、ID、lat、long)的.csv中的时空移动数据(来自拥有8000多个用户的移动网络的事件数据)。如何计算坐标之间的速度?

同序格式为(11.559257,48.093384)等。

任何建议都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2018-05-11 22:02:33

试试这样的..。

代码语言:javascript
复制
library(geosphere)
library(sp)

num_records = 6
time_max = 60*60*24*10

df <- data.frame(     
  date_time = sort(as.POSIXct(runif(num_records, min=0, max=time_max), origin="2010-01-01")),
  ID = c("Honolulu", "Kapolei", "Sarajevo", "Krupac", "South Pole", "North Pole"),
  lat = c(18.41, 18.35, 21.31, 21.33, -90, 90),
  long = c(43.86, 43.78, -157.86, -158.06, 1, 1)
)

sp_points <- SpatialPoints(df[c('long', 'lat')], proj4string=CRS("+proj=longlat"))

travel_mat <- data.frame(
  from = 1:(num_records - 1),
  to = 2:num_records
)

travel_mat$elapsed_time <- as.numeric(df$date_time[travel_mat$to] - df$date_time[travel_mat$from], units = "hours")
travel_mat$distance <- mapply(
  function(from, to) distm(sp_points[from], sp_points[to], fun=distVincentyEllipsoid)[1],
  from = travel_mat$from,
  to = travel_mat$to
)

# units are in meters and minutes, adjusting to kilometers per hour
travel_mat$speed_kph <- round(travel_mat$distance / travel_mat$elapsed_time / 1000, 2)
travel_mat$text <- paste(df$ID[travel_mat$from], "-", df$ID[travel_mat$to])

因此,如果您的输入csv如下所示:

代码语言:javascript
复制
df
            date_time         ID    lat    long
1 2010-01-01 10:43:54   Honolulu  18.41   43.86
2 2010-01-05 01:09:28    Kapolei  18.35   43.78
3 2010-01-06 06:41:24   Sarajevo  21.31 -157.86
4 2010-01-07 09:31:51     Krupac  21.33 -158.06
5 2010-01-10 06:54:45 South Pole -90.00    1.00
6 2010-01-10 22:10:00 North Pole  90.00    1.00

您的输出数据框应如下所示:

代码语言:javascript
复制
travel_mat
 from to elapsed_time    distance speed_kph                    text
    1  2     86.42614    10750.59      0.12      Honolulu - Kapolei
    2  3     29.53233 15029818.36    508.93      Kapolei - Sarajevo
    3  4     26.84083    20867.27      0.78       Sarajevo - Krupac
    4  5     69.38162 12361579.93    178.17     Krupac - South Pole
    5  6     15.25400 20003931.46   1311.39 South Pole - North Pole
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49887149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档