我正在尝试对 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"))
非常感谢您的帮助,我真的很感激任何帮助! :)