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()