2016-10-31 1 views
1

Je travaille actuellement sur l'extraction de données à partir d'un fichier .NC pour créer un fichier .cur à utiliser dans GNOME. Je le fais en pythonExtraire des données de NETCDF (fichier .NC) en fonction de l'heure

J'ai extrait les variables suivantes.

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

Le fichier doit contenir cabot les éléments suivants:

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

cela devrait se produire pour chaque variable présente de temps. Dans ce cas, j'ai 10 données de temps extraites, mais j'ai des milliers et des milliers de [x][y] et de la vitesse.

Ma question est de savoir comment extraire les vélocités en fonction de la variable de temps?

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

Vous aurez vraiment besoin de donner plus de détails pour avoir une chance d'obtenir une réponse à votre question. Montrez le code que vous avez essayé jusqu'à présent et décrivez ce qui se passe avec (si elle déclenche une exception, si c'est le cas, donnez la trace). Vous pourriez également avoir besoin de fournir un exemple de données, mais si vous n'êtes pas encore en mesure d'analyser le fichier (et que vous ne pouvez pas le partager publiquement), cela peut être un peu plus difficile. – Blckknght

+0

@Blckknght Voici le code que j'ai essayé jusqu'à présent ' numpy de recueil HSC importation comme np de Dataset d'importation netCDF4 volcgrp = Dataset ('file_1.nc', 'r') var = volcgrp.variables [ » water_v '] [:] impression (var) = newList var.tolist() du fichier = open (' text.txt », 'w') file.write ('% s \ n' % newList) impression ("Done") volcgrp.close() 'code' Dans ce cas, j'essaie d'extraire water_v et de le placer dans un fichier texte. Mon devoir est de faire un fichier contenant des lignes où sur row1 et les lignes à venir water_v et water_u, respectivement. Cela doit se produire pour chaque facteur de temps dans le fichier .NC. Est-ce que cela clarifie un peu? –

+0

Veuillez mettre le code dans la question, où vous pouvez le formater correctement (l'indentation est importante en Python, donc il est encore plus important que d'habitude d'avoir un formatage correct). – Blckknght

Répondre

1

La clé est de lire ici dans le water_u et water_v pour chacun de ses trois dimensions et vous pouvez accéder à ces variables le long de sa dimension temporelle.

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'][:,:,:] 

Pour accéder aux données à chaque point de la grille pour la première fois dans ce fichier:

water_u_first = water_u[0,:,:] 

Pour stocker ces données 3D dans un fichier texte que vous décrivez dans les commentaires, vous devrez (1) boucle time, (2) accès water_u et water_v à ce moment-là, (3) aplatir ces tableaux 2D à 1D, (4) convertir en chaînes si vous utilisez la technique standard file.write (peut être évité en utilisant Pandas to_csv pour exemple), et (5) écrire les tableaux 1D comme des lignes dans le fichier texte.

+0

merci beaucoup pour l'explication détaillée! Je vais essayer et vous informer de mes résultats! Encore merci –