計(jì)算N年daily數(shù)據(jù)的每天平均值

以O(shè)MI NO2 L3 2013-2019年的數(shù)據(jù)為例,為了于2020年的NO2排放進(jìn)行對(duì)比,因此需要求出7年每天的平均值作為基線,代碼如下:

"""
計(jì)算2013-2019年每天的OMI NO2 L3數(shù)據(jù)的平均值
"""
import glob
import os
import rasterio
import numpy as np


out_dir = r'G:\DATA\OMINO2_L3\2013_2019_daily_mean'
file_list = glob.glob(r'G:\DATA\OMINO2_L3\tif\*.tif')

# obtain raste meta data
with rasterio.open(file_list[0]) as src:
    meta = src.meta
meta.update(dtype=rasterio.float32)

# make a key word list from input files 
key = []
for file in file_list:    
    filename = file.split('\\')[-1]    
    date = filename.split('_')[1]
    date = date.split('.')[0]
    key.append(date)
# key_list = set(key)
key_list = key[0:365]
print('The keys are: ')
print(key_list)

# read raster data function
def read_raster(raster):
    with rasterio.open(raster) as src:
        return(src.read(1))

# select the files match each key and calculate mean and write to disk
file_dict = {}
for key in key_list:
    print('The key word is ------> ' + key)
    file_dict[key] = []
    for file in file_list:
        if key in file:
            print('Found files ... ' + file)            
            file_dict[key].append(file)
# calculate mean 
for k, v in file_dict.items():
    array_list = [read_raster(x) for x in v]
    array_out = np.nanmean(array_list, axis=0) # ignoring the NA values
    # write to disk
    out_file = os.path.join(out_dir, k + '.tif')    
    with rasterio.open(out_file, 'w', **meta) as dst:
        dst.write(array_out.astype(rasterio.float32), 1)
    print('Writing files to ... ' + out_file)
print('... ... ... COMPLETED ... ... ...')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容