This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
>To: address@hidden >From: =?gb2312?q?Xuguang=20Sun?= <address@hidden> >Subject: ask some questions >Keywords: 200208180328.g7I3SiK03141 Hi, > I am a new user of netCDF, so I have some problems to > generate a .nc file, that is, > I use the netCDF library to generate a *.nc file, but > I am wondering how I can give values and attributes to > dimensions like lon,lat,lev,time. If you are using the C interface to netCDF, you define dimensions using something like: /* define dimensions */ status = nc_def_dim(ncid, "lat", 4, &lat_dimid); status = nc_def_dim(ncid, "lon", 3, &lon_dimid); status = nc_def_dim(ncid, "time", NC_UNLMITED, &time_dimid); and then you can give values to associated coordinate variables (with the same name as the corresponding dimension) using something like: /* define variables and assign attributes */ dims[0] = lat_dimid; status = nc_def_var(ncid, "lat", NC_FLOAT, 1, dims, &lat_id); status = nc_put_att_text(ncid, lat_id, "long_name", 8, "latitude"); status = nc_put_att_text(ncid, lat_id, "units", 13, "degrees_north"); dims[0] = lon_dimid; status = nc_def_var(ncid, "lon", NC_FLOAT, 1, dims , &lon_id); status = nc_put_att_text(ncid, lon_id, "long_name", 9, "longitude"); status = nc_put_att_text(ncid, lon_id, "units", 12, "degrees_east"); dims[0] = time_dimid; status = nc_def_var(ncid, "time", NC_LONG, 1, dims , &time_id); status = nc_put_att_text(ncid, frtime_id, "long_name", 13, "time"); status = nc_put_att_text(ncid, frtime_id, "units", 5, "hours"); These calls are all documented, with small examples, in the netCDF C User's Guide: http://www.unidata.ucar.edu/packages/netcdf/guidec/ There are similar calls for Fortran-77, Fortran-90, C++, Java, and other languages. A complete C example that creates and writes to a netCDF file, including error checking after each call, is available from: http://www.unidata.ucar.edu/packages/netcdf/examples/example1.c --Russ _____________________________________________________________________ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu