dwww Home | Manual pages | Find package

r.thin(1grass)              GRASS GIS User's Manual             r.thin(1grass)

NAME
       r.thin   - Thins non-null cells that denote linear features in a raster
       map layer.

KEYWORDS
       raster, geometry

SYNOPSIS
       r.thin
       r.thin --help
       r.thin  input=name  output=name   [iterations=integer]    [--overwrite]
       [--help]  [--verbose]  [--quiet]  [--ui]

   Flags:
       --overwrite
           Allow output files to overwrite existing files

       --help
           Print usage summary

       --verbose
           Verbose module output

       --quiet
           Quiet module output

       --ui
           Force launching GUI dialog

   Parameters:
       input=name [required]
           Name of input raster map

       output=name [required]
           Name for output raster map

       iterations=integer
           Maximal number of iterations
           Default: 200

DESCRIPTION
       r.thin  scans the named input raster map layer and thins non-NULL cells
       that denote linear features into linear features having a  single  cell
       width. Raster lines often need to be thinned (skeletonizing raster fea-
       tures) to a single pixel width before they can be transformed to vector
       data.

       r.thin  will thin only the non-NULL (no data) raster cells of the named
       input raster map layer within the current geographic  region  settings.
       The  cell width of the thinned output raster map layer will be equal to
       the cell resolution of the currently set geographic region.  All of the
       thinned linear features will have the width of a single cell.

       r.thin will create a new output raster data file containing the thinned
       linear features.  r.thin assumes that linear features are encoded  with
       positive  values  on  a  background  of NULL’s in the input raster data
       file, hence it creates a NULL/1 output map.

NOTES
       r.thin only creates raster map layers. In order to create a vector map,
       the user will need to run r.to.vect on the resultant raster map.

       r.thin  may  create small spurs or "dangling lines" during the thinning
       process.  These spurs may be  removed  (after  creating  a  vector  map
       layer) by v.clean (rmdangle tool).

       This  code  implements the thinning algorithm described in "Analysis of
       Thinning Algorithms Using Mathematical Morphology" by Ben-Kwei Jang and
       Ronlad T. Chin in Transactions on Pattern Analysis and Machine Intelli-
       gence, vol. 12, No. 6, June 1990.  The definition Jang and Chin give of
       the  thinning  process is "successive removal of outer layers of pixels
       from an object while retaining any pixels whose removal would alter the
       connectivity or shorten the legs of the sceleton."

       The  sceleton  is  finally thinned when the thinning process converges;
       i.e., "no further pixels can be removed without altering the connectiv-
       ity  or shortening the sceleton legs" (p. 541).  The authors prove that
       the thinning process described always converges and produces  one-pixel
       thick  sceletons.   The  number  of  iterations depends on the original
       thickness of the object.  Each iteration peels off the  outside  pixels
       from  the  object.   Therefore, if the object is <= n pixels thick, the
       algorithm should converge in <= iterations.

EXAMPLE
       To vectorize the raster map streams_derived in the North Carolina  sam-
       ple  dataset  that  represents  the stream network derived from the 10m
       resolution DEM by r.watershed, run:
       g.region raster=elevation -p
       # create flow accumulation map
       r.watershed elevation=elevation accumulation=accum_50K thresh=50000
       # extract streams from flow accumulation map
       r.mapcalc "streams_from_flow = if(abs(accum_50K) > 1000, 1, null())"
       # skeletonize map
       r.thin streams_from_flow out=streams_thin
       d.mon wx0
       d.rast streams_from_flow
       d.erase
       d.rast streams_thin

       Raster feature thinning (skeletonizing)

       The resulting map cabe optionally vectorized:
       r.to.vect streams_thin output=streams_thin type=line
       # visualize
       d.rast accum_50K
       d.vect streams_thin color=red width=2

       Vectorized stream network after thinning extracted from flow  accumula-
       tion map

SEE ALSO
        g.region, r.to.vect, v.clean, wxGUI vector digitizer, v.build

AUTHOR
       Olga Waupotitsch, U.S.Army Construction Engineering Research Laboratory

       The  code for finding the bounding box as well as input/output code was
       written by Mike Baba (DBA  Systems,  1990)  and  Jean  Ezell  (USACERL,
       1988).

SOURCE CODE
       Available at: r.thin source code (history)

       Accessed: unknown

       Main  index  | Raster index | Topics index | Keywords index | Graphical
       index | Full index

       © 2003-2022 GRASS Development Team, GRASS GIS 7.8.7 Reference Manual

GRASS 7.8.7                                                     r.thin(1grass)

Generated by dwww version 1.14 on Fri Jan 24 14:09:00 CET 2025.