Provided by: gmt-common_5.4.3+dfsg-1_all bug

NAME

       surface - Grid table data using adjustable tension continuous curvature splines

SYNOPSIS

       surface [ table ]  -Goutputfile.nc
        -Iincrement
        -Rregion  [  -Aaspect_ratio ] [  -Cconvergence_limit[%] ] [  -Lllower ] [ -Luupper ] [  -Nmax_iterations
       ] [  -Q ] [  -Ssearch_radius[m|s] ] [  -T[i|b]tension_factor ] [  -V[level] ] [  -Zover-relaxation_factor
       ] [ -aflags ] [ -bibinary ] [ -dinodata ] [ -eregexp ] [ -fflags ] [ -hheaders ] [ -iflags ]  [  -r  ]  [
       -:[i|o] ]

       Note: No space is allowed between the option flag and the associated arguments.

DESCRIPTION

       surface  reads  randomly-spaced (x,y,z) triples from standard input [or table] and produces a binary grid
       file of gridded values z(x,y) by solving:
          (1 - T) * L (L (z)) + T * L (z) = 0

       where T is a tension factor between 0 and 1, and L indicates the Laplacian operator.  T  =  0  gives  the
       “minimum curvature” solution which is equivalent to SuperMISP and the ISM packages. Minimum curvature can
       cause  undesired  oscillations and false local maxima or minima (See Smith and Wessel, 1990), and you may
       wish to use T > 0 to suppress these effects.  Experience  suggests  T  ~  0.25  usually  looks  good  for
       potential field data and T should be larger (T ~ 0.35) for steep topography data.  T = 1 gives a harmonic
       surface (no maxima or minima are possible except at control data points). It is recommended that the user
       pre-process  the  data  with blockmean, blockmedian, or blockmode to avoid spatial aliasing and eliminate
       redundant data. You may impose lower and/or upper bounds on the solution. These may  be  entered  in  the
       form  of  a  fixed value, a grid with values, or simply be the minimum/maximum input data values. Natural
       boundary conditions are applied at the edges, except for geographic data with 360-degree range  where  we
       apply periodic boundary conditions in the longitude direction.

REQUIRED ARGUMENTS

       -Goutputfile.nc
              Output  file  name. Output is a binary 2-D .nc file. Note that the smallest grid dimension must be
              at least 4.

       -Ixinc[unit][+e|n][/yinc[unit][+e|n]]
              x_inc [and  optionally  y_inc]  is  the  grid  spacing.  Optionally,  append  a  suffix  modifier.
              Geographical (degrees) coordinates: Append m to indicate arc minutes or s to indicate arc seconds.
              If  one  of the units e, f, k, M, n or u is appended instead, the increment is assumed to be given
              in meter, foot, km, Mile, nautical mile or US survey foot, respectively, and will be converted  to
              the  equivalent  degrees longitude at the middle latitude of the region (the conversion depends on
              PROJ_ELLIPSOID). If y_inc is given but set to 0 it will be reset equal to x_inc; otherwise it will
              be converted to degrees latitude. All coordinates: If +e is appended then the corresponding max  x
              (east)  or  y  (north) may be slightly adjusted to fit exactly the given increment [by default the
              increment may be adjusted slightly to fit  the  given  domain].  Finally,  instead  of  giving  an
              increment  you  may  specify  the  number of nodes desired by appending +n to the supplied integer
              argument; the increment is then recalculated  from  the  number  of  nodes  and  the  domain.  The
              resulting  increment  value  depends  on  whether  you  have  selected  a  gridline-registered  or
              pixel-registered grid; see App-file-formats for details. Note: if -Rgrdfile is used then the  grid
              spacing has already been initialized; use -I to override the values.

       -Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)
              Specify the region of interest.

OPTIONAL ARGUMENTS

       table  One  or  more  ASCII (or binary, see -bi[ncols][type]) data table file(s) holding a number of data
              columns. If no tables are given then we read from standard input.

       -Aaspect_ratio
              Aspect ratio. If desired, grid anisotropy can be added to the equations. Enter aspect_ratio, where
              dy = dx / aspect_ratio relates the grid dimensions. [Default = 1 assumes isotropic grid.]

       -Cconvergence_limit[%]
              Convergence limit. Iteration is assumed to have converged when the maximum absolute change in  any
              grid value is less than convergence_limit. (Units same as data z units). Alternatively, give limit
              in percentage of rms deviation by appending %.  [Default is scaled to 1e-4 of the root-mean-square
              deviation  of  the  data  from  a best-fit (least-squares) plane.].  This is the final convergence
              limit at the desired grid spacing; for intermediate  (coarser)  grids  the  effective  convergence
              limit is divided by the grid spacing multiplier.

       -Lllower and -Luupper
              Impose limits on the output solution. llower sets the lower bound. lower can be the name of a grid
              file  with  lower  bound  values,  a  fixed  value,  d  to  set  to  minimum input value, or u for
              unconstrained [Default]. uupper sets the upper bound and can be the name of a grid file with upper
              bound values, a fixed value, d to set to maximum input value, or u  for  unconstrained  [Default].
              Grid  files  used to set the limits may contain NaNs. In the presence of NaNs, the limit of a node
              masked with NaN is unconstrained.

       -Nmax_iterations
              Number of iterations. Iteration will cease when convergence_limit is reached  or  when  number  of
              iterations reaches max_iterations.  This is the final iteration limit at the desired grid spacing;
              for  intermediate  (coarser)  grids  the  effective  iteration limit is scaled by the grid spacing
              multiplier.  [Default is 500.]

       -Q     Suggest grid dimensions which have a highly composite greatest common factor. This allows  surface
              to  use  several intermediate steps in the solution, yielding faster run times and better results.
              The sizes suggested by -Q can be achieved by altering -R and/or -I. You can recover the -R and  -I
              you want later by using grdsample or grdcut on the output of surface.

       -Ssearch_radius[m|s]
              Search  radius. Enter search_radius in same units as x,y data; append m to indicate arc minutes or
              s for arc seconds. This is used to initialize the grid before the first iteration; it is not worth
              the time unless the grid lattice is prime and cannot have regional stages. [Default = 0.0  and  no
              search is made.]

       -T[i|b]tension_factor
              Tension  factor[s].  These  must  be between 0 and 1. Tension may be used in the interior solution
              (above equation, where it suppresses spurious oscillations) and in the boundary conditions  (where
              it  tends  to flatten the solution approaching the edges). Using zero for both values results in a
              minimum curvature surface with free edges, i.e., a natural bicubic spline.  Use  -Titension_factor
              to set interior tension, and -Tbtension_factor to set boundary tension. If you do not prepend i or
              b, both will be set to the same value. [Default = 0 for both gives minimum curvature solution.]

       -V[level] (more …)
              Select  verbosity  level [c]. -V3 will report the convergence after each iteration; -V will report
              only after each regional grid is converged.

       -Zover-relaxation_factor
              Over-relaxation factor. This parameter is used to accelerate  the  convergence;  it  is  a  number
              between  1  and  2.  A  value  of  1 iterates the equations exactly, and will always assure stable
              convergence.  Larger values overestimate the incremental  changes  during  convergence,  and  will
              reach  a  solution more rapidly but may become unstable. If you use a large value for this factor,
              it is a good idea to monitor each iteration with the -Vl option. [Default = 1.4 converges  quickly
              and is almost always stable.]

       -acol=name[] (more …)
              Set aspatial column associations col=name.

       -bi[ncols][t] (more …)
              Select native binary input. [Default is 3 input columns].

       -dinodata (more …)
              Replace input columns that equal nodata with NaN.

       -e[~]”pattern” | -e[~]/regexp/[i] (more …)
              Only accept data records that match the given pattern.

       -f[i|o]colinfo (more …)
              Specify data types of input and/or output columns.

       -h[i|o][n][+c][+d][+rremark][+rtitle] (more …)
              Skip or produce header record(s). Not used with binary data.

       -icols[+l][+sscale][+ooffset][,] (more …)
              Select input columns and transformations (0 is first column).

       -r (more …)
              Set pixel node registration [gridline].

       -:[i|o] (more …)
              Swap 1st and 2nd column on input and/or output.

       -^ or just -
              Print a short message about the syntax of the command, then exits (NOTE: on Windows just use -).

       -+ or just +
              Print  an  extensive usage (help) message, including the explanation of any module-specific option
              (but not the GMT common options), then exits.

       -? or no arguments
              Print a complete usage (help) message, including the explanation of all options, then exits.

GRID VALUES PRECISION

       Regardless of the precision of the input data, GMT programs that create grid files will  internally  hold
       the  grids  in  4-byte floating point arrays. This is done to conserve memory and furthermore most if not
       all real data can be stored using 4-byte floating point values. Data with higher precision (i.e.,  double
       precision  values)  will  lose  that  precision once GMT operates on the grid or writes out new grids. To
       limit loss of precision when processing data you should always consider normalizing  the  data  prior  to
       processing.

EXAMPLES

       To grid 5 by 5 minute gravity block means from the ASCII data in hawaii_5x5.xyg, using a tension_factor =
       0.25,  a  convergence_limit  =  0.1  milligal,  writing  the  result  to a file called hawaii_grd.nc, and
       monitoring each iteration, try:

              gmt surface hawaii_5x5.xyg -R198/208/18/25 -I5m -Ghawaii_grd.nc -T0.25 -C0.1 -Vl

BUGS

       surface will complain when more than one data point is found for  any  node  and  suggest  that  you  run
       blockmean, blockmedian, or blockmode first. If you did run these decimators and still get this message it
       usually  means  that your grid spacing is so small that you need more decimals in the output format used.
       You may specify more decimal places by editing the parameter FORMAT_FLOAT_OUT in your gmt.conf file prior
       to running the decimators or choose binary input and/or output using single or double precision storage.

       Note that only gridline registration is possible with surface. If you need a  pixel-registered  grid  you
       can resample a gridline registered grid using grdsample -T.

SEE ALSO

       blockmean,  blockmedian,  blockmode,  gmt,  grdcut,  grdsample,  greenspline,  nearneighbor, triangulate,
       sphtriangulate

REFERENCES

       Smith, W. H. F, and P. Wessel, 1990, Gridding with continuous curvature splines in  tension,  Geophysics,
       55, 293-305.

COPYRIGHT

       2018, P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe

5.4.3                                             Jan 03, 2018                                     SURFACE(1gmt)