NAME
r.fillnulls - Fills no-data areas in raster maps using spline interpolation.
KEYWORDS
raster,
surface,
elevation,
interpolation,
splines,
no-data filling
SYNOPSIS
r.fillnulls
r.fillnulls --help
r.fillnulls input=name output=name method=string [tension=float] [smooth=float] [edge=integer] [npmin=integer] [segmax=integer] [lambda=float] [memory=memory in MB] [--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
- method=string [required]
- Interpolation method to use
- Options: bilinear, bicubic, rst
- Default: rst
- tension=float
- Spline tension parameter
- Default: 40.
- smooth=float
- Spline smoothing parameter
- Default: 0.1
- edge=integer
- Width of hole edge used for interpolation (in cells)
- Options: 2-100
- Default: 3
- npmin=integer
- Minimum number of points for approximation in a segment (>segmax)
- Options: 2-10000
- Default: 600
- segmax=integer
- Maximum number of points in a segment
- Options: 2-10000
- Default: 300
- lambda=float
- Tykhonov regularization parameter (affects smoothing)
- Used in bilinear and bicubic spline interpolation
- Default: 0.01
- memory=memory in MB
- Maximum memory to be used (in MB)
- Cache size for raster rows
- Default: 300
r.fillnulls fills NULL pixels (no data areas) in input raster
map and stores filled data to a new output raster map. The fill areas
are interpolated from the no data area boundaries buffer
using
v.surf.rst regularized
spline interpolation with tension (
method=rst) or
r.resamp.bspline cubic or
linear spline interpolation with Tykhonov regularization.
Each area boundary buffer is set to three times the map resolution to get nominally
three points around the edge. This way the algorithm interpolates into the hole with
a trained slope and curvature at the edges, in order to avoid that such a flat plane
is generated in a hole. The width of edge area can be adjusted by
changing the edge parameter.
During the interpolation following warning may occur when using the RST method:
Warning: strip exists with insufficient data
Warning: taking too long to find points for interpolation--please change
the region to area where your points are
This warning is generated if large data holes exist within the surface.
As the idea of r.fillnulls is to fill such holes, the user may
ignore the warning. The interpolation will be continued. However, the user
may pay attention to below notes.
If interpolation fails, temporary raster and vector maps are left in place to allow
unfilled map holes (NULL areas) to be identified and manually repaired.
When using the default RST method, the algorithm is based
on v.surf.rst regularized
splines with tension interpolation module which interpolates the
raster cell values for NULL data areas from the boundary values of the
NULL data area. An eventual raster MASK is respected during the NULL
data area(s) filling. The interpolated values are patched into the
NULL data area(s) of the input map and saved into a new raster map.
Otherwise, either the linear or cubic spline interpolation with
Tykhonov regularization can be selected (based on
r.resamp.bspline).
Depending on the shape of the NULL data area(s) problems may occur due to an
insufficient number of input cell values for the interpolation process. Most
problems will occur if a NULL data area reaches a large amount of the map
boundary. The user will have to carefully check the result using
r.mapcalc (generating a
difference map to the input map and applying the
"differences" color table
with
r.colors) and/or to query
individual cell values.
RST method stores temporary maps on hard disk. It will require at least as much
free space as one extra input raster map takes.
In this example, the SRTM elevation map in the
North Carolina sample dataset is filtered for outlier
elevation values; missing pixels are then re-interpolated to obtain
a complete elevation map:
g.region raster=elev_srtm_30m -p
d.mon wx0
d.histogram elev_srtm_30m
# remove SRTM outliers, i.e. SRTM below 50m (esp. lakes), leading to no data areas
r.mapcalc "elev_srtm_30m_filt = if(elev_srtm_30m < 50.0, null(), elev_srtm_30m)"
d.histogram elev_srtm_30m_filt
d.rast elev_srtm_30m_filt
# using the default RST method to fill these holes in DEM
r.fillnulls input=elev_srtm_30m_filt output=elev_srtm_30m_rst tension=20
# using the bilinear method to fill these holes in DEM
r.fillnulls input=elev_srtm_30m_filt output=elev_srtm_30m_bilin method=bilinear
d.histogram elev_srtm_30m_rst
d.rast elev_srtm_30m_rst
d.erase
d.histogram elev_srtm_30m_bilin
d.rast elev_srtm_30m_bilin
r.mapcalc "diff_rst_bilin = elev_srtm_30m_rst - elev_srtm_30m_bilin"
r.colors diff_rst_bilin color=differences
r.univar -e diff_rst_bilin
d.erase
d.rast diff_rst_bilin
d.legend diff_rst_bilin
- Mitas, L., Mitasova, H., 1999, Spatial Interpolation. In: P.Longley,
M.F. Goodchild, D.J. Maguire, D.W.Rhind (Eds.), Geographical Information
Systems: Principles, Techniques, Management and Applications, Wiley,
pp.481-492
- Mitasova H., Mitas L., Brown W.M., D.P. Gerdes, I.
Kosinovsky, Baker, T.1995, Modeling spatially and temporally distributed
phenomena: New methods and tools for GRASS GIS. International Journal of
GIS, 9 (4), special issue on Integrating GIS and Environmental modeling,
433-446.
- Mitasova H.
and Mitas L. 1993: Interpolation by Regularized Spline with Tension: I.
Theory and Implementation, Mathematical Geology 25, 641-655.
- Mitasova H.
and Hofierka L. 1993: Interpolation by Regularized Spline with Tension:
II. Application to Terrain Modeling and Surface Geometry Analysis,
Mathematical Geology 25, 657-667.
r.fill.dir,
r.mapcalc,
r.resamp.bspline,
v.surf.bspline,
v.surf.rst,
v.fill.holes
Markus Neteler, University of Hannover and Fondazione Edmund Mach
Improvement by Hamish Bowman, NZ
SOURCE CODE
Available at:
r.fillnulls source code
(history)
Latest change: Tuesday Dec 17 20:17:20 2024 in commit: ab90c5e5a9b668894da360fa97ffd4a51a38931e
Main index |
Raster index |
Topics index |
Keywords index |
Graphical index |
Full index
© 2003-2024
GRASS Development Team,
GRASS GIS 8.5.0dev Reference Manual