根据第二个数据集的日期和时间分配位置值

时间:2016-11-10 14:15:28

标签: r dataframe gis interpolation regularized

我有2个数据框:1是一系列GPS位置,具有相关的日期时间(POSIXct)

GPS <- data.frame(Lat=c(58.65209, 58.65183, 58.65142, 58.65129, 58.65126, 58.65124, 58.65122, 58.65119, 58.65117, 58.65115),
                  Lon=c(-3.178559, -3.177934, -3.177277, -3.177536, -3.177494, -3.177713, -3.177806, -3.177899, -3.177991, -3.178084), 
                  datetime=c("2016-10-01 16:23:59 GMT", "2016-10-01 16:31:59 GMT", "2016-10-01 16:39:59 GMT", "2016-10-01 16:47:59 GMT", "2016-10-01 16:55:59 GMT", "2016-10-01 17:03:59 GMT", "2016-10-01 17:11:59 GMT", "2016-10-01 17:19:59 GMT", "2016-10-01 17:27:59 GMT", "2016-10-01 17:35:59 GMT"))

GPS$datetime <- as.POSIXct(as.character(GPS$datetime))

和另一个是具有相关日期时间(POSIXct)的深度序列。

DEPTH <- data.frame(Depth=c(0.0, 0.1, 0.0, 0.0, 0.1, 1.5, 1.7, 1.7, 1.4, 1.5, 1.8, 2.1, 2.3, 1.7, 2.0, 2.6, 2.2, 2.1, 3.4, 3.3), 
                    datetime=c("2016-10-01 16:22:56 GMT", "2016-10-01 16:23:06 GMT", "2016-10-01 16:23:16 GMT", "2016-10-01 16:23:59 GMT", "2016-10-01 16:24:52 GMT", "2016-10-01 16:25:24 GMT", "2016-10-01 16:32:40 GMT", "2016-10-01 16:32:51 GMT", "2016-10-01 18:45:30 GMT", "2016-10-01 18:45:40 GMT", "2016-10-01 18:46:54 GMT", "2016-10-01 18:47:04 GMT", "2016-10-01 18:47:14 GMT", "2016-10-01 18:47:25 GMT", "2016-10-01 18:51:03 GMT", "2016-10-01 18:51:14 GMT", "2016-10-01 18:51:24 GMT", "2016-10-01 18:54:11 GMT", "2016-10-01 18:54:21 GMT", "2016-10-01 18:54:32 GMT"))

DEPTH$datetime <- as.POSIXct(as.character(DEPTH$datetime))

对于每个深度位置,我想基于来自位置数据帧的插值轨迹建议它应该是指定位置(纬度和经度),即位置是从点A到点B,在该点处沿着该线深度数据是否存在,假设点之间的速度一致,给定它的日期时间。

最终产品将是数据框中的2个向量,它们为每个深度值分配纬度和经度。

谢谢。

1 个答案:

答案 0 :(得分:1)

假设GPS数据中的连续路点之间的速度恒定(均匀速度恒定方向),我们可以单独执行线性插值{{ 1}}和Lat使用Lon中的approx

stats

在此用法中,DEPTH$Lat <- approx(x=GPS$datetime, y=GPS$Lat, xout=DEPTH$datetime, method="linear")$y DEPTH$Lon <- approx(x=GPS$datetime, y=GPS$Lon, xout=DEPTH$datetime, method="linear")$y 范围内datetime范围之外的DEPTH中的datetime的内插值已分配GPS。有关处理输入范围之外的插值的其他方法,请参阅NA

使用您的数据,结果是:

?approx