首页 > 解决方案 > 计算每天收集的卫星数据的每周平均值

问题描述

我正在处理每天收集的下载的海面温度数据。

我想格式化数据,以便它给出一年中每周的平均温度,以便我可以绘制温度随时间的变化。该数据集是一个 3-D 数组,其中 34 行对应于经度,40 列对应于 30 个时间步长中的每一个(例如,收集数据的 2017 年 6 月的 30 天)。这是部分数据的快照1。我想我需要矩阵中数组 , , 5 - , ,11 的平均值来组成第 23 周,然后数组 , , 12 - , , 18 组成第 24 周等等,但我可能是错的......

这是我在 R 中加载数据集的代码:

junk <- GET('https://coastwatch.pfeg.noaa.gov/erddap/griddap/jplG1SST.nc?SST%5B(2017-06-01T00:00:00Z):1:(2017-06-30T00:00:00Z)%5D%5B(16.5):1:(16.9)%5D%5B(-23.10):1:(-22.77)%5D,mask%5B(2017-06-01T00:00:00Z):1:(2017-06-30T00:00:00Z)%5D%5B(16.5):1:(16.9)%5D%5B(-23.10):1:(-22.77)%5D,analysis_error%5B(2017-06-01T00:00:00Z):1:(2017-06-30T00:00:00Z)%5D%5B(16.5):1:(16.9)%5D%5B(-23.10):1:(-22.77)%5D', write_disk("sst.nc", overwrite=TRUE))


nc=nc_open('sst.nc')
names(nc$var)
v1=nc$var[[2]]
sst=ncvar_get(nc,v1)
dim(sst)
dates=as.POSIXlt(v1$dim[[2]]$vals,origin='1970-01-01',tz='GMT') 
dates
lon=v1$dim[[2]]$vals 
lat=v1$dim[[2]]$vals

然后我使用以下代码绘制数据:

I=which(lon>=-23.1 & lon<=-22.8)
J=which(lat>=16.5 & lat<=16.9)

sst2=sst[I,J,] 

n=dim(sst2) 

res=rep(NA,n) 
for (i in 1:n) 
  res[i]=mean(sst2[,,i],na.rm=TRUE) 

plot(1:n,res,axes=FALSE,type='o',pch=20,xlab='Week of the year',ylab='SST (ºC)', main = 'Average SST June 2017') 
axis(2) 
axis(1,1:n,format(dates, '%d')) 
box()

当前绘制此图3。我想沿 x 轴表示一年中的一周,这些点对应于 6 月每周的平均 SST。

有什么想法吗?

谢谢您的帮助!

标签: rarraysplotmeansatellite-image

解决方案


推荐阅读