繁体   English   中英

使用argosfilter :: distanceTrack来计算GPS点之间的距离

[英]Using argosfilter::distanceTrack to calculate distance between GPS points

我对R相对较新,需要计算GPS点之间的距离。 我已经通过argosfilter软件包中的distanceTrack实现了此argosfilter但是我的数据中有空白。

本来应该每10分钟录制一次,但由于该领域的问题,差距可能长达5天。 因此,如果两点之间的时间大于10分钟,我需要一种方法告诉R不要计算距离。

我目前拥有的代码非常简单,因为它可以计算位置序列之间的距离:

lat <-lizard $ Lat

lon <-lizard $ Lon

distanceTrack(纬度,经度)

我以为if函数会起作用,但我几乎没有使用过它们,也不知道如何编写它们以供使用。 那么这将是一个合适的解决方案,还是有更好的方法来做到这一点? 任何有关如何解决此问题的想法将不胜感激!

一种方法是从数据中筛选出与所需内容不匹配的行。 如果我对distanceTrack函数是正确的,它将采用N纬度/经度点,并将它们减少为这些点之间的N-1距离。 然后,您只需要消除相距不超过10分钟的点,就可以通过过滤数据帧轻松地做到这一点。

不知道您的数据到底是什么样子,我在下面创建了一些示例数据,希望它们类似于:

## Create a data.frame of 10-minute intervals stored as POSIXct
## You can convert most times to POSIXct using as.POSIXct if they are not already that format
lizard <- data.frame(time=seq(from=as.POSIXct('2015-01-01 00:00:00'), to=as.POSIXct('2015-01-02 00:00:00'), by=10*60))

## Randomly eliminate rows with probability of 15% that a given row is eliminated to create gaps
lizard$keep = runif(nrow(lizard))
lizard <- lizard[lizard$keep <= .85, c('time'), drop=FALSE] ## drop arg used to kepe it a dataframe

## Random lat / lon data:
lizard$Lat = runif(nrow(lizard)) ## runif is random uniform
lizard$Lon = runif(nrow(lizard))

现在我运行距离计算。 我们需要在消除行之前进行距离计算,因为即使第i行和第j行之间存在时间间隔(即j$time - i$time > 10分钟),我们仍然需要第j行的值来进行计算第j行和第k行之间的距离,它们之间可能相隔10分钟:

## We initialize to NA; the distance variable for row i will represent the distance between row i-1 and i; 
## row 1 will not have a meaningful value
lizard$distance <- NA 
lizard$distance[2:nrow(lizard)] <- distanceTrack(lizard$Lat, lizard$Lon)

最后,我们可以使用布尔值通过比较每行2:N的行i和i-1来过滤行:

lizard$isContiguous <- TRUE ## initialize a variable to determine if the data is at 10-min interval
lizard$isContiguous[2:nrow(lizard)] <- (as.numeric(lizard$time[2:nrow(lizard)] - lizard$time[1:nrow(lizard) - 1]) == 10)
lizard <- lizard[lizard$isContiguous, ] ## filter

该数据框中剩余的距离仅是时间间隔为10分钟的距离。

有关过滤(或更确切地说,提取或替换)的更多信息,请在此处查看文档:

仅用于[-索引编制:i,j,...可以是逻辑向量,指示要选择的元素/切片

暂无
暂无

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

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