NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hello Sukhonosov Sergey, By using an unlimited dimension, you can grow the file as you go rather than requiring that all the data be in memory before you write the file. In your case, the along the column direction would correspond to the unlimited dimension and the number of items in each row would correspond to the parameters that have that unlimited dimension. Here's some code writing along the unlimited dimension: String fileName = "testFile.nc"; NetcdfFileWriteable ncfile = NetcdfFileWriteable.createNew(fileName, true); Dimension timeDim new Dimension( "time", Dimension.UNLIMITED.getLength(), true, true, false ); ncfile.addDimension( null, timeDim ); Dimension [] dims = { timeDim}; ncfile.addVariable( "time", DataType.INT, dims ); ncfile.addVariable( "temp", DataType.FLOAT, dims ); ncfile.addVariable( "pres", DataType.FLOAT, dims ); try { ncfile.create(); } catch ( IOException e ) { System.err.println( "Failed to create file <" + fileName + ">: " + e.getMessage()); System.exit(); } ArrayInt.D1 timeArray = new ArrayInt.D1(1); ArrayFloat.D1 tempArray = new ArrayFloat.D1(1); ArrayFloat.D1 presArray = new ArrayFloat.D1(1); for ( int i = 0; i < 20; i++ ) { int [] origin = { i }; // Making up some data here. timeArray.set( 0 , i ); tempArray.set( 0, 2*i ); presArray.set( 0, 3*i ); try { ncfile.write( "time", origin, timeArray ); ncfile.write( "temp", origin, tempArray ); ncfile.write( "pres", origin, presArray ); } catch ( IOException e ) { System.err.println( "Failed to write file <" + fileName + "> at index=" + i + ": " + e.getMessage()); System.exit(); } catch ( InvalidRangeException e ) { System.err.println( "Bad range writing file <" + fileName + "> at index=" + i + ": " + e.getMessage()); System.exit(); } } try { ncfile.flush(); ncfile.close(); } catch ( IOException e ) { System.err.println( "Failed to flush/close file <" + fileName + ">: " + e.getMessage()); System.exit(); } Hope that helps. Let me know if you have other questions. Ethan > Hello support team! > > I have large plain ascii file with data. How it's better to make > arrays in NetCDF file if one array is one column in ascii. I've tried > to read ascii file by string and parse it, but I have to use temporary > ArrayList or Hashtable to store data before it would be written to > NetCDF and it takes much RAM. Is there any nice approach to write into > NetCDF from ascii file without using temporary java constructions such > as ArrayList()? > > > -- > Best regards, Sukhonosov Sergey mailto:serg@xxxxxxxx > > Ticket Details ================== Ticket ID: WVX-463093 Department: Support netCDF Java Priority: Normal Status: Open
netcdf-java
archives: