首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为ncks创建循环,使用Python从Hycom提取NetCDF数据

为ncks创建循环,使用Python从Hycom提取NetCDF数据
EN

Stack Overflow用户
提问于 2021-05-26 14:30:12
回答 1查看 64关注 0票数 0

我已经写了一个ncks代码来从Hycom数据库中提取数据,但是,由于服务器问题,我一次只能下载一个timestep。我需要一个循环,它允许我下载一个月的时间段的单一时间步数据。

代码语言:javascript
复制
ncks -d time,2015-12-01T00:00:00Z -d depth,0.00,1000.00,1 -v water_temp,salinity,water_u,water_v,surf_el -d lon,161.45,171.28 -d lat,-4.75,3.43 'http://tds.hycom.org/thredds/dodsC/GLBv0.08/expt_53.X/data/2015' test.nc

我想下载的4D变量: water_temp,salinity,water_u,water_v (它们的维度是时间,纬度,经度,深度)

我想下载的3D变量: surf_el (维度是时间、纬度和经度)

对于4D变量,我希望深度在0到1000m之间。这个代码是针对单个时间的,我想涵盖2015/12/01和2015/12/31之间的时间。整个2015年的12月。

下面是一些Python工作代码:

代码语言:javascript
复制
import netCDF4
from netCDF4 import Dataset
dec = Dataset('http://tds.hycom.org/thredds/dodsC/GLBv0.08/expt_53.X/data/2015')
print(dec.variables.keys())  #odict_keys(['depth', 'lat', 'lon', 'time', 'tau', 'water_u', 'water_u_bottom', 'water_v', 'water_v_bottom', 'water_temp', 'water_temp_bottom', 'salinity', 'salinity_bottom', 'surf_el'])

long = dec.variables['lon']
lati = dec.variables['lat']
time = dec.variables['time']

for d in dec.dimensions.items():
    print(d)

#('depth', <class 'netCDF4._netCDF4.Dimension'>: name = 'depth', size = 40)
#('lat', <class 'netCDF4._netCDF4.Dimension'>: name = 'lat', size = 3251)
#('lon', <class 'netCDF4._netCDF4.Dimension'>: name = 'lon', size = 4500)
#('time', <class 'netCDF4._netCDF4.Dimension'>: name = 'time', size = 2861)
EN

回答 1

Stack Overflow用户

发布于 2021-05-27 05:42:11

NCO手册提供了在时间维度here上进行循环的示例

代码语言:javascript
复制
for idx in {1..12}; do # Bash Shell (version 3.0+) 
  idx=`printf "%02d" ${idx}` # Zero-pad to preserve order
  ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
  ncra foo.${idx} t_anm_8589_${idx}.nc
done

如果您将date中的两位数月份替换为上面的${idx}变量,那么类似的操作应该适用于您。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67699616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档