[netcdf-java] Writing data for a single timestep
John Caron
caron at unidata.ucar.edu
Mon Nov 5 15:10:51 MST 2007
Hi Christopher:
You are right that writing data a record at a time is the key to efficiently writing files with an unlimited dimension. Note that in this case you need:
Dimension timeDim = outNc.addUnlimitedDimension(this.TIME);
Ive just added an example at:
http://www.unidata.ucar.edu/software/netcdf-java/tutorial/NetcdfWriteable.html#RecordAtaTime
Let me know if that helps, and if you have more questions.
John
Christopher Mueller wrote:
> Hi all,
>
> I’ve successfully created an empty NetcdfFile but I’m having some
> difficulty writing data to the file. Just for a bit of context, I’m
> trying to write data from a list of particles – each of which has an id,
> lat, lon and concentration – to the nc file one timestep at a time.
>
> In other words, I have a loop where a new list of particles is generated
> each cycle. After they are generated, they need to be written to the nc
> file as a “new” timestep.
>
> Basically, I’d like to have a method that accepts the list of particles
> (which contain lat, lon, conc) and a time and simply write a new time
> record with all of the particles in the list. Is that possible??
>
> I’m completely lost as to how I can do this efficiently. All of the
> examples I can find show writing all of the variables for all times at
> once – which doesn’t help (too much data to hold in memory until the end).
>
> Any help is very much appreciated.
>
> Thanks,
> Chris
>
> Here’s my file creation code just in case there’s something wrong here...:
>
> outNc = NetcdfFileWriteable.createNew(fileLoc, true);
>
> //make the dimensions
> Dimension timeDim = outNc.addDimension(this.TIME, timeSteps);
> Dimension partDim = outNc.addDimension(this.PARTICLE, numParts);
>
> ArrayList dims = new ArrayList();
>
> //add coordinate variables
> outNc.addVariable(this.TIME, DataType.INT, new
> Dimension[]{timeDim});
> outNc.addVariable(this.PARTICLE, DataType.INT, new
> Dimension[]{partDim});
>
> dims.add(timeDim);
> dims.add(partDim);
>
> //add the variables
> outNc.addVariable(this.LAT, DataType.DOUBLE, dims);
> outNc.addVariable(this.LON, DataType.DOUBLE, dims);
> outNc.addVariable(this.CCONC, DataType.DOUBLE, dims);
>
> //add attributes to the variables
> outNc.addVariableAttribute(this.LAT, "units", "deg North");
> outNc.addVariableAttribute(this.LON, "units", "deg East");
> outNc.addVariableAttribute(this.CCONC, "units", "moles liter^-1");
>
> try {
> outNc.create();
> } catch (IOException ex) {
> ex.printStackTrace();
> }
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> netcdf-java mailing list
> netcdf-java at unidata.ucar.edu
> For list information or to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/
More information about the netcdf-java
mailing list