【发布时间】:2016-12-30 07:46:18
【问题描述】:
所以我正在开展一个项目,该项目需要我使用 30 多天/文件中给出的空气质量数据创建多个图。
我从一个已经做过的人那里学习和复制,但不知何故,我在将它与我拥有的数据集成时遇到了问题,感谢任何帮助。
代码如下:
#---START OF THE FOR LOOP---
all_dates = seq(begin_date, end_date, 1)
for (j in 1:length(all_dates)) {
selected_date = all_dates[j]
#read data from the file with (id, lat, lon, elev, value... enter your attributes here) columns
datapointfile = paste(variable,"_",aggregate,"_",format.Date(selected_date,"%Y-%m-%d"),".txt",sep="")
datapoints_wgs84 = read.table(datapointfile, header=TRUE)
coordinates(datapoints_wgs84) = ~lon + lat
proj4string(datapoints_wgs84) <- CRS("+init=epsg:4326")
datapoints <- spTransform(datapoints_wgs84, CRS(projection))
#INTERPOLATION STARTS HERE!
#calculate linear regression intercept and slope(observ=B+A*elev)
observlm <- lm(value ~ elev, datapoints)
datapoints$res = observlm$residuals
#calculate observ value raster using linear model (elevation / observ value)
intercept = observlm$coefficients[1]
slope = observlm$coefficients[2]
regression_grid <- intercept + srtm * slope
#interpolate the residuals using idw
idw_test = idw(res~1, datapoints, defaultgrid)
residual_grid = raster(idw_test, "var1.pred")
#add regression grid and residuals
finalgrid <- regression_grid + residual_grid
#INTERPOLATION ENDS HERE!
#START OF THE PLOT!
layout = list(vrstvastudyarea)
outfile = paste("Output", selected_date, ".png", sep="")
png(filename = outfile, width = 1500, height = 1000, pointsize = 25, bg = "white", res = 150)
nadpis = paste("Air Quality", selected_date)
print(spplot(finalgrid, at=intervaly, col.regions = grid_colors,
sp.layout=layout,
main=list(nadpis, cex=2, col="black", font=2),
colorkey=list(at=intervaly2, labels = list( at=intervaly2, cex = 1.5, labels = intervaly, lab = intervaly2), space="bottom")))
dev.off()
#END OF THE PLOT!
#---OUTPUT---
[inverse distance weighted interpolation]
Error in `[[<-.data.frame`(`*tmp*`, name, value = c(8.66783923397599, :
replacement has 14 rows, data has 18
所以基本上不是得到 30+ 个输出,而是得到 1 个输出(出于某种原因!?),然后我得到上面给出的错误作为输出:/。如果我没有输出,我会理解,但鉴于第一个数据文件和第二个数据文件在格式上几乎没有区别,我不应该在格式上有任何错误......
我认为可能有助于解决问题的更多信息是:
- 我的数据文件如下所示:
“id”“elev”“lon”“lat”“值”
阿菲永 1027 30.54277778 38.75166667 108.2903226
艾登 54 27.83666667 37.84027778 122.7096774
.
.
.
- 我从中复制数据的人的数据如下:
“id”“lat”“lon”“elev”“值”
2 50.69205 15.72876 816 37
3 49.735 16.0336 737 19
.
.
.
感谢您的宝贵时间。
【问题讨论】: