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.
Hi Nicholas, Instead of this: > // Write each column to file? > for(int i = 0; i < NY; i++) > data->put( dataOut, i, NX ); try the following: for (int i=0; i<NY; i++) // iterate over rows { data->set_cur(i*NX); // set data's current_pointer to start of i'th row data->put(dataOut,1,NX);// copy 1*NX numbers from dataOut to data; row (Y) major } I haven't digested the rest of your code, but certainly the arguments to put() are lengths, not indexes. Good luck, Sjur K :-) > -----Original Message----- > From: netcdfgroup-bounces@xxxxxxxxxxxxxxxx > [mailto:netcdfgroup-bounces@xxxxxxxxxxxxxxxx] On Behalf Of > Nicholas Kinar > Sent: 13. mai 2010 21:21 > To: netcdfgroup@xxxxxxxxxxxxxxxx > Subject: [netcdfgroup] Creating NetCDF dataset from 2D array > by progressive writing of array columns > > Hello-- > > I would like to store an M-by-N array in a NetCDF file. The > array would > be stored as a single variable. I know the values of M and > N, but due > to physical memory limitations on my desktop computer, I > cannot load the > entire 2D array, which would consist of thousands of rows and > hundreds > of columns. Instead of loading the entire 2D array, I would like to > load M-by-1 arrays (1D arrays), and then progressively add > each column > to the NetCDF file to create the M-by-N array. > > Is this possible? The following code snippet (based on the > C++ example > given in the documentation) demonstrates what I would like to > accomplish. However, after running this code snippet, the > NetCDF file > produced appears to be nothing but junk data. (I am using > ParaView from > Kitware as the NetCDF viewer.) > > /// start of program > #include <iostream> > #include <netcdfcpp.h> > > using namespace std; > static const int NX = 100; > static const int NY = 100; > static const int NC_ERR = 2; > > int main(void) > { > int dataOut[NX]; > > for(int i = 0; i < NX; i++) > dataOut[i] = i; > > NcFile dataFile("simple_xy.nc", NcFile::Replace); > > if (!dataFile.is_valid()) > { > cout << "Couldn't open file!\n"; > return NC_ERR; > } > > NcDim* xDim = dataFile.add_dim("x", NX); > NcDim* yDim = dataFile.add_dim("y", NY); > NcVar *data = dataFile.add_var("data", ncInt, xDim, yDim); > > // Write each column to file? > for(int i = 0; i < NY; i++) > data->put( dataOut, i, NX ); > > return 0; > } > > > /// end of program > > Thank you for helping to shed some light on this matter. > > Nicholas Kinar > n.kinar@xxxxxxxx > Researcher, Centre for Hydrology > University of Saskatchewan > Saskatoon, Saskatchewan, CANADA > > > > > _______________________________________________ > netcdfgroup mailing list > netcdfgroup@xxxxxxxxxxxxxxxx > For list information or to unsubscribe, visit: > http://www.unidata.ucar.edu/mailing_lists/ >
netcdfgroup
archives: