2017-04-02 12 views
1

Ich würde gerne eine zusätzliche Variable hinzufügen, die die Julianischen Daten zu einem bestehenden Satz von Netcfd Klimadaten-Dateien enthält. Ich habe ein bisschen Python-Skripting gemacht, aber es ist eine Weile her, also bin ich ziemlich eingerostet. Nach dem Lesen der „netCDF4 Modul“ Dokumentation Ich habe versucht, das Skript zu schreiben, einen neuen varaiable erstellen mit:Variable hinzufügen zu einer bestehenden Netcdf4-Datei mit Python

newvarJD= infile.create.Variable('Julian_Day','i4',          
           ('lon','lat','time'))# attributes, varname, 
                 dtype, dimensions=() 

aber ich erhalte ein „Attribut: NetCDF: Attribut nicht gefunden“, wenn es diese Zeile erreicht:

Datei "C: /WinPython64/WinPython-64bit-3.4.4.6Qt5/notebooks/netcfdfill.py", Zeile 35, in newvarJD = infile.create.Variable ('julian_day', 'i4',

Also, ich dachte, dass die Dimensionen deklariert werden müssen, so änderte ich den Code, um dies zu tun:

lat_nc = infile.dimensions['lat'] #define dimensions for create.variable 
lon_nc = infile.dimensions['lon'] 
time_nc = infile.dimensions['time'] 

aber jetzt bekomme ich einen neuen Fehler, der KeyError sagt: ‚lat‘

Ich schließe meinen Versuch des Skripts als ich, ich habe einige Fehler mehr vorstellen. Könntest du mir helfen?

#************************** 
# Access standard libraries 
#************************** 
from netCDF4 import Dataset 
import numpy as np 
import os 
# Set the input/output directories 
wrkDir = 'C:/Netcfd/BCSD/test' 
Minifile = wrkDir + '/tasmin' 

#*************************** 
# Add a Julian date variable to all *.nc file in directory 
#**************************** 



inList = os.listdir(Minifile) # List all the files in the 'tasmin' 
           directory 
print(inList) 

for fileName in inList:  # Step through each file 
    ifile = fileName 
    baseName, extension = os.path.splitext(ifile) 
    if extension == '.nc': 
     infile = Dataset("ifile", "r+", format="NETCDF4")#append to add 
                  Julian 
     lat_nc = infile.dimensions['lat'] #define dimensions for 
              create.variable 
     lon_nc = infile.dimensions['lon'] 
     time_nc = infile.dimensions['time'] 
     newvarJD= infile.create.Variable('Julian_Day','i4', 
             ('lon_nc','lat_nc','time_nc'))# 
               varname,dtype, dimensions=() 
     newvarJD.units= "Days" 
     newvarJD.long_name = 'Annual Julian Days' 

     JD = 0 # counter used to set Julian day value 
     for i in range(len(time_nc)): 
      JD = JD + 1 # start with Julina Day 1 
      newvarJD = np.asarray(infile[:,:,:,JD])# write data into the 
                variable created 
     print ('New NC dims ->'(infile.shape)) 
    infile.close()  

Antwort

0

Die Funktion heißt createVariable(). Ihr Code sollte mit diesem Fix funktionieren.

Verwandte Themen