2016-10-31 2 views
1

В настоящее время я работаю над извлечением данных из файла .NC, чтобы создать файл .cur для использования в GNOME. Я делаю это в pythonИзвлечь данные из NETCDF (.NC-файл) на основе времени

Я извлек следующие переменные.

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

Файл дворняжка должен содержать следующее:

[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() 
+0

Вам действительно нужно предоставить более подробную информацию, чтобы иметь возможность получить ответ на ваш вопрос. Пожалуйста, покажите код, который вы пробовали до сих пор, и опишите, что с ним происходит (возникает ли исключение? Если да, дайте трассировку). Вам также может потребоваться предоставить пример данных, хотя, если вы еще не можете разобрать файл (и не можете публиковать его публично), это может быть немного сложнее. – Blckknght

+0

@Blckknght Это код, который я пытался до сих пор 'code' импорта NumPy, как нп из netCDF4 импорта Dataset volcgrp = Dataset ('file_1.nc', 'г') вар = volcgrp.variables [» water_v '] [:] печать (вар) NewList = var.tolist() файл = открыт (' text.txt», 'ж') file.write ('% s \ п' % NewList) печати («Done») volcgrp.close() 'code' В этом случае я пытаюсь извлечь water_v и поместить его в текстовый файл. Мое задание состоит в том, чтобы создать файл, содержащий строки, где в строке 1 и строках поступает вода_v и water_u, соответственно. Это необходимо для каждого фактора времени в файле .NC. Это немного разъясняет? –

+0

Пожалуйста, поместите код в вопрос, где вы можете отформатировать его правильно (отступы имеют значение в Python, поэтому еще более важно, чем обычно, иметь достойное форматирование). – Blckknght

ответ

1

Ключ здесь, чтобы прочитать в water_u и water_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_u и water_v в это время, (3) сгладить эти 2D-массивы до 1D, (4) преобразовать в строки при использовании стандартной технологии file.write (можно избежать использования Pandas to_csv для пример) и (5) выписать 1D массивы в виде строк в текстовом файле.

+0

благодарит за подробное объяснение! Я попробую и расскажу о моих результатах! Еще раз спасибо –

Смежные вопросы