根据时间从 NETCDF(.NC 文件)中提取数据

Extract data from NETCDF (.NC file) based on time

我目前正致力于从 .NC 文件中提取数据以创建一个 .cur 文件以便在 GNOME 中使用。我在 python

中这样做

我提取了以下变量。

water_u(time, y, x)
water_v(time, y, x)
x(x): 
y(y): 
time(time): time
SEP(time, y, x)

cur 文件应包含以下内容:

[x][y][velocity x][velocity y]

这应该发生在每个存在的时间变量上。在这种情况下,我提取了 10 个时间数据,但我有成千上万的 [x][y] 和速度。

我的问题是如何根据时间变量提取速度?

import numpy as np 
from netCDF4 import Dataset 
volcgrp = Dataset('file_1.nc', 'r') 
var = volcgrp.variables['water_v'][:] 
print(var) 
newList = var.tolist() 
file = open('text.txt', 'w') 
file.write('%s\n' % newList) 
print("Done") 
volcgrp.close() 

这里的关键是读取它的三个维度中的每一个的 water_uwater_v,然后您可以沿着它的时间维度访问这些变量。

import netCDF4

ncfile = netCDF4.Dataset('file_1.nc', 'r') 
time = ncfile.variables['time'][:]  #1D
water_u = ncfile.variables['water_u'][:,:,:] #3D (time x lat x lon)
water_v = ncfile.variables['water_v'][:,:,:]

第一次访问此文件中每个网格点的数据:

water_u_first = water_u[0,:,:]

如您在评论中所述,要将此 3D 数据存储到文本文件中,您需要 (1) 循环 time,(2) 访问 water_uwater_v 那时,(3) 将那些二维数组展平为一维,(4) 如果使用标准 file.write 技术则转换为字符串(例如可以避免使用 Pandas to_csv) , (5) 在文本文件中将一维数组作为行写出。