r - 在R中,如何求和行之间的距离(每一行都是一个GPS坐标)?
问题描述
我有很多 GPS 点,我想要的是给定日期内两个后续点(行)之间的距离总和,这样我就可以获得每日跟踪距离。
每天大约有 200 个 GPS 点。后续点是指两行,其中第一行早于第二行。因为我需要这些点之间的总距离,所以必须考虑给定日期内“时间”列(“日期”列)的行顺序。
谢谢!
我的表格看起来像这样:
date time lat lon
18-Jan-18 12:48:39 -24.061464 -47.99523
18-Jan-18 12:48:48 -24.06163 -47.995354
18-Jan-18 12:53:17 -24.06175 -47.995277
解决方案
我们可以使用pointDistance
from 包raster
来计算距离。lag
fromdplyr
将有助于计算后续点。replace_na
fromtidyr
非常方便,但您可以使用自己喜欢的方式处理NA
.
library(raster)
library(dplyr)
library(tidyr)
data %>%
mutate(Distance = pointDistance(cbind(lon,lat),cbind(lag(lon),lag(lat)),lonlat = TRUE)) %>%
mutate(TotalDistance = cumsum(replace_na(Distance,0)))
# date time lat lon Distance TotalDistance
#1 18-Jan-18 12:48:39 -24.06146 -47.99523 NA 0.00000
#2 18-Jan-18 12:48:48 -24.06163 -47.99535 22.29547 22.29547
#3 18-Jan-18 12:53:17 -24.06175 -47.99528 15.42660 37.72207
数据
data <- structure(list(date = structure(c(1L, 1L, 1L), .Label = "18-Jan-18", class = "factor"),
time = structure(1:3, .Label = c("12:48:39", "12:48:48",
"12:53:17"), class = "factor"), lat = c(-24.061464, -24.06163,
-24.06175), lon = c(-47.99523, -47.995354, -47.995277)), class = "data.frame", row.names = c(NA,
-3L))
推荐阅读
- react-native - sdkVersion 无效。有效选项为 10.0.0、11.0.0、12.0.0、13.0.0
- sql - 使用通配符时删除字符的 SQL 语句
- javascript - Three.js:旋转另一个div的网格onClick
- c# - System.Windows.Forms.ComboBox.Items.AddRange() List 失败
- java - Android App 防止被修改
- c# - 在 InnoDB 表中插入信息时出错
- azure-resource-manager - 缺少用于创建自定义资源提供程序的文档
- javascript - 基于表格内容的动态下拉列表 - 使用 javascript 从表格中删除内容时从下拉列表中删除选项
- javascript - 根据是否找到其他字符来查找不同字符的正则表达式
- react-native - React Navigation - 来自 Redux 商店的drawerNavigatordrawLabels 中需要的动态文本(翻译)