.. index:: ! grdview

*******
grdview
*******

.. only:: not man

    grdview - Create 3-D perspective image or surface mesh from a grid

Synopsis
--------

.. include:: common_SYN_OPTs.rst_

**grdview** *relief_file* |-J|\ *parameters*
[ |SYN_OPT-B| ]
[ |-C|\ [*cpt*]]
[ |-G|\ *drapefile* \| |-G|\ *grd_r* |-G|\ *grd_g* |-G|\ *grd_b* ]
[ |-I|\ [*intensfile*\ \|\ *intensity*\ \|\ *modifiers*] ]
[ **-Jz**\ \|\ **Z**\ *parameters* ] [ **-K** ]
[ |-N|\ *level*\ [**+g**\ *fill*] ] [ **-O** ] [ **-P** ]
[ |-Q|\ *args*\ [**+m**] ]
[ |SYN_OPT-Rz| ]
[ |-S|\ *smooth* ]
[ |-T|\ [**s**][\ **o**\ [*pen*]] ]
[ |SYN_OPT-U| ]
[ |-W|\ **c|m|f**\ *pen* ]
[ |SYN_OPT-X| ]
[ |SYN_OPT-Y| ]
[ |SYN_OPT-f| ]
[ |SYN_OPT-n| ]
[ |SYN_OPT-p| ]
[ |SYN_OPT-t| ]

|No-spaces|

Description
-----------

**grdview** reads a 2-D grid file and produces a 3-D perspective plot by
drawing a mesh, painting a colored/grayshaded surface made up of
polygons, or by scanline conversion of these polygons to a raster image.
Options include draping a data set on top of a surface, plotting of
contours on top of the surface, and apply artificial illumination based
on intensities provided in a separate grid file. 

Required Arguments
------------------

*relief_file*
    2-D gridded data set to be imaged (the relief of the surface). (See
    GRID FILE FORMAT below.) 

.. _-J:

.. |Add_-J| unicode:: 0x20 .. just an invisible code
.. include:: explain_-J.rst_

.. include:: explain_-Jz.rst_

Optional Arguments
------------------

.. _-B:

.. include:: explain_-B.rst_

.. _-C:

**-C**\ [*cpt*]
    name of the CPT. Must be present if you want
    (1) mesh plot with contours (**-Qm**), or
    (2) shaded/colored perspective image (**-Qs** or
    **-Qi**). For **-Qs**: You can specify that you want to skip a
    z-slice by setting the red r/g/b component to -; to use a pattern give red =
    **P\|p**\ *pattern*\ [**+b**\ *color*\ ][**+f**\ *color*\ ][**+r**\ *dpi*\ ].
    Alternatively,
    supply the name of a GMT color master dynamic CPT [rainbow] to
    automatically determine a continuous CPT from
    the grid's z-range.  If the dynamic CPT has a default range then
    that range will be imposed instead.

.. _-G:

|-G|\ *drapefile* \| |-G|\ *grd_r* |-G|\ *grd_g* |-G|\ *grd_b*
    Drape the image in *drapefile* on top of the relief provided by
    *relief_file*. [Default is *relief_file*]. Note that **-Jz** and
    **-N** always refers to the *relief_file*. The *drapefile* only
    provides the information pertaining to colors, which is looked-up
    via the CPT (see **-C**). Alternatively, give three grid files
    via separate **-G** options in the specified order. These files must contain the red, green, and
    blue colors directly (in 0-255 range) and no CPT is needed. The
    *drapefile* may be of higher resolution than the *relief_file*.

.. _-I:

**-I**\ [*intensfile*\ \|\ *intensity*\ \|\ *modifiers*]
    Gives the name of a grid file with intensities in the (-1,+1) range,
    or a constant intensity to apply everywhere; this simply affects the
    ambient light.  If just **+** is given then we derive an intensity
    grid from the input data grid *grd_z* via a call to :doc:`grdgradient`
    using the arguments **-A**\ -45 and **-Nt**\ 1 for that module. You can
    append **+a**\ *azimuth and **+n**\ *args* to override those values.  If you want
    more specific intensities then run :doc:`grdgradient` separately first.
    [Default is no illumination].

.. _-K:

.. include:: explain_-K.rst_

.. _-N:

**-N**\ *level*\ [**+g**\ *fill*]
    Draws a plane at this z-level. If the optional *color* is provided
    via the **+g** modifier,
    the frontal facade between the plane and the data perimeter is
    colored. See **-Wf** for setting the pen used for the outline. 

.. _-O:

.. include:: explain_-O.rst_

.. _-p:

.. include:: explain_-P.rst_

.. _-Q:

**-Q**\ *args*\ [**+m**]
    Select one of following settings. For any of these choices, you may force
    a monochrome image by appending the modifier **+m**. Colors are then
    converted to shades of gray using the (monochrome television) YIQ transformation

    #. Specify **m** for mesh plot [Default], and optionally append *color* for a different mesh paint [white].
    #. Specify **mx** or **my** for waterfall plots (row or column profiles). Specify color as for plain **m**
    #. Specify **s** for surface plot, and optionally append **m** to have mesh lines drawn on top of surface.
    #. Specify **i** for image plot, and optionally append the effective dpi resolution for the rasterization [100].
    #. Specify **c**. Same as **-Qi** but will make nodes with z = NaN transparent, using the colormasking
       feature in PostScript Level 3 (the PS device must support PS Level 3). . 

.. _-R:

.. |Add_-R| unicode:: 0x20 .. just an invisible code
.. include:: explain_-R.rst_

.. |Add_-Rz| replace:: This option may be used to
    indicate the range used for the 3-D axes [Default is region given by
    the *relief_file*]. You may ask for a larger *w/e/s/n* region to
    have more room between the image and the axes. A smaller region than
    specified in the *relief_file* will result in a subset of the grid.
.. include:: explain_-Rz.rst_

.. _-S:

**-S**\ *smooth*
    Smooth the contours before plotting (see :doc:`grdcontour`) [Default is no smoothing].

.. _-t:

**-T**\ [**s**\ ][\ **o**\ [*pen*]]
    Plot image without any interpolation. This involves converting each
    node-centered bin into a polygon which is then painted separately.
    Append **s** to skip nodes with z = NaN. This option is useful for
    categorical data where interpolating between values is meaningless.
    Optionally, append **o** to draw the tile outlines, and specify a
    custom pen if the default pen is not to your liking. As this option
    produces a flat surface it cannot be combined with **-JZ** or **-Jz**. 

.. _-U:

.. include:: explain_-U.rst_

.. _-V:

.. |Add_-V| unicode:: 0x20 .. just an invisible code
.. include:: explain_-V.rst_

.. _-W:

**-W**\ **c**\ \|\ **m**\ \|\ **f**\ *pen*

    **-Wc**
        Draw contour lines on top of surface or mesh (not image). Append pen
        attributes used for the contours. [Default: width = 0.75p, color =
        black, style = solid].
    **-Wm**
        Sets the pen attributes used for the mesh. [Default: width = 0.25p,
        color = black, style = solid]. You must also select **-Qm** or
        **-Qsm** for meshlines to be drawn.
    **-Wf**
        Sets the pen attributes used for the facade. [Default: width =
        0.25p, color = black, style = solid]. You must also select **-N**
        for the facade outline to be drawn. 

.. _-X:

.. include:: explain_-XY.rst_

.. include:: explain_-n.rst_

.. |Add_perspective| unicode:: 0x20 .. just an invisible code
.. include:: explain_perspective.rst_

.. include:: explain_-t.rst_

.. include:: explain_help.rst_

.. include:: explain_grd_inout_short.rst_

.. include:: explain_grdresample.rst_

Examples
--------

To make a mesh plot from the file hawaii_grav.nc and drawing the
contours given in the CPT hawaii.cpt on a Lambert map at
1.5 cm/degree along the standard parallels 18 and 24, with vertical
scale 20 mgal/cm, and looking at the surface from SW at 30 degree
elevation, run

   ::

    gmt grdview hawaii_grav.nc -Jl18/24/1.5c -Chawaii.cpt \
                -Jz0.05c -Qm -N-100 -p225/30 -Wc > hawaii_grav_image.ps

To create a illuminated color perspective plot of the gridded data set
image.nc, using the CPT color.rgb, with linear scaling at
10 cm/x-unit and tickmarks every 5 units, with intensities provided by
the file intens.nc, and looking from the SE, use

   ::

    gmt grdview image.nc -Jx10.0c -Ccolor.rgb -Qs -p135/30 -Iintens.nc > image3D.ps

To make the same plot using the rastering option with dpi = 50, use

   ::

    gmt grdview image.nc -Jx10.0c -Ccolor.rgb -Qi50 -p135/30 -Iintens.nc > image3D.ps

To create a color PostScript perspective plot of the gridded data set
magnetics.nc, using the CPT mag_intens.cpt, draped over
the relief given by the file topography.nc, with Mercator map width of 6
inch and tickmarks every 1 degree, with intensities provided by the file
topo_intens.nc, and looking from the SE, run

   ::

    gmt grdview topography.nc -JM6i -Gmagnetics.nc -Cmag_intens.cpt \
                -Qs -p140/30 -Itopo_intens.nc > draped3D.ps

Given topo.nc and the Landsat image veggies.ras, first run :doc:`grd2rgb`
to get the red, green, and blue grids, and then drape this image over
the topography and shade the result for good measure. The commands are

   ::

    gmt grd2rgb veggies.ras -Glayer_%c.nc
    gmt grdview topo.nc -JM6i -Qi -p140/30 -Itopo_intens.nc \
               -Glayer_r.nc -Glayer_g.nc -Glayer_b.nc > image.ps

Remarks
-------

For the **-Qs** option: PostScript provides no way of smoothly varying
colors within a polygon, so colors can only vary from polygon to
polygon. To obtain smooth images this way you may resample the grid
file(s) using :doc:`grdsample` or use a finer grid size when running
gridding programs like :doc:`surface` or :doc:`nearneighbor`. Unfortunately,
this produces huge PostScript files. The alternative is to use the
**-Qi** option, which computes bilinear or bicubic continuous color
variations within polygons by using scanline conversion to image the polygons.

See Also
--------

:doc:`gmt`, :doc:`grd2rgb`,
:doc:`gmtcolors`,
:doc:`grdcontour`,
:doc:`grdimage`,
:doc:`grdsample`,
:doc:`nearneighbor`,
:doc:`psbasemap`,
:doc:`pscontour`, :doc:`pstext`,
:doc:`surface`
