最近出于个人需要,跑了PCR-globwb的陆地水和地下水数据,如果有需要可以私信(可能忙时顾不上回),1980-2019,0.5,全球,forcing data自己找的。
def change_WFDE6_rain_TO_PCR_Force():
'''此代码是为了得到PCR的输入'''
# import threading
from concurrent.futures import ThreadPoolExecutor, as_completed
import netCDF4 as nc
import datetime
import os
import time
import random
# day_s=get_year_days2(start_day='19790101',end_day='20191231')
nc_dir=r'I:\temp_20240918'
nc_paths=[os.path.join(nc_dir,i)for i in os.listdir(nc_dir)if '_v2.1.nc'in i ]
nc_paths.sort()
random.shuffle( nc_paths)
for i_nc in tqdm(nc_paths):
if os.path.exists(i_nc.replace('.nc','_daily.nc')):continue
if 'Rainf' in i_nc:
hourNC2dayNC(i_nc,k=24*60*60/1000)
else:
hourNC2dayNC1(i_nc,k=-273.15)
time.sleep(10)
rain_paths=[os.path.join(nc_dir,i)for i in os.listdir(nc_dir)if '_daily.nc'in i if 'Rainf'in i]
rain_paths.sort()
rain_path=r"D:\temp_20240919\daily_precipitation_cru_era-interim_1979_to_2019.nc"
NCs2NC(rain_paths,rain_path)
rain_paths=[os.path.join(nc_dir,i)for i in os.listdir(nc_dir)if '_daily.nc'in i if 'Tair'in i]
rain_paths.sort()
rain_path=r"D:\temp_20240919\daily_temperature_cru_era-interim_1979_to_2019.nc"
NCs2NC(rain_paths,rain_path)
def NCs2NC(NCs_paths,NC_path):
'''多个类似的nc文件组合成一个文件,这些nc具有相同的lon,lat,只是时间不同'''
import xarray as xr
import os
# 设置NetCDF文件所在的目录
# directory = r"I:\temp_20240918"
# nc_files = [os.path.join(directory, file) for file in os.listdir(directory) if file.endswith(".nc") if 'daily_precipitation'in file]
# nc_files=nc_files[0:2]
nc_files=NCs_paths
# 使用xarray打开并将它们沿着时间维度合并
datasets = [xr.open_dataset(nc_file) for nc_file in nc_files]
# 将所有的datasets沿着time维度进行合并
combined = xr.concat(datasets, dim='time')
# 保存合并后的数据到一个新的NetCDF文件
NC_path=NC_path#r"D:\temp_20240822\test_combined.nc"
combined.to_netcdf(NC_path)
这是我部分制作nc文件的代码,可以参考下。若还有问题,可以图片或者视频我看下。解决与否