This is the command v.surf.bsplinegrass that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

**PROGRAM:**

**NAME**

**v.surf.bspline**- Performs bicubic or bilinear spline interpolation with Tykhonov

regularization.

**KEYWORDS**

vector, surface, interpolation, LIDAR

**SYNOPSIS**

**v.surf.bspline**

**v.surf.bspline**

**--help**

**v.surf.bspline**[-

**ce**]

**input**=

__name__[

**layer**=

__string__] [

**column**=

__name__] [

**sparse_input**=

__name__]

[

**output**=

__name__] [

**raster_output**=

__name__] [

**mask**=

__name__] [

**ew_step**=

__float__] [

**ns_step**=

__float__]

[

**method**=

__string__] [

**lambda_i**=

__float__] [

**solver**=

__name__] [

**maxit**=

__integer__] [

**error**=

__float__]

[

**memory**=

__integer__] [--

**overwrite**] [--

**help**] [--

**verbose**] [--

**quiet**] [--

**ui**]

**Flags:**

**-c**

Find the best Tykhonov regularizing parameter using a "leave-one-out" cross validation

method

**-e**

Estimate point density and distance

Estimate point density and distance for the input vector points within the current

region extends and quit

**--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 vector point map

Or data source for direct OGR access

**layer**=

__string__

Layer number or name

Vector features can have category values in different layers. This number determines

which layer to use. When used with direct OGR access this is the layer name.

Default:

__1__

**column**=

__name__

Name of the attribute column with values to be used for approximation

If not given and input is 3D vector map then z-coordinates are used.

**sparse_input**=

__name__

Name of input vector map with sparse points

Or data source for direct OGR access

**output**=

__name__

Name for output vector map

**raster_output**=

__name__

Name for output raster map

**mask**=

__name__

Raster map to use for masking (applies to raster output only)

Only cells that are not NULL and not zero are interpolated

**ew_step**=

__float__

Length of each spline step in the east-west direction

Default:

__4__

**ns_step**=

__float__

Length of each spline step in the north-south direction

Default:

__4__

**method**=

__string__

Spline interpolation algorithm

Options:

__bilinear,__

__bicubic__

Default:

__bilinear__

**bilinear**: Bilinear interpolation

**bicubic**: Bicubic interpolation

**lambda_i**=

__float__

Tykhonov regularization parameter (affects smoothing)

Default:

__0.01__

**solver**=

__name__

The type of solver which should solve the symmetric linear equation system

Options:

__cholesky,__

__cg__

Default:

__cholesky__

**maxit**=

__integer__

Maximum number of iteration used to solve the linear equation system

Default:

__10000__

**error**=

__float__

Error break criteria for iterative solver

Default:

__0.000001__

**memory**=

__integer__

Maximum memory to be used (in MB)

Cache size for raster rows

Default:

__300__

**DESCRIPTION**

__v.surf.bspline__performs a bilinear/bicubic spline interpolation with Tykhonov

regularization. The

**input**is a 2D or 3D vector

__points__map. Values to interpolate can be

the z values of 3D points or the values in a user-specified attribute column in a 2D or 3D

vector map. Output can be a raster (

**raster_output**) or vector (

**output**) map. Optionally, a

"sparse point" vector map can be input which indicates the location of

**output**vector

points.

**NOTES**

From a theoretical perspective, the interpolating procedure takes place in two parts: the

first is an estimate of the linear coefficients of a spline function is derived from the

observation points using a least squares regression; the second is the computation of the

interpolated surface (or interpolated vector points). As used here, the splines are 2D

piece-wise non-zero polynomial functions calculated within a limited, 2D area. The length

of each spline step is defined by

**ew_step**for the east-west direction and

**ns_step**for the

north-south direction. For optimal performance, the length of spline step should be no

less than the distance between observation points. Each vector point observation is

modeled as a linear function of the non-zero splines in the area around the observation.

The least squares regression predicts the the coefficients of these linear functions.

Regularization, avoids the need to have one observation and one coefficient for each

spline (in order to avoid instability).

With regularly distributed data points, a spline step corresponding to the maximum

distance between two points in both the east and north directions is sufficient. But often

data points are not regularly distributed and require statistial regularization or

estimation. In such cases, v.surf.bspline will attempt to minimize the gradient of

bilinear splines or the curvature of bicubic splines in areas lacking point observations.

As a general rule, spline step length should be greater than the mean distance between

observation points (twice the distance between points is a good starting point). Separate

east-west and north-south spline step length arguments allows the user to account for some

degree of anisotropy in the distribution of observation points. Short spline step lengths

- especially spline step lengths that are less than the distance between observation

points - can greatly increase the processing time.

Moreover, the maximum number of splines for each direction at each time is fixed,

regardless of the spline step length. As the total number of splines used increases (i.e.,

with small spline step lengths), the region is automatically split into subregions for

interpolation. Each subregion can contain no more than 150x150 splines. To avoid subregion

boundary problems, subregions are created to partially overlap each other. A weighted mean

of observations, based on point locations, is calculated within each subregion.

The Tykhonov regularization parameter (

**lambda_i**) acts to smooth the interpolation. With a

small

**lambda_i**, the interpolated surface closely follows observation points; a larger

value will produce a smoother interpolation.

The input can be a 2D or 3D vector points map. If input is 3D and

**column**is not given than

z-coordinates are used for interpolation. Parameter

**column**is required when input is 2D

vector map.

__v.surf.bspline__can produce a

**raster_output**OR a

**output**(but NOT simultaneously). Note that

topology is not build for output vector point map. The topology can be built if required

by

__v.build__.

If output is a vector points map and a

**sparse**vector points map is not specified, the

output vector map will contain points at the same locations as observation points in the

input map, but the values of the output points are interpolated values. If instead a

**sparse**vector points map is specified, the output vector map will contain points at the

same locations as the sparse vector map points, and values will be those of the

interpolated raster surface at those points.

A cross validation "leave-one-out" analysis is available to help to determine the optimal

**lambda_i**value that produces an interpolation that best fits the original observation

data. The more points used for cross-validation, the longer the time needed for

computation. Empirical testing indicates a threshold of a maximum of 100 points is

recommended. Note that cross validation can run very slowly if more than 100 observations

are used. The cross-validation output reports

__mean__and

__rms__of the residuals from the true

point value and the estimated from the interpolation for a fixed series of

**lambda_i**

values. No vector nor raster output will be created when cross-validation is selected.

**EXAMPLES**

**Basic**

**interpolation**

v.surf.bspline input=point_vector output=interpolate_surface method=bicubic

A bicubic spline interpolation will be done and a vector points map with estimated (i.e.,

interpolated) values will be created.

**Basic**

**interpolation**

**and**

**raster**

**output**

**with**

**a**

**longer**

**spline**

**step**

v.surf.bspline input=point_vector raster=interpolate_surface ew_step=25 ns_step=25

A bilinear spline interpolation will be done with a spline step length of 25 map units. An

interpolated raster map will be created at the current region resolution.

**Estimation**

**of**

**lambda_i**

**parameter**

**with**

**a**

**cross**

**validation**

**proccess**

v.surf.bspline -c input=point_vector

**Estimation**

**on**

**sparse**

**points**

v.surf.bspline input=point_vector sparse=sparse_points output=interpolate_surface

An output map of vector points will be created, corresponding to the sparse vector map,

with interpolated values.

**Using**

**attribute**

**values**

**instead**

**z-coordinates**

v.surf.bspline input=point_vector raster=interpolate_surface layer=1 \

column=attrib_column

The interpolation will be done using the values in

__attrib_column__, in the table associated

with layer 1.

**North**

**carolina**

**location**

**example**

**using**

**z-coordinates**

**for**

**interpolation**

g.region region=rural_1m res=2 -p

v.surf.bspline input=elev_lid792_bepts raster=elev_lid792_rast \

ew_step=5 ns_step=5 method=bicubic lambda_i=0.1

**KNOWN** **ISSUES**

Known issues:

In order to avoid RAM memory problems, an auxiliary table is needed for recording some

intermediate calculations. This requires the

__GROUP__

__BY__SQL function is used, which is not

supported by the DBF driver. For this reason, vector map output (

**output**) is not permitted

with the DBF driver. There are no problems with the raster map output from the DBF driver.

**REFERENCES**

· Brovelli M. A., Cannata M., and Longoni U.M., 2004, LIDAR Data Filtering and DTM

Interpolation Within GRASS, Transactions in GIS, April 2004, vol. 8, iss. 2, pp.

155-174(20), Blackwell Publishing Ltd

· Brovelli M. A. and Cannata M., 2004, Digital Terrain model reconstruction in urban

areas from airborne laser scanning data: the method and an example for Pavia

(Northern Italy). Computers and Geosciences 30, pp.325-331

· Brovelli M. A e Longoni U.M., 2003, Software per il filtraggio di dati LIDAR,

Rivista dell’Agenzia del Territorio, n. 3-2003, pp. 11-22 (ISSN 1593-2192)

· Antolin R. and Brovelli M.A., 2007, LiDAR data Filtering with GRASS GIS for the

Determination of Digital Terrain Models. Proceedings of Jornadas de SIG Libre,

Girona, España. CD ISBN: 978-84-690-3886-9

Use v.surf.bsplinegrass online using onworks.net services