浏览代码

unify usage of 3D raster (raster3d, raster_3d)

Fixes keyword links in manuals. (Backport of https://trac.osgeo.org/grass/changeset/64053, https://trac.osgeo.org/grass/changeset/64054, https://trac.osgeo.org/grass/changeset/64055, https://trac.osgeo.org/grass/changeset/64145, https://trac.osgeo.org/grass/changeset/64154, and r64109.)


git-svn-id: https://svn.osgeo.org/grass/grass/branches/releasebranch_7_0@64155 15284696-431f-4ddb-bdfa-cd5b030d7da7
Vaclav Petras 10 年之前
父节点
当前提交
e8925cc932

+ 20 - 19
gui/wxpython/docs/wxGUI.nviz.html

@@ -8,10 +8,10 @@ all planned functionality is already implemented.</b>
 <p>
 <p>
 <b>wxNviz</b> is a <em><a href="wxGUI.html">wxGUI</a></em> <b>3D view
 <b>wxNviz</b> is a <em><a href="wxGUI.html">wxGUI</a></em> <b>3D view
 mode</b> which allows users to realistically render multiple
 mode</b> which allows users to realistically render multiple
-<em>surfaces</em> (raster data) in a 3D space, optionally using
-thematic coloring, draping 2D <em>vector</em> data over the surfaces,
-displaying 3D vector data in the space, and visualization
-of <em>volume</em> data (3D raster data).
+<em>surfaces</em> (2D raster maps) in a 3D space, optionally using
+thematic coloring, draping 2D <em>vector</em> data or different 2D raster data
+over the surfaces, displaying 3D vector data in the space, and visualization
+of <em>3D rasters</em>.
 
 
 <p>
 <p>
 To start the wxGUI 3D view mode, choose '3D view' from the map
 To start the wxGUI 3D view mode, choose '3D view' from the map
@@ -120,7 +120,7 @@ viewpoint is changed (not the direction).
 <h3>Data properties</h3> 
 <h3>Data properties</h3> 
 This tab controls the parameters related to map layers. It consists
 This tab controls the parameters related to map layers. It consists
 of four collapsible panels - <em>Surface</em>, <em>Constant surface</em>, 
 of four collapsible panels - <em>Surface</em>, <em>Constant surface</em>, 
-<em>Vector</em> and <em>Volume</em>.
+<em>Vector</em> and <em>3D raster</em>.
 
 
 <h4>Surface</h4>
 <h4>Surface</h4>
 
 
@@ -240,20 +240,21 @@ Thematic mapping can be used to determine marker color and size
   <br><img src="wxGUI_nviz_tools_vector.jpg" border="1" alt="toolbox"><br><br>
   <br><img src="wxGUI_nviz_tools_vector.jpg" border="1" alt="toolbox"><br><br>
 </center>
 </center>
 
 
-<h4>Volume</h4>
+<h4>3D rasters</h4>
 
 
-Volumes (3D raster maps) can be displayed either as isosurfaces or slices.
+3D raster maps (volumes, voxel models) can be displayed either as isosurfaces
+or slices.
 Similarly to surface panel you can define draw <b>shading</b> -
 Similarly to surface panel you can define draw <b>shading</b> -
-<em>gouraud</em> (draws the volumes with a smooth shading to blend
-individual cell colors together) and <em>flat</em> (draws the volumes with
-flat shading with one color for every two cells. The volume appears
+<em>gouraud</em> (draws the 3D rasters with a smooth shading to blend
+individual cell colors together) and <em>flat</em> (draws the 3D rasters with
+flat shading with one color for every two cells. The 3D raster appears
 faceted). As mentioned above currently are supported two visualization
 faceted). As mentioned above currently are supported two visualization
 modes:
 modes:
 
 
 <ul>
 <ul>
   <li><b>isosurface</b> - the levels of values for drawing the
   <li><b>isosurface</b> - the levels of values for drawing the
-  volume(s) as isosurfaces,</li>
-  <li>and <b>slice</b> -  drawing the volume
+  3D raster(s) as isosurfaces,</li>
+  <li>and <b>slice</b> -  drawing the 3D raster
   as cross-sections.</li>
   as cross-sections.</li>
 </ul>
 </ul>
 <p>
 <p>
@@ -268,23 +269,23 @@ attributes:
   <li><b>isosurface value</b> - reference isosurface value (height in map
   <li><b>isosurface value</b> - reference isosurface value (height in map
   units).</li>
   units).</li>
   <li><b>color</b> - raster map or constant color to drape over the
   <li><b>color</b> - raster map or constant color to drape over the
-  current volume.</li>
+  current 3D raster.</li>
   <li><b>mask</b> - raster map that controls the areas displayed from
   <li><b>mask</b> - raster map that controls the areas displayed from
-    the current volume.</li>
+    the current 3D raster.</li>
   <li><b>transparency</b> - raster map or constant value that controls
   <li><b>transparency</b> - raster map or constant value that controls
-    the transparency of the current volume. The default is completely
+    the transparency of the current 3D raster. The default is completely
     opaque. Range from 0 (opaque) to 100 (transparent).</li>
     opaque. Range from 0 (opaque) to 100 (transparent).</li>
   <li><b>shininess</b> - raster map or constant value that controls
   <li><b>shininess</b> - raster map or constant value that controls
-    the shininess (reflectivity) of the current volume. Range from 0 to
+    the shininess (reflectivity) of the current 3D raster. Range from 0 to
     100.</li>
     100.</li>
 </ul>
 </ul>
 
 
-In case of volume slice the bottom part of the panel controls the slice 
+In case of 3D raster slice the bottom part of the panel controls the slice 
 attributes (which axis is slice parallel to, position of slice edges,
 attributes (which axis is slice parallel to, position of slice edges,
 transparency). Press button <em>Reset</em> to reset slice position
 transparency). Press button <em>Reset</em> to reset slice position
 attributes.
 attributes.
 <p>
 <p>
-Volumes can be moved the same way like surfaces do.
+3D rasters can be moved the same way like surfaces do.
 
 
 <center>
 <center>
   <br><img src="wxGUI_nviz_tools_volume.jpg" border="1" alt="toolbox"><br><br>
   <br><img src="wxGUI_nviz_tools_volume.jpg" border="1" alt="toolbox"><br><br>
@@ -350,7 +351,7 @@ smooth motion.
 <h2>Settings</h2>
 <h2>Settings</h2>
 
 
 This panel has controls which allows user to set default surface,
 This panel has controls which allows user to set default surface,
-vector and volume data attributes. You can also modify default view
+vector and 3D raster data attributes. You can also modify default view
 parameters, or to set the background color of the Map Display Window
 parameters, or to set the background color of the Map Display Window
 (the default color is white).
 (the default color is white).
 
 

+ 1 - 1
gui/wxpython/nviz/tools.py

@@ -560,7 +560,7 @@ class NvizToolWindow(FN.FlatNotebook):
         self.EnablePage("vector", enabled = False)
         self.EnablePage("vector", enabled = False)
         
         
         # volume page
         # volume page
-        volumePanel = self.foldpanelData.AddFoldPanel(_("Volume"), collapsed = True)
+        volumePanel = self.foldpanelData.AddFoldPanel(_("3D raster"), collapsed=True)
         self.foldpanelData.AddFoldPanelWindow(volumePanel,
         self.foldpanelData.AddFoldPanelWindow(volumePanel,
             window = self._createVolumePage(parent = volumePanel), flags = fpb.FPB_ALIGN_WIDTH)
             window = self._createVolumePage(parent = volumePanel), flags = fpb.FPB_ALIGN_WIDTH)
         self.EnablePage("volume", enabled = False)
         self.EnablePage("volume", enabled = False)

+ 17 - 17
gui/wxpython/xml/toolboxes.xml

@@ -154,7 +154,7 @@
     </items>
     </items>
   </toolbox>
   </toolbox>
   <toolbox name="Volumes">
   <toolbox name="Volumes">
-    <label>V&amp;olumes</label>
+    <label>3D r&amp;aster</label>
     <items>
     <items>
       <subtoolbox name="DevelopVolumes"/>
       <subtoolbox name="DevelopVolumes"/>
       <subtoolbox name="Raster3dMapTypeConversions"/>
       <subtoolbox name="Raster3dMapTypeConversions"/>
@@ -167,7 +167,7 @@
       </module-item>
       </module-item>
       <separator/>
       <separator/>
       <module-item name="r3.mask">
       <module-item name="r3.mask">
-        <label>3D Mask</label>
+        <label>3D mask</label>
       </module-item>
       </module-item>
       <wxgui-item name="VolumeCalculator"/>
       <wxgui-item name="VolumeCalculator"/>
       <module-item name="r3.cross.rast">
       <module-item name="r3.cross.rast">
@@ -177,7 +177,7 @@
         <label>Groundwater modeling</label>
         <label>Groundwater modeling</label>
       </module-item>
       </module-item>
       <module-item name="v.vol.rst">
       <module-item name="v.vol.rst">
-        <label>Interpolate volume from points</label>
+        <label>Interpolate 3D raster from points</label>
       </module-item>
       </module-item>
       <separator/>
       <separator/>
       <subtoolbox name="Raster3dReportsAndStatistics"/>
       <subtoolbox name="Raster3dReportsAndStatistics"/>
@@ -515,24 +515,24 @@
         <label>Raster to vector</label>
         <label>Raster to vector</label>
       </module-item>
       </module-item>
       <module-item name="r.to.rast3">
       <module-item name="r.to.rast3">
-        <label>Raster series to volume</label>
+        <label>Raster series to 3D raster</label>
       </module-item>
       </module-item>
       <module-item name="r.to.rast3elev">
       <module-item name="r.to.rast3elev">
-        <label>Raster 2.5D to volume</label>
+        <label>Raster 2.5D to 3D raster</label>
       </module-item>
       </module-item>
       <separator/>
       <separator/>
       <module-item name="v.to.rast">
       <module-item name="v.to.rast">
         <label>Vector to raster</label>
         <label>Vector to raster</label>
       </module-item>
       </module-item>
       <module-item name="v.to.rast3">
       <module-item name="v.to.rast3">
-        <label>Vector to volume</label>
+        <label>Vector to 3D raster</label>
       </module-item>
       </module-item>
       <module-item name="v.to.3d">
       <module-item name="v.to.3d">
         <label>2D vector to 3D vector</label>
         <label>2D vector to 3D vector</label>
       </module-item>
       </module-item>
       <separator/>
       <separator/>
       <module-item name="r3.to.rast">
       <module-item name="r3.to.rast">
-        <label>Volume to raster series</label>
+        <label>3D raster to raster series</label>
       </module-item>
       </module-item>
     </items>
     </items>
   </toolbox>
   </toolbox>
@@ -708,10 +708,10 @@
         <label>Raster to vector</label>
         <label>Raster to vector</label>
       </module-item>
       </module-item>
       <module-item name="r.to.rast3">
       <module-item name="r.to.rast3">
-        <label>Raster series to volume</label>
+        <label>Raster series to 3D raster</label>
       </module-item>
       </module-item>
       <module-item name="r.to.rast3elev">
       <module-item name="r.to.rast3elev">
-        <label>Raster 2.5D to volume</label>
+        <label>Raster 2.5D to 3D raster</label>
       </module-item>
       </module-item>
     </items>
     </items>
   </toolbox>
   </toolbox>
@@ -1253,7 +1253,7 @@
         <label>Vector to raster</label>
         <label>Vector to raster</label>
       </module-item>
       </module-item>
       <module-item name="v.to.rast3">
       <module-item name="v.to.rast3">
-        <label>Vector to volume</label>
+        <label>Vector to 3D raster</label>
       </module-item>
       </module-item>
       <module-item name="v.to.3d">
       <module-item name="v.to.3d">
         <label>2D vector to 3D vector</label>
         <label>2D vector to 3D vector</label>
@@ -1645,7 +1645,7 @@
     </items>
     </items>
   </toolbox>
   </toolbox>
   <toolbox name="DevelopVolumes">
   <toolbox name="DevelopVolumes">
-    <label>Develop volumes</label>
+    <label>Develop 3D raster map</label>
     <items>
     <items>
       <module-item name="r3.null">
       <module-item name="r3.null">
         <label>Manage 3D NULL values</label>
         <label>Manage 3D NULL values</label>
@@ -1659,7 +1659,7 @@
     <label>Map type conversions</label>
     <label>Map type conversions</label>
     <items>
     <items>
       <module-item name="r3.to.rast">
       <module-item name="r3.to.rast">
-        <label>Volume to raster series</label>
+        <label>3D rasters to raster series</label>
       </module-item>
       </module-item>
     </items>
     </items>
   </toolbox>
   </toolbox>
@@ -1667,13 +1667,13 @@
     <label>Reports and Statistics</label>
     <label>Reports and Statistics</label>
     <items>
     <items>
       <module-item name="r3.info">
       <module-item name="r3.info">
-        <label>Basic volume metadata</label>
+        <label>Basic 3D raster metadata</label>
       </module-item>
       </module-item>
       <module-item name="r3.stats">
       <module-item name="r3.stats">
-        <label>Voxel statistics</label>
+        <label>3D raster statistics</label>
       </module-item>
       </module-item>
       <module-item name="r3.univar">
       <module-item name="r3.univar">
-        <label>Univariate statistics for volumes</label>
+        <label>Univariate statistics for 3D rasters</label>
       </module-item>
       </module-item>
     </items>
     </items>
   </toolbox>
   </toolbox>
@@ -1783,7 +1783,7 @@
     </items>
     </items>
   </toolbox>
   </toolbox>
   <toolbox name="Temporal">
   <toolbox name="Temporal">
-    <label>Temporal</label>
+    <label>&amp;Temporal</label>
     <items>
     <items>
       <subtoolbox name="TemporalManageDatasets"/>
       <subtoolbox name="TemporalManageDatasets"/>
       <subtoolbox name="TemporalManageMapsInDatasets"/>
       <subtoolbox name="TemporalManageMapsInDatasets"/>
@@ -1791,7 +1791,7 @@
       <subtoolbox name="TemporalImport"/>
       <subtoolbox name="TemporalImport"/>
       <subtoolbox name="TemporalExport"/>
       <subtoolbox name="TemporalExport"/>
       <module-item name="t.rast.to.rast3">
       <module-item name="t.rast.to.rast3">
-        <label>Convert raster dataset to volume</label>
+        <label>Convert raster dataset to 3D raster</label>
       </module-item>
       </module-item>
       <separator/>
       <separator/>
       <subtoolbox name="TemporalExtraction"/>
       <subtoolbox name="TemporalExtraction"/>

+ 3 - 3
gui/wxpython/xml/wxgui_items.xml

@@ -72,7 +72,7 @@
     <label>Raster map calculator</label>
     <label>Raster map calculator</label>
     <handler>OnMapCalculator</handler>
     <handler>OnMapCalculator</handler>
     <related-module>r.mapcalc</related-module>
     <related-module>r.mapcalc</related-module>
-    <description>Raster map calculator.</description>
+    <description>Raster map calculator</description>
     <keywords>raster,algebra</keywords>
     <keywords>raster,algebra</keywords>
   </wxgui-item>
   </wxgui-item>
   <wxgui-item name="Histogram">
   <wxgui-item name="Histogram">
@@ -81,10 +81,10 @@
     <description>Generate histogram of image</description>
     <description>Generate histogram of image</description>
   </wxgui-item>
   </wxgui-item>
   <wxgui-item name="VolumeCalculator">
   <wxgui-item name="VolumeCalculator">
-    <label>Volume calculator</label>
+    <label>3D raster map calculator</label>
     <handler>OnMapCalculator</handler>
     <handler>OnMapCalculator</handler>
     <related-module>r3.mapcalc</related-module>
     <related-module>r3.mapcalc</related-module>
-    <description>3D raster map calculator.</description>
+    <description>3D raster map calculator</description>
     <keywords>raster,algebra</keywords>
     <keywords>raster,algebra</keywords>
   </wxgui-item>
   </wxgui-item>
   <wxgui-item name="GRASSHelp">
   <wxgui-item name="GRASSHelp">

+ 1 - 1
include/Make/Docs.make

@@ -62,7 +62,7 @@ indices = \
 	photo.html \
 	photo.html \
 	postscript.html \
 	postscript.html \
 	raster.html \
 	raster.html \
-	raster3D.html \
+	raster3d.html \
 	vector.html
 	vector.html
 
 
 html_pdf = \
 html_pdf = \

+ 2 - 2
lib/python/pygrass/modules/shortcuts.py

@@ -56,7 +56,7 @@ class MetaModule(object):
 #  m.*	miscellaneous commands
 #  m.*	miscellaneous commands
 #  ps.*	postscript commands
 #  ps.*	postscript commands
 #  r.*	raster commands
 #  r.*	raster commands
-#  r3.*	raster3D commands
+#  r3.*	3D raster commands
 #  t.*	temporal commands
 #  t.*	temporal commands
 #  v.*	vector commands
 #  v.*	vector commands
 
 
@@ -67,6 +67,6 @@ imagery = MetaModule('i')
 miscellaneous = MetaModule('m')
 miscellaneous = MetaModule('m')
 postscript = MetaModule('ps')
 postscript = MetaModule('ps')
 raster = MetaModule('r')
 raster = MetaModule('r')
-raster3D = MetaModule('r3')
+raster3d = MetaModule('r3')
 temporal = MetaModule('t')
 temporal = MetaModule('t')
 vector = MetaModule('v')
 vector = MetaModule('v')

+ 1 - 1
man/Makefile

@@ -17,7 +17,7 @@ categories = \
 	m:misc \
 	m:misc \
 	ps:postscript \
 	ps:postscript \
 	r:raster \
 	r:raster \
-	r3:raster3D \
+	r3:raster3d \
 	t:temporal \
 	t:temporal \
 	v:vector
 	v:vector
 
 

+ 4 - 1
man/build_class.py

@@ -26,8 +26,11 @@ f = open(filename + ".tmp", 'wb')
 
 
 write_html_header(f, "GRASS GIS %s Reference Manual: %s" % (grass_version, modclass))
 write_html_header(f, "GRASS GIS %s Reference Manual: %s" % (grass_version, modclass))
 if modclass.lower() not in ['general', 'misc', 'postscript']:
 if modclass.lower() not in ['general', 'misc', 'postscript']:
+    if modclass == 'raster3d':
+        # covert keyword to nice form
+        modclass = '3D raster'
     f.write(modclass_intro_tmpl.substitute(modclass = modclass, modclass_lower = modclass.lower()))
     f.write(modclass_intro_tmpl.substitute(modclass = modclass, modclass_lower = modclass.lower()))
-f.write(modclass_tmpl.substitute(modclass = modclass.title()))
+f.write(modclass_tmpl.substitute(modclass=to_title(modclass)))
 
 
 #for all modules:
 #for all modules:
 for cmd in html_files(cls):
 for cmd in html_files(cls):

+ 2 - 2
man/build_full_index.py

@@ -23,7 +23,7 @@ class_labels = {
     'm' : 'miscellaneous',
     'm' : 'miscellaneous',
     'ps' : 'postscript',
     'ps' : 'postscript',
     'r' : 'raster',
     'r' : 'raster',
-    'r3' : '3d raster',
+    'r3' : '3D raster',
     't' : 'temporal',
     't' : 'temporal',
     'v' : 'vector'
     'v' : 'vector'
 }
 }
@@ -48,7 +48,7 @@ f.write(toc)
 
 
 #for all module groups:
 #for all module groups:
 for cls, cls_label in classes:
 for cls, cls_label in classes:
-    f.write(cmd2_tmpl.substitute(cmd_label = cls_label.title(), cmd = cls))
+    f.write(cmd2_tmpl.substitute(cmd_label=to_title(cls_label), cmd=cls))
     #for all modules:  
     #for all modules:  
     for cmd in html_files(cls):
     for cmd in html_files(cls):
 	basename = os.path.splitext(cmd)[0]
 	basename = os.path.splitext(cmd)[0]

+ 5 - 1
man/build_html.py

@@ -131,7 +131,7 @@ r"""<!-- the files grass${grass_version_major}.html & helptext.html file live in
       <td width="33%" valign="top" class="box"><h3>&nbsp;3D raster processing</h3>
       <td width="33%" valign="top" class="box"><h3>&nbsp;3D raster processing</h3>
        <ul>
        <ul>
         <li class="box"><a href="raster3dintro.html">Intro: 3D raster map (voxel) processing</a></li>
         <li class="box"><a href="raster3dintro.html">Intro: 3D raster map (voxel) processing</a></li>
-        <li class="box"><a href="raster3D.html">3D raster (voxel) commands manual</a></li>
+        <li class="box"><a href="raster3d.html">3D raster (voxel) commands manual</a></li>
       </ul></td>
       </ul></td>
       <td width="33%" valign="top" class="box"><h3>&nbsp;Image processing</h3>
       <td width="33%" valign="top" class="box"><h3>&nbsp;Image processing</h3>
        <ul>
        <ul>
@@ -399,6 +399,10 @@ def get_desc(cmd):
 
 
     return ""
     return ""
 
 
+def to_title(name):
+    """Convert name of command class/family to form suitable for title"""
+    return name.capitalize()
+
 ############################################################################
 ############################################################################
 
 
 arch_dist_dir = os.environ['ARCH_DISTDIR']
 arch_dist_dir = os.environ['ARCH_DISTDIR']

+ 105 - 39
raster3d/raster3dintro.html

@@ -1,42 +1,93 @@
-<!-- meta page description: 3D raster data (voxel) processing in GRASS GIS -->
-<!-- meta page index: raster3D -->
-<h3>3D Raster maps (voxels) in general</h3>
-
-GRASS GIS is one of the few GIS software packages with volume data support.
-Here data are stored as a 3D raster with a unit volume called a voxel
-(volume pixel). Voxels are designed to support representations of
-trivariate continuous fields. The vertical dimension supports spatial and temporal units.
-Hence space time voxel cubes with different temporal resolutions can be created and processed.
-<p>
+<!-- meta page description: 3D raster data in GRASS GIS -->
+<!-- meta page index: raster3d -->
+<h3>3D raster maps in general</h3>
+
+GRASS GIS is one of the few GIS software packages with 3D raster data support.
+Data are stored as a 3D raster with 3D cells of a given volume.
+3D rasters are designed to support representations of
+trivariate continuous fields.
+The vertical dimension supports spatial and temporal units.
+Hence space time 3D raster with different temporal resolutions
+can be created and processed.
 
 
+<p>
 GRASS GIS 3D raster maps use the same coordinate system as
 GRASS GIS 3D raster maps use the same coordinate system as
 2D raster maps (row count from north to south) with an additional z dimension (depth)
 2D raster maps (row count from north to south) with an additional z dimension (depth)
-counting from bottom to top. The upper left corner (NW) is the origin of the voxel. 
-Volumes are stored using a tile cache based approach. This allows abritrary read 
-and write operations in the created volume. The size of the tiles can be specified at import time
-with <a href="r3.in.ascii.html">r3.in.ascii</a> or the data can be retiled using
+counting from bottom to top. The upper left corner (NW) is the origin. 
+3D rasters are stored using a tile cache based approach. This allows arbitrary
+read and write operations in the created 3D raster. The size of the tiles
+can be specified at import time with a given import module such as
+<a href="r3.in.ascii.html">r3.in.ascii</a> or the data can be retiled using
 <a href="r3.retile.html">r3.retile</a> after import or creation.
 <a href="r3.retile.html">r3.retile</a> after import or creation.
 
 
 <div align="center" style="margin: 10px">
 <div align="center" style="margin: 10px">
 <img src="r3_volume_layout.png" border=0><br>
 <img src="r3_volume_layout.png" border=0><br>
-<i>The volume coordinate system and tile layout of the RASTER3D library</i>
+<i>The 3D raster map coordinate system and tile layout of the RASTER3D library</i>
 </div>
 </div>
 
 
-<h3>3D Raster (voxel) import</h3>
+<h3>Terminology and naming</h3>
+
+GRASS GIS uses terminology where continuous 3D data represented by regular grid
+or lattice is called <em>3D raster map</em>.
+3D raster map works in 3D in the same as (2D) raster map in 2D,
+so it is called the same except for the additional 3D.
+Some literature or other software may use terms such as 3D grid, 3D lattice,
+3D matrix, 3D array, volume, voxel, voxel model, or voxel cube.
+Note that terms volume and volumetric often refer to measuring
+volume (amount) of some substance which may or may not be related to 3D rasters.
+
+Note that GRASS GIS uses the term 3D raster map or just 3D raster for short,
+rather than 3D raster layer because term map emphasizes
+the mapping of positions to values which is the purpose of 3D raster map
+(in mathematics, map or mapping is close to a term function).
+While the term layer emphasizes overlaying or stacking up.
+The former is not the only only operation done with data
+and the latter could be confusing in case of 3D raster data.
+
+3D raster map is divided into cells in the same as the (2D) raster map.
+A cell is a cuboid or cube depending on the resolution.
+The resolution influences volume of one cell.
+Some literature or other software may use terms such as volume, volume unit,
+volumetric pixel, volume pixel, or voxel.
+Note that voxel can be sometimes used to refer to a whole 3D raster
+and that for example in 3D computer graphics, voxel can denote object
+with some complicated shape.
+
+Type of map and element name in GRASS GIS is called <code>raster_3d</code>.
+The module family prefix is <code>r3</code>.
+Occasionally, for example in Python, 3D raster related things can be
+referred differently, for example according to a programming language standards.
+
+In GRASS GIS 3D rasters as stored in tiles which are hidden from user most
+of the time. When analyzing or visualizing 3D rasters user can create
+slices or cross sections. Slices can be horizontal, vertical, or general
+plains going through a 3D raster. Slices, especially the horizontal ones, may be
+called layers in some literature or some other software.
+Cross sections are general functions, e.g. defined by 2D raster, going through
+a 3D raster.
+
+When 3D raster is used in the way that vertical dimension represents time
+3D raster can be referred to as space time cubes (STC) or space time cube
+3D raster. Some literature may also use space time voxel cube,
+space time voxel model or some other combination.
+
+<h3>3D raster import</h3>
 
 
 The modules <a href="r3.in.ascii.html">r3.in.ascii</a> and
 The modules <a href="r3.in.ascii.html">r3.in.ascii</a> and
  <a href="r3.in.bin.html">r3.in.bin</a> supports
  <a href="r3.in.bin.html">r3.in.bin</a> supports
-generic x,y,z ASCII and binary array import. Alternatively, volumes can be generated
+generic x,y,z ASCII and binary array import.
+Alternatively, 3D rasters can be generated
 from 3D point vector data (<a href="v.to.rast3.html">v.to.rast3</a>). 
 from 3D point vector data (<a href="v.to.rast3.html">v.to.rast3</a>). 
 Always the full map is imported.
 Always the full map is imported.
-Volumes can also be created based on 2D elevation map(s) and value raster map(s)
+3D raster can also be created based on 2D elevation map(s) and value raster map(s)
 (<a href="r.to.rast3elev.html">r.to.rast3elev</a>). Alternatively,
 (<a href="r.to.rast3elev.html">r.to.rast3elev</a>). Alternatively,
-a volume can be composed of several 2D raster map slices which are
-merged into one 3D raster (voxel) map (<a href="r.to.rast3.html">r.to.rast3</a>).
+a 3D raster can be composed of several 2D raster maps.
+2D rasters are considered as slices in this case and
+merged into one 3D raster map (<a href="r.to.rast3.html">r.to.rast3</a>).
 
 
 <h3>3D region settings and 3D MASK</h3>
 <h3>3D region settings and 3D MASK</h3>
 
 
-GRASS 3D raster map processing is always performed in the current 3D region
+GRASS GIS 3D raster map processing is always performed in the current 3D region
 settings (see <a href="g.region.html">g.region</a>, <em>-p3</em> flags), i.e.
 settings (see <a href="g.region.html">g.region</a>, <em>-p3</em> flags), i.e.
 the current region extent, vertical extent and current 3D resolution are used.
 the current region extent, vertical extent and current 3D resolution are used.
 If the 3D resolution differs from that of the input raster map(s),
 If the 3D resolution differs from that of the input raster map(s),
@@ -45,54 +96,67 @@ If this is not desired, the input map(s) has/have to be reinterpolated
 beforehand with one of the dedicated modules.
 beforehand with one of the dedicated modules.
 Masks can be set (<a href="r3.mask.html">r3.mask</a>).
 Masks can be set (<a href="r3.mask.html">r3.mask</a>).
 
 
-<h3>Volume operations</h3>
+<h3>3D raster analyses and operations</h3>
 
 
-Powerful 3D map algebra is implemented in <a href="r3.mapcalc.html">r3.mapcalc</a>.
+Powerful 3D raster map algebra is implemented in
+<a href="r3.mapcalc.html">r3.mapcalc</a>.
 
 
 A 3D groundwater flow model is implemented in <a href="r3.gwflow.html">r3.gwflow</a>.
 A 3D groundwater flow model is implemented in <a href="r3.gwflow.html">r3.gwflow</a>.
 
 
 <h3>3D raster conversion to vector or 2D raster maps</h3>
 <h3>3D raster conversion to vector or 2D raster maps</h3>
 
 
-3D vector point data can be converted to a GRASS 3D raster map
-(<a href="v.to.rast3.html">v.to.rast3</a>).
-Layers from a 3D raster map can be converted to a 2D raster map
+Slices from a 3D raster map can be converted to a 2D raster map
 (<a href="r3.to.rast.html">r3.to.rast</a>).
 (<a href="r3.to.rast.html">r3.to.rast</a>).
 Cross sectional 2D raster map can be extracted from 3D raster map based
 Cross sectional 2D raster map can be extracted from 3D raster map based
 on a 2D elevation map (<a href="r3.cross.rast.html">r3.cross.rast</a>).
 on a 2D elevation map (<a href="r3.cross.rast.html">r3.cross.rast</a>).
 
 
 <h3>3D raster statistics</h3>
 <h3>3D raster statistics</h3>
 
 
-Volume statistics can be calculated with <a href="r3.stats.html">r3.stats</a>
+3D raster statistics can be calculated with <a href="r3.stats.html">r3.stats</a>
 and <a href="r3.univar.html">r3.univar</a>.
 and <a href="r3.univar.html">r3.univar</a>.
 
 
 <h3>3D raster interpolation</h3>
 <h3>3D raster interpolation</h3>
 
 
 From 3D vector points, GRASS 3D raster maps can be interpolated
 From 3D vector points, GRASS 3D raster maps can be interpolated
-(<a href="v.vol.rst.html">v.vol.rst</a>). Results are volumes,
-or 2D raster maps can be also extracted.
+(<a href="v.vol.rst.html">v.vol.rst</a>).
+Results are 3D raster maps, however 2D raster maps can be also extracted.
 
 
 <h3>3D raster export</h3>
 <h3>3D raster export</h3>
 
 
 The modules <a href="r3.out.ascii.html">r3.out.ascii</a> and
 The modules <a href="r3.out.ascii.html">r3.out.ascii</a> and
- <a href="r3.out.bin.html">r3.out.bin</a> support the export of
- 3D raster maps as ASCII or binary files. The output of these modules
- can be imported with the coresponding import modules noted above.
+<a href="r3.out.bin.html">r3.out.bin</a> support the export of
+3D raster maps as ASCII or binary files. The output of these modules
+can be imported with the corresponding import modules noted above.
+
 <p>
 <p>
 NetCDF export of 3D raster maps can be performed using the module 
 NetCDF export of 3D raster maps can be performed using the module 
 <a href="r3.out.netcdf.html">r3.out.netcdf</a>. It supports 3D raster maps
 <a href="r3.out.netcdf.html">r3.out.netcdf</a>. It supports 3D raster maps
-with spatial and temporal vertical dimension (Space time voxel cubes).
+with spatial dimensions and temporal (vertical) dimension.
+
 <p>
 <p>
-GRASS 3D raster maps can be exported to VTK (<a href="r3.out.vtk.html">r3.out.vtk</a>).
+GRASS GIS 3D raster maps can be exported to VTK
+using <a href="r3.out.vtk.html">r3.out.vtk</a>.
 VTK files can be visualized with the 
 VTK files can be visualized with the 
-<em><a href="http://www.vtk.org">VTK Toolkit</a></em>, 
-<em><a href="http://www.paraview.org">Paraview</a></em> and 
+<em><a href="http://www.vtk.org">VTK Toolkit</a></em>,
+<em><a href="http://www.paraview.org">Paraview</a></em> and
 <em><a href="http://mayavi.sourceforge.net">MayaVi</a></em>.
 <em><a href="http://mayavi.sourceforge.net">MayaVi</a></em>.
-GRASS 2D raster maps can be exported to VTK with <a href="r.out.vtk.html">r.out.vtk</a>,
-GRASS vector maps can be exported to VTK with <a href="v.out.vtk.html">v.out.vtk</a>.
+Moreover, GRASS GIS 2D raster maps can be exported to VTK with
+<a href="r.out.vtk.html">r.out.vtk</a>
+and GRASS GIS vector maps can be exported to VTK with
+<a href="v.out.vtk.html">v.out.vtk</a>.
+
 <p>
 <p>
 Alternatively, GRASS 3D raster maps can be imported and exported from/to Vis5D
 Alternatively, GRASS 3D raster maps can be imported and exported from/to Vis5D
 (<a href="r3.in.v5d.html">r3.in.v5d</a>, <a href="r3.out.v5d.html">r3.out.v5d</a>).
 (<a href="r3.in.v5d.html">r3.in.v5d</a>, <a href="r3.out.v5d.html">r3.out.v5d</a>).
 Note that Vis5D is limited in the number of supported volumes.
 Note that Vis5D is limited in the number of supported volumes.
+<!-- it is not clear what 'volume' means here -->
+
+
+<h3>3D raster data types</h3>
+
+3D raster's single-precision data type is most often called "FCELL" or "float",
+and the double-precision one "DCELL" or "double".
+
 
 
 <h3>See also</h3>
 <h3>See also</h3>
 
 
@@ -100,6 +164,8 @@ Note that Vis5D is limited in the number of supported volumes.
   <li><a href="rasterintro.html">Introduction into raster data processing</a></li>
   <li><a href="rasterintro.html">Introduction into raster data processing</a></li>
   <li><a href="vectorintro.html">Introduction into vector data processing</a></li>
   <li><a href="vectorintro.html">Introduction into vector data processing</a></li>
   <li><a href="imageryintro.html">Introduction into image processing</a></li>
   <li><a href="imageryintro.html">Introduction into image processing</a></li>
-  <li><a href="databaseintro.html">Database management</a></li>
+  <li><a href="temporalintro.html">Temporal data processing</a></li>
   <li><a href="projectionintro.html">Projections and spatial transformations</a></li>
   <li><a href="projectionintro.html">Projections and spatial transformations</a></li>
+  <li><a href="wxGUI.nviz.html">wxGUI 3D View Mode</a></li>
+  <li><em><a href="m.nviz.image.html">m.nviz.image</a></em></li>
 </ul>
 </ul>

+ 15 - 4
tools/mkhtml.py

@@ -55,7 +55,7 @@ header_pgm_desc = """<h2>NAME</h2>
 
 
 footer_index = string.Template(\
 footer_index = string.Template(\
 """<hr class="header">
 """<hr class="header">
-<p><a href="index.html">Main index</a> | <a href="${INDEXNAME}.html">${INDEXNAMECAP} index</a> | <a href="topics.html">Topics index</a> | <a href="keywords.html">Keywords Index</a> | <a href="full_index.html">Full index</a></p>
+<p><a href="index.html">Main index</a> | <a href="${INDEXNAME}.html">${INDEXNAMECAP} index</a> | <a href="topics.html">Topics index</a> | <a href="keywords.html">Keywords index</a> | <a href="full_index.html">Full index</a></p>
 <p>&copy; 2003-${YEAR} <a href="http://grass.osgeo.org">GRASS Development Team</a>, GRASS GIS ${GRASS_VERSION} Reference Manual</p>
 <p>&copy; 2003-${YEAR} <a href="http://grass.osgeo.org">GRASS Development Team</a>, GRASS GIS ${GRASS_VERSION} Reference Manual</p>
 </div>
 </div>
 </body>
 </body>
@@ -64,7 +64,7 @@ footer_index = string.Template(\
 
 
 footer_noindex = string.Template(\
 footer_noindex = string.Template(\
 """<hr class="header">
 """<hr class="header">
-<p><a href="index.html">Main index</a> | <a href="topics.html">Topics index</a> | <a href="keywords.html">Keywords Index</a> | <a href="full_index.html">Full index</a></p>
+<p><a href="index.html">Main index</a> | <a href="topics.html">Topics index</a> | <a href="keywords.html">Keywords index</a> | <a href="full_index.html">Full index</a></p>
 <p>&copy; 2003-${YEAR} <a href="http://grass.osgeo.org">GRASS Development Team</a>, GRASS GIS ${GRASS_VERSION} Reference Manual</p>
 <p>&copy; 2003-${YEAR} <a href="http://grass.osgeo.org">GRASS Development Team</a>, GRASS GIS ${GRASS_VERSION} Reference Manual</p>
 </div>
 </div>
 </body>
 </body>
@@ -231,12 +231,23 @@ index_names = {
     'ps': 'postscript',
     'ps': 'postscript',
     'p' : 'paint',
     'p' : 'paint',
     'r' : 'raster',
     'r' : 'raster',
-    'r3': 'raster3D',
+    'r3': 'raster3d',
     's' : 'sites',
     's' : 'sites',
     't' : 'temporal',
     't' : 'temporal',
     'v' : 'vector'
     'v' : 'vector'
     }
     }
 
 
+def to_title(name):
+    """Convert name of command class/family to form suitable for title"""
+    return name.capitalize()
+
+index_titles = {}
+for key, name in index_names.iteritems():
+    if key == 'r3':
+        index_titles[key] = '3D raster'
+    else:
+        index_titles[key] = to_title(name)
+
 # process footer
 # process footer
 index = re.search('(<!-- meta page index:)(.*)(-->)', src_data, re.IGNORECASE)
 index = re.search('(<!-- meta page index:)(.*)(-->)', src_data, re.IGNORECASE)
 if index:
 if index:
@@ -248,7 +259,7 @@ if index:
 else:
 else:
     mod_class = pgm.split('.', 1)[0]
     mod_class = pgm.split('.', 1)[0]
     index_name = index_names.get(mod_class, '')
     index_name = index_names.get(mod_class, '')
-    index_name_cap = index_name.title()
+    index_name_cap = index_titles.get(mod_class, '')
 
 
 grass_version = os.getenv("VERSION_NUMBER", "unknown")
 grass_version = os.getenv("VERSION_NUMBER", "unknown")
 year = os.getenv("VERSION_DATE")
 year = os.getenv("VERSION_DATE")