首页 > 解决方案 > 处理每日温度时间序列插值过程中的缺失数据

问题描述

我打算获得每日温度的多波段时间序列栅格。因此,我通过 idw+线性回归方法对 daily-temperature.cvs 时间序列 [1980-2018] 进行插值。下面的代码旨在开发 14245 个时间步,每个时间步为一天。但是,插值在时间步 731 附近停止。即我只得到从 01-01-1980 到 31-12-1981 的光栅文件。查看 database.cvs,我发现我没有 1982 年 1 月 1 日的温度值。所以,我认为这就是循环停止并显示以下消息的原因:“gstat.formula(d$formula, d$data) 中的错误:公式中不存在响应变量”。我的问题是 i)如何在插值过程中绕过缺失值或 ii)包含一个栅格网格数天没有值来保持时间帧序列和插值过程,

我是 R 空间分析的新手,所以我不太了解如何解决或解决这个问题。

循环插值

begin_date = as.Date("1980-01-01")
end_date = as.Date("2018-12-31")
all_dates<- seq(begin_date, end_date, 1)
for (i in 1:length(all_dates)) {
selected_date<- all_dates[i]

估计温度~海拔的线性回归模型

model<- lm(Valor~Altitud, datapoints) datapoints$res<- model$residuals plot(Valor~Altitud, datapoints) abline(model)

使用之前的线性模型计算温度值栅格

a<- model$coefficients[1]
b<- model$coefficients[2]
regression_grid<- a+r*b

根据 selected_date 对数据库进行子集化

dtbs<- subset(datapoints, datapoints$Fecha ==selected_date)

使用 idw 对残差进行插值

idw_test<- idw(res~1,dtbs, defaultgrid)

添加回归网格和残差

final_grid<- regression_grid + residual_grid

构造每个文件名

outname<- sub(pattern = ".tif", replacement = final_grid,
x=selected_date)

导出光栅文件

r<- writeRaster(final_grid, file.path="~/ERA_CORPOCHIVOR/daily_temperature/grids/", filename = outname, "GTiff", ".tif", overwrite=T)
}#end of the for loop

标签: time-seriesrstudiointerpolationgeospatialraster

解决方案


推荐阅读