Spatial coordinates are exported as cell centered coordinates. The projection can be optionally stored in the metadata as crs attributes . The netCDF projection metadata storage follows the spatial_ref GDAL/netCDF suggestion here and the netCDF CF 1.6 convention here using WKT projection information. Additional a PROJ.4 string is stored in the crs attribute section. The export of projection parameters is suppressed when the XY-projection is set.
The range of the 3D raster map is set in the netCDF output file. Optionally a the netCDF missing value and _FillValue can be set using the null option. As default the netCDF floating point _FillValues are used to fill empty cell.
The netCDF library must be installed on the system and activated at configuration time to compile this module.
g.region s=-90 n=90 w=-180 e=180 b=0 t=5 res=10 res3=10 tbres=1 -p3
#####################################################################
# We create a simple volume map with floating point values
#####################################################################
r3.mapcalc --o expr="volume_float = float(col() + row() + depth())"
r3.info volume_float
 +----------------------------------------------------------------------------+
 | Layer:    volume_float                   Date: Thu Jun 14 08:40:56 2012    |
 | Mapset:   PERMANENT                      Login of Creator: soeren          |
 | Location: TestLL                                                           |
 | DataBase: /1/soeren/grassdata                                              |
 | Title:    volume_float                                                     |
 | Units:    none                                                             |
 | Vertical unit: units                                                       |
 | Timestamp: none                                                            |
 |----------------------------------------------------------------------------|
 |                                                                            |
 |   Type of Map:  3d cell              Number of Categories: 0               |
 |   Data Type:    FCELL                                                      |
 |   Rows:         18                                                         |
 |   Columns:      36                                                         |
 |   Depths:       5                                                          |
 |   Total Cells:  3240                                                       |
 |   Total size:           10114 Bytes                                        |
 |   Number of tiles:      1                                                  |
 |   Mean tile size:       10114 Bytes                                        |
 |   Tile size in memory:  12960 Bytes                                        |
 |   Number of tiles in x, y and  z:   1, 1, 1                                |
 |   Dimension of a tile in x, y, z:   36, 18, 5                              |
 |                                                                            |
 |        Projection: Latitude-Longitude (zone 0)                             |
 |            N:        90N    S:        90S   Res:    10                     |
 |            E:       180E    W:       180W   Res:    10                     |
 |            T:          5    B:          0   Res:     1                     |
 |   Range of data:   min =          3 max =         59                       |
 |                                                                            |
 |   Data Source:                                                             |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |   Data Description:                                                        |
 |    generated by r3.mapcalc                                                 |
 |                                                                            |
 |   Comments:                                                                |
 |    r3.mapcalc expression="volume_float = float(col() + row() + depth())"   |
 |                                                                            |
 +----------------------------------------------------------------------------+
#####################################################################
# We use the netCDF ncdump tool to have a look at the header 
# and coordinates of the exported netCDF file
#####################################################################
r3.out.netcdf --o input=volume_float output=test_float.nc
ncdump -c test_float.nc
 
netcdf test_float {
dimensions:
        longitude = 36 ;
        latitude = 18 ;
        z = 5 ;
variables:
        float longitude(longitude) ;
                longitude:units = "degrees_east" ;
                longitude:long_name = "Longitude values" ;
                longitude:standard_name = "longitude" ;
                longitude:axis = "X" ;
        float latitude(latitude) ;
                latitude:units = "degrees_north" ;
                latitude:long_name = "Latitude values" ;
                latitude:standard_name = "latitude" ;
                latitude:axis = "Y" ;
        float z(z) ;
                z:units = "meter" ;
                z:long_name = "z coordinate of projection" ;
                z:standard_name = "projection_z_coordinate" ;
                z:positive = "up" ;
                z:axis = "Z" ;
        float volume_float(z, latitude, longitude) ;
                volume_float:valid_min = 3.f ;
                volume_float:valid_max = 59.f ;
// global attributes:
                :Conventions = "CF-1.5" ;
                :history = "GRASS GIS 7 netCDF export of r3.out.netcdf" ;
data:
 longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, 
    -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 
    105, 115, 125, 135, 145, 155, 165, 175 ;
 latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, 
    -65, -75, -85 ;
 z = 0.5, 1.5, 2.5, 3.5, 4.5 ;
}
#####################################################################
# Exporting the projection specific settings and a null value
#####################################################################
r3.out.netcdf --o -p null=-1 input=volume_float output=test_float.nc
ncdump -c test_float.nc 
netcdf test_float {
dimensions:
        longitude = 36 ;
        latitude = 18 ;
        z = 5 ;
variables:
        char crs ;
                crs:crs_wkt = "GEOGCS[\"wgs84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]" ;
                crs:spatial_ref = "GEOGCS[\"wgs84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]" ;
                crs:crs_proj4 = " +proj=longlat +no_defs +a=6378137 +rf=298.257223563 +towgs84=0.000,0.000,0.000" ;
        float longitude(longitude) ;
                longitude:units = "degrees_east" ;
                longitude:long_name = "Longitude values" ;
                longitude:standard_name = "longitude" ;
                longitude:axis = "X" ;
        float latitude(latitude) ;
                latitude:units = "degrees_north" ;
                latitude:long_name = "Latitude values" ;
                latitude:standard_name = "latitude" ;
                latitude:axis = "Y" ;
        float z(z) ;
                z:units = "meter" ;
                z:long_name = "z coordinate of projection" ;
                z:standard_name = "projection_z_coordinate" ;
                z:positive = "up" ;
                z:axis = "Z" ;
        float volume_float(z, latitude, longitude) ;
                volume_float:valid_min = 3.f ;
                volume_float:valid_max = 59.f ;
                volume_float:missing_value = -1.f ;
                volume_float:_FillValue = -1.f ;
                volume_float:grid_mapping = "crs" ;
// global attributes:
                :Conventions = "CF-1.5" ;
                :history = "GRASS GIS 7 netCDF export of r3.out.netcdf" ;
data:
 longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, 
    -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 
    105, 115, 125, 135, 145, 155, 165, 175 ;
 latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, 
    -65, -75, -85 ;
 z = 0.5, 1.5, 2.5, 3.5, 4.5 ;
}
#####################################################################
# Assigning time as vertical unit and setting an absolute time stamp
#####################################################################
r3.timestamp map=volume_float date='1 Jan 2001/5 Jan 2001'
r3.support map=volume_float vunit="days"
r3.out.netcdf --o -p null=-1 input=volume_float output=test_float.nc
ncdump -c test_float.nc 
netcdf test_float {
dimensions:
        longitude = 36 ;
        latitude = 18 ;
        time = 5 ;
variables:
        char crs ;
                crs:crs_wkt = "GEOGCS[\"wgs84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]" ;
                crs:spatial_ref = "GEOGCS[\"wgs84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]" ;
                crs:crs_proj4 = " +proj=longlat +no_defs +a=6378137 +rf=298.257223563 +towgs84=0.000,0.000,0.000" ;
        float longitude(longitude) ;
                longitude:units = "degrees_east" ;
                longitude:long_name = "Longitude values" ;
                longitude:standard_name = "longitude" ;
                longitude:axis = "X" ;
        float latitude(latitude) ;
                latitude:units = "degrees_north" ;
                latitude:long_name = "Latitude values" ;
                latitude:standard_name = "latitude" ;
                latitude:axis = "Y" ;
        int time(time) ;
                time:units = "days since 2001-01-01 00:00:00" ;
                time:long_name = "Time in days" ;
                time:calendar = "gregorian" ;
                time:positive = "up" ;
                time:axis = "T" ;
        float volume_float(time, latitude, longitude) ;
                volume_float:valid_min = 3.f ;
                volume_float:valid_max = 59.f ;
                volume_float:missing_value = -1.f ;
                volume_float:_FillValue = -1.f ;
                volume_float:grid_mapping = "crs" ;
// global attributes:
                :Conventions = "CF-1.5" ;
                :history = "GRASS GIS 7 netCDF export of r3.out.netcdf" ;
data:
 longitude = -175, -165, -155, -145, -135, -125, -115, -105, -95, -85, -75, 
    -65, -55, -45, -35, -25, -15, -5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 
    105, 115, 125, 135, 145, 155, 165, 175 ;
 latitude = 85, 75, 65, 55, 45, 35, 25, 15, 5, -5, -15, -25, -35, -45, -55, 
    -65, -75, -85 ;
 time = 0, 1, 2, 3, 4 ;
}
	
Last changed: $Date: 2012-06-14 02:20:10 -0700 (Thu, 14 Jun 2012) $