在 R 中插入每小时海洋温度数据

时间:2021-01-20 00:08:58

标签: r interpolation geospatial spatial temperature

我正在尝试对 2 km^2 内 27 个位置的温度数据执行每小时插值。我的数据格式为:DateTimeUTC、Temp_C、Lat、Lgn、Station Name。我曾尝试点击此链接 https://rspatial.org/raster/analysis/4-interpolation.html,但在需要提供自己的网格时出现错误。我使用的空间有点离岸。然后我尝试按照此链接 https://mgimond.github.io/Spatial/interpolation-in-r.html 上的说明进行操作,但在需要我自己的边界框时也遇到了错误。我试图创建一个循环,可以使用以下代码执行此操作:

temps = 我的数据


library(tidyverse)
library(lubridate)
library(data.table)
library(phylin)
map_dat <- raster::getData("GADM",country="USA",level=1)
map_dat <- subset(map_dat, NAME_1=="California")

temp_sort <- 
  temps %>%
  distinct(DateTimeUTC, Lat, Lng) %>%
  group_by(DateTimeUTC) %>%
  summarise(n_positions = n())

for (hour in temp_sort$DateTimeUTC) {
  temps %>%
    filter(DateTimeUTC == hour) %>%
    select(Temp_C, Lng, Lat)
  int <- idw(values = temps[,2], coords = temps[,3:4], grid = map_dat, p = 2)
  grid.image(int, map_dat, main = 'IDW interp', xlab = 'Longitude', ylab = 'Latitude')
}

这不起作用,因为我无法运行我的点的网格,并且在按照链接使用 IDW 插值时,我在希望插入的空间中遇到了类似的问题。

我很想每小时进行一次插值,然后将它们拼接成 mov 或 gif。这是我的 5,000 小时数据集中的 2 小时。

Dput 输出如下,注意还有额外的列,但上面提到的 4 列是唯一相关的:

structure(list(DateTimeUTC = structure(c(1600722000, 1600725600, 
1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 
1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 
1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 
1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 
1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 
1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 
1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 
1600722000, 1600725600), tzone = "UTC", class = c("POSIXct", 
"POSIXt")), SN = c("20069752", "20069752", "20406080", "20406080", 
"20566747", "20566747", "20406082", "20406082", "1058360", "1058360", 
"10675228", "10675228", "20627914", "20627914", "VR2Tx-482649", 
"VR2Tx-482649", "VR2Tx-484552", "VR2Tx-484552", "VR2Tx-484557", 
"VR2Tx-484557", "VR2Tx-484555", "VR2Tx-484555", "VR2Tx-482645", 
"VR2Tx-482645", "VR2Tx-484550", "VR2Tx-484550", "VR2Tx-484553", 
"VR2Tx-484553", "VR2Tx-482643", "VR2Tx-482643", "VR2Tx-482648", 
"VR2Tx-482648", "VR2Tx-480652", "VR2Tx-480652", "VR2Tx-482647", 
"VR2Tx-482647", "VR2Tx-484554", "VR2Tx-484554", "VR2Tx-484558", 
"VR2Tx-484558", "VR2Tx-484551", "VR2Tx-484551", "VR2Tx-484559", 
"VR2Tx-484559", "VR2Tx-484556", "VR2Tx-484556"), Station = c("JWS_Carpinteria_North", 
"JWS_Carpinteria_North", "JWS_Padaro_Mid_A", "JWS_Padaro_Mid_A", 
"JWS_Padaro_Mid_B", "JWS_Padaro_Mid_B", "JWS_Padaro_Mid_C", "JWS_Padaro_Mid_C", 
"JWS_Padaro_Mid_D", "JWS_Padaro_Mid_D", "JWS_SantaClaus_OS1", 
"JWS_SantaClaus_OS1", "JWS_SantaClaus_OS2", "JWS_SantaClaus_OS2", 
"JWS_Padaro_Inshore_A", "JWS_Padaro_Inshore_A", "JWS_Padaro_Inshore_B", 
"JWS_Padaro_Inshore_B", "JWS_Padaro_Inshore_C", "JWS_Padaro_Inshore_C", 
"JWS_Padaro_Inshore_D", "JWS_Padaro_Inshore_D", "JWS_Padaro_Inshore_E", 
"JWS_Padaro_Inshore_E", "JWS_Padaro_Inshore_F", "JWS_Padaro_Inshore_F", 
"JWS_Padaro_Inshore_G", "JWS_Padaro_Inshore_G", "JWS_Padaro_Inshore_H", 
"JWS_Padaro_Inshore_H", "JWS_Padaro_Offshore_A", "JWS_Padaro_Offshore_A", 
"JWS_Padaro_Offshore_B", "JWS_Padaro_Offshore_B", "JWS_Padaro_Offshore_D", 
"JWS_Padaro_Offshore_D", "JWS_Padaro_Offshore_E", "JWS_Padaro_Offshore_E", 
"JWS_Padaro_Offshore_F", "JWS_Padaro_Offshore_F", "JWS_Padaro_Offshore_G", 
"JWS_Padaro_Offshore_G", "JWS_Padaro_Offshore_H", "JWS_Padaro_Offshore_H", 
"JWS_Padaro_Offshore_I", "JWS_Padaro_Offshore_I"), Temp_C = c(16.237, 
17.189, 15.951, 15.664, 16.046, 15.855, 16.141, 16.713, 15.187, 
15.282, 15.76, 16.046, 15.95111111, 16.33222222, 16.9, 18.5, 
15.7, 15.9, 15.8, 16.4, 16.7, 16.7, 15.5, 15.4, 16, 16, 15.6, 
16.3, 15.7, 16, 15, 15.2, 14.8, 15, 15.1, 15.2, 15.1, 15.2, 15, 
15.2, 16.1, 15.9, 16.2, 16.7, 15.1, 15.5), Source = c("HOBO", 
"HOBO", "HOBO", "HOBO", "HOBO", "HOBO", "HOBO", "HOBO", "HOBO", 
"HOBO", "HOBO", "HOBO", "HOBO", "HOBO", "Receiver", "Receiver", 
"Receiver", "Receiver", "Receiver", "Receiver", "Receiver", "Receiver", 
"Receiver", "Receiver", "Receiver", "Receiver", "Receiver", "Receiver", 
"Receiver", "Receiver", "Receiver", "Receiver", "Receiver", "Receiver", 
"Receiver", "Receiver", "Receiver", "Receiver", "Receiver", "Receiver", 
"Receiver", "Receiver", "Receiver", "Receiver", "Receiver", "Receiver"
), DateTimePT = structure(c(1600722000, 1600725600, 1600722000, 
1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 
1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 
1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 
1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 
1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 
1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 
1600725600, 1600722000, 1600725600, 1600722000, 1600725600, 1600722000, 
1600725600), tzone = "America/Los_Angeles", class = c("POSIXct", 
"POSIXt")), Lat = c(34.39591, 34.39591, 34.39726, 34.39726, 34.39481, 
34.39481, 34.39294, 34.39294, 34.39185, 34.39185, 34.41116, 34.41116, 
34.405, 34.405, 34.41342, 34.41342, 34.41036, 34.41036, 34.40791, 
34.40791, 34.40329, 34.40329, 34.40059, 34.40059, 34.39779, 34.39779, 
34.39432, 34.39432, 34.39329, 34.39329, 34.40923, 34.40923, 34.40778, 
34.40778, 34.40252, 34.40252, 34.39999, 34.39999, 34.3972, 34.3972, 
34.39452, 34.39452, 34.39169, 34.39169, 34.39086, 34.39086), 
    Lng = c(-119.53958, -119.53958, -119.54523, -119.54523, -119.54215, 
    -119.54215, -119.53622, -119.53622, -119.5334, -119.5334, 
    -119.5615, -119.5615, -119.5505, -119.5505, -119.56553, -119.56553, 
    -119.55805, -119.55805, -119.55453, -119.55453, -119.54897, 
    -119.54897, -119.5459, -119.5459, -119.54272, -119.54272, 
    -119.53448, -119.53448, -119.53027, -119.53027, -119.56564, 
    -119.56564, -119.56136, -119.56136, -119.5548, -119.5548, 
    -119.55154, -119.55154, -119.54817, -119.54817, -119.54495, 
    -119.54495, -119.5414, -119.5414, -119.53675, -119.53675), 
    TempLoggerDepth_m = c(4.39, 4.39, 6.71, 6.71, 6.1, 6.1, 1.83, 
    1.83, 6.71, 6.71, 5.49, 5.49, 6.4, 6.4, 2.74, 2.74, 5.18, 
    5.18, 5.18, 5.18, 5.79, 5.79, 4.57, 4.57, 5.18, 5.18, 4.27, 
    4.27, 5.18, 5.18, 5.49, 5.49, 6.1, 6.1, 6.4, 6.4, 5.18, 5.18, 
    7.01, 7.01, 6.71, 6.71, 2.74, 2.74, 3.66, 3.66)), row.names = c(NA, 
-46L), spec = structure(list(cols = list(DateTimeUTC = structure(list(
    format = "%m/%d/%Y %H:%M"), class = c("collector_datetime", 
"collector")), SN = structure(list(), class = c("collector_character", 
"collector")), Station = structure(list(), class = c("collector_character", 
"collector")), Temp_C = structure(list(), class = c("collector_double", 
"collector")), Source = structure(list(), class = c("collector_character", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1L), class = "col_spec"), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"))

非常感谢您的帮助,我真的很感激任何帮助! :)

0 个答案:

没有答案