2016-10-31 1 views
1

Ich arbeite derzeit an dem Extrahieren von Daten aus einer .NC-Datei, um eine .cur-Datei für die Verwendung in GNOME zu erstellen. Ich mache das in PythonExtrahieren Sie Daten von NETCDF (.NC-Datei) basierend auf Zeit

Ich extrahierte die folgenden Variablen.

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

Die cur Datei sollte folgende Angaben enthalten:

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

dies für jede Zeitvariable vorhanden passieren sollte. In diesem Fall habe ich 10 Zeitdaten extrahiert, aber ich habe Tausende von [x][y] und Geschwindigkeit.

Meine Frage ist, wie extrahiert man die Geschwindigkeiten basierend auf der Zeitvariable?

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

Sie werden wirklich mehr Details geben müssen, um eine Antwort auf Ihre Frage zu erhalten. Bitte zeigen Sie den Code, den Sie bisher ausprobiert haben, und beschreiben Sie, was damit passiert (gibt es eine Ausnahme? Wenn ja, geben Sie das Traceback an). Möglicherweise müssen Sie auch ein Beispiel für die Daten angeben. Wenn Sie die Datei jedoch noch nicht analysieren können (und sie nicht öffentlich freigeben können), ist das möglicherweise etwas schwieriger. – Blckknght

+0

@Blckknght dies der Code ist, habe ich versucht, so weit 'code' import numpy als np aus netCDF4 import Datensatz volcgrp = Datensatz ('file_1.nc', 'r') = var volcgrp.variables [‘ water_v '] [:] print (var) newList = var.tolist() file = open (' text.txt‘, 'w') file.write ('% s \ n' % newList) Druck ("Fertig") volcgrp.close() 'code' In diesem Fall versuche ich, Wasser_v zu extrahieren und es in eine Textdatei zu legen. Meine Aufgabe besteht darin, eine Datei zu erstellen, die Zeilen enthält, in denen in Zeile 1 und Zeilen jeweils die Variablen water_v und water_u enthalten sind. Dies muss für jeden Zeitfaktor in der .NC-Datei geschehen. Verdeutlicht dies ein wenig? –

+0

Bitte setzen Sie den Code in die Frage, wo Sie ihn richtig formatieren können (Einrückung ist in Python wichtig, daher ist es noch wichtiger, eine ordentliche Formatierung zu haben). – Blckknght

Antwort

1

Der Schlüssel hier ist in den water_u und water_v für jedes seiner drei Dimensionen zu lesen und dann können Sie diese Variablen entlang ihrer zeitlichen Dimension zuzugreifen.

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

Um Daten an jedem Gitterpunkt zum ersten Mal in dieser Datei zuzugreifen:

water_u_first = water_u[0,:,:] 

diese 3D-Daten in eine Textdatei speichern, wie Sie in den Kommentaren beschreiben, müssen Sie (1) Schleife über time, (2) Zugriff water_u und water_v zu diesem Zeitpunkt, (3) diese 2D-Arrays zu 1D flacher machen, (4) in Strings konvertieren, wenn die Standard file.write Technik (kann mit Pandas to_csv für Beispiel) und (5) schreibe die 1D-Arrays als Zeilen in die Textdatei.

+0

vielen dank für die detaillierte erklärung! Ich werde es versuchen und Sie über meine Ergebnisse informieren! Nochmals vielen Dank –

Verwandte Themen