Интерполяция значений на изогнутую плоскость в трехмерном пространстве в R - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть некоторые данные океанографического профилирования по траектории судна, для тех из вас, кто знаком с термином «данные буксировки», поэтому инструменты, собирающие данные, отслеживают пилообразный паттерн по глубине и траектории судна. В моем конкретном случае это достаточно близко к прямой линии, но это не обязательно (я ищу общее решение). Я хочу интерполировать значения параметров на плоскость, которая использует глубину по вертикали, но следует по траектории кораблей по горизонтали, а затем использует цветовую шкалу, чтобы представить изменение интересующего меня параметра (например, температуры). Я преобразовал данные профиля в фрейм данных SpatialPoints, вывел интересующие переменные и теперь хочу построить их в 3D. Набор данных довольно большой, но имеет следующую форму:

           coordinates           Date_Time SV.M.SEC. SVPress.dbar. SVTemp.C. Press.DQ.      T1
1 (37.30324, -32.29988) 2017-12-29 11:23:46  1518.867        12.143    18.578     3.206 18.6325
2 (37.30324, -32.29988) 2017-12-29 11:23:48  1518.849        11.857    18.556     2.363 18.5440
3 (37.30322, -32.29986) 2017-12-29 11:23:52  1518.790        13.143    18.549     3.652 18.6517
4 (37.30322, -32.29986) 2017-12-29 11:23:53  1518.799        12.857    18.551     3.252 18.6780
5 (37.30322, -32.29986) 2017-12-29 11:23:53  1518.842        13.143    18.552     3.252 18.6780
6 (37.30322, -32.29988) 2017-12-29 11:23:54  1518.900        12.857    18.553     3.252 18.5528
       T2       C1       C2    Sal1    Sal2 O2.mg.L.   Trans  Fluor    Turb Depth  Scan pTemp
1 18.8244 47.88954 47.79131 36.1446 35.8939  190.115 71.6130 0.1334  0.0021 3.182 11473 18.65
2 18.5705 47.88498 47.86511 36.2189 36.1787  194.944 67.0215 0.1292  0.0029 2.345 11521 18.65
3 18.6030 47.90367 47.90222 36.1396 36.1811  171.238 91.0900 0.1382 -0.0010 3.625 11617 18.65
4 18.5443 47.92843 47.92030 36.1376 36.2483  170.387 91.9540 0.1356 -0.0009 3.228 11641 18.65
5 18.5443 47.92843 47.92030 36.1376 36.2483  170.387 91.9540 0.1356 -0.0009 3.228 11641 18.65
6 18.6785 47.91153 47.90005 36.2334 36.1131  185.252 91.0406 0.1272 -0.0008 3.228 11665 18.65
      PSUu    CMSVu   DeltaSal     DeltaSV      Lat      Long
1 36.19109 1518.971 0.04648770 -0.10356189 37.30324 -32.29988
2 36.24329 1518.787 0.02438573  0.06180618 37.30324 -32.29988
3 36.18991 1519.027 0.05031308 -0.23724430 37.30322 -32.29986
4 36.19869 1519.094 0.06109313 -0.29450921 37.30322 -32.29986
5 36.23412 1519.094 0.09652132 -0.25150921 37.30322 -32.29986
6 36.28279 1518.844 0.04939003  0.05636167 37.30322 -32.29988

Я пробовал scatterplot3d и интерфейс Акимы, которые выполняют свои вычисления, но не выдают вывод в требуемом формате, scatterplot3d подходит ближе всего, но мне не удается достичь плоскости, и ей не нравятся SpatialPoints горько жаловаться ...

x<-CTD_SVP_merged$coordinates
y<-CTD_SVP_merged$Depth
z<-CTD_SVP_merged$DeltaSal

Akima<-interp(x, y, z, xo=seq(min(x), max(x), length = length(x)), yo=seq(min(y), max(y), length = length(y)), linear = TRUE, extrap=FALSE, duplicate = "mean", dupfun = NULL)
scatterplot3d(x=CTD_SVP_merged$Lat, y=CTD_SVP_merged$Long,z=CTD_SVP_merged$Depth, theta=15, phi=20)
plot(CTD_SVP_merged, pch=20, main="Full Dataset", axes=TRUE)

Мой ожидаемый результат будет похож на разноцветную завесу со значениями цвета, определяемыми интересующим параметром, прямо вверх и вниз по вертикали и соответствующими траектории движения судов по горизонтали

...