Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
Hi James: Turns out its a bug when there are no variables in the file. Ill make a fix as soon as i can (probably tommorrow or day after). BTW, im sorry to say going in and out of define mode is not very robust in netcdf-java. Id use it as minimally as possible, or at least be sure to test things are working correctly. Also its quite inefficient, as it forces a complete file rewrite in many cases. Thanks for reporting the bug. John James.Dempsey@xxxxxxxx wrote:
Hi,I am using the current 4.1 netcdf-java library (4.1.20100311.2157 or change 14 I believe) and encountering a problem when trying to use redefine mode. A similar problem also occurs using the latest 4.0 library. Our aim is to create some command line tools that allow a netCDF file to be build up. First, define a dimension, then add a variable to it, then populate the variable. However when we close and reopen the file, any attempt to add a variable results in the following stack trace:Exception in thread "main" _java.io.IOException_: The parameter is incorrect at java.io.RandomAccessFile.setLength(_Native Method_) at ucar.unidata.io.RandomAccessFile.close(_RandomAccessFile.java:339_) at ucar.nc2.iosp.netcdf3.N3iosp.close(_N3iosp.java:878_) at ucar.nc2.NetcdfFileWriteable.close(_NetcdfFileWriteable.java:769_) at au.csiro.netcdf.CreateFile.main(_CreateFile.java:45_) The following code demonstrates the problem.package au.csiro.netcdf; import java.io.IOException; import ucar.ma2.DataType;import ucar.nc2.Dimension; import ucar.nc2.NetcdfFileWriteable;public class CreateFile { private static String dimensionName = "lat";private static int dimensionSize = 20; private static String variableName = "temp"; private static DataType variableDataType = DataType.getType("Float");public static void main(String[] args) throws IOException {String outputFilename = args[0];NetcdfFileWriteable ncFile = NetcdfFileWriteable.createNew(outputFilename, true);try {Dimension dimension = new Dimension(dimensionName, dimensionSize, true /* isShared */,false /* isUnlimited */, false /* isVariableLength */); ncFile.addDimension(null, dimension); ncFile.create(); } finally { ncFile.close(); }ncFile = NetcdfFileWriteable.openExisting(outputFilename, true);try { ncFile.setRedefineMode(true);ncFile.addVariable(variableName, variableDataType, dimensionName);ncFile.setRedefineMode(false); } finally { ncFile.close(); } }} If the ncFile.close() and NetcdfFileWriteable.openExisting calls are commented out the file is successfully created with the variable. Could anyone advise if this is something I am doing wrong or a problem with the library please? Cheers,James Dempsey Java Technical Lead | Software Services Information Management and Technology CSIRO Australia ------------------------------------------------------------------------ _______________________________________________ netcdf-java mailing list netcdf-java@xxxxxxxxxxxxxxxxFor list information or to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/
netcdf-java
archives: