R 在未记录的时间戳处插入坐标

R 在未记录的时间戳处插入坐标,r,arcgis,R,Arcgis,我有一个gps装置,它以相当随机的间隔(有时每12秒,有时每6秒)记录坐标。还有另一种仪器每秒测量一次颗粒物。我正在寻找一种方法,根据现有坐标和运动速度,以每秒未记录的时间戳对坐标进行插值,以便将gps数据与颗粒物数据集合并。为了让事情变得简单一点,我可以假设两个连续坐标之间的路线是直线,并且以恒定速度行驶。所以我需要做的就是在两个坐标之间分配每一秒,用两个连续坐标之间的差除以时间差。以下面的数据集为例,我可以在09:32:01将X和Y分配给325695+(325695-325695)/12和6

我有一个gps装置,它以相当随机的间隔(有时每12秒,有时每6秒)记录坐标。还有另一种仪器每秒测量一次颗粒物。我正在寻找一种方法,根据现有坐标和运动速度,以每秒未记录的时间戳对坐标进行插值,以便将gps数据与颗粒物数据集合并。为了让事情变得简单一点,我可以假设两个连续坐标之间的路线是直线,并且以恒定速度行驶。所以我需要做的就是在两个坐标之间分配每一秒,用两个连续坐标之间的差除以时间差。以下面的数据集为例,我可以在09:32:01将X和Y分配给325695+(325695-325695)/12和672878+(672857-672878)/12。那么R中是否有允许类似计算的函数呢。因为这似乎是GIS领域中非常常见的操作,也许在ArcGIS中有专门为此设计的工具

date          time         X       Y    
04/06/2014  09:32:00    325695  672878  
04/06/2014  09:32:12    325695  672857  
04/06/2014  09:32:24    325694  672845  
04/06/2014  09:32:36    325690  672825  
04/06/2014  09:32:48    325685  672803  
04/06/2014  09:33:00    325685  672783  
欢迎提出任何建议和想法


谢谢

因为您的数据是一个时间序列,所以最好在package
zoo
中使用
na.approx(…)

df$date.time <- with(df,as.POSIXct(paste(date,time),format="%m/%d/%Y %H:%M:%S"))
full.time    <- with(df,seq(date.time[1],tail(date.time,1),by=1))
library(zoo)
df.zoo <- zoo(df[,3:4],df$date.time)        # convert to zoo object
result <- na.approx(df.zoo,xout=full.time)  # interpolate; result is also a zoo object
head(result)
                         X        Y
2014-04-06 09:32:00 325695 672878.0
2014-04-06 09:32:01 325695 672876.2
2014-04-06 09:32:02 325695 672874.5
2014-04-06 09:32:03 325695 672872.8
2014-04-06 09:32:04 325695 672871.0
2014-04-06 09:32:05 325695 672869.2

df$date.time查看
approx
approxfun
。这两种方法都可以在点之间进行线性插值。谢谢,这种方法非常有效。我还基于以下线程将zoo对象转换为数据帧: