**-c**- Find best parameters using a cross validation method
**--overwrite**- Force overwrite of output files

**input**=*name*- Name of input vector map
**sparse**=*name*- Name of input vector map of sparse points
**output**=*name*- Name for output vector map
**raster**=*name*- Name for output raster map
**sie**=*float*- Interpolation spline step value in east direction
- Default:
*4* **sin**=*float*- Interpolation spline step value in north direction
- Default:
*4* **type**=*string*- Spline type of interpolation
- Options:
*bilinear,bicubic* - Default:
*bilinear* **lambda_i**=*float*- Thychonov regularization weigth
- Default:
*1* **layer**=*integer*- Field value. If set to 0, z coordinates are used. (3D vector only)
- Default:
*0* **column**=*string*- Attribute table column with values to interpolate (if layer>0)

Interpolation is carried out by adjusting a Least-Squares (LS) system in which the parameters to estime are spline functions. The number of splines doesn't depend on the resolution region, but it depends on the spline steps values in the north-south and west-east directions. These spline steps are set by "

The number of splines has a great influence on two things, mainly. The first thing is the module's execution time. The second is the RAM use. The higher the number of splines, the longer the time of execution and the higher RAM use. A numerical example: 100 splines in each direction imply 10e4 splines in total, that is, a square LS normal matrix of 10e4 size. Inverting this matrix means inverting 100 millions elements! To improve this problems a Tcholebsky method with triangulars matrixes is used in the normal matrix inversion. It has also fixed a maximum number of splines for each direction. However, it is also possible running the module with a higher number of splines. For a number of spline higher than the fixed maximum, the whole region is divided into smaller regions. Each subregion is 150x150 splines wide. To avoid contour problems, the subregions are overlaped one to each other. To estimate a single value within the overlaped zones, a weighted mean considering the point positions into each subregion is carried out.

The required input is a 3d points vector. If nothing is specified z-coordinates will be used in the interpolation. It could be also possible to consider an attribute value by specifying "

A cross validation method has been implemented. It helps to find the optimal lambda_i value that fits the data. It shows the

In a raster map output ("

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

v.surf.bspline input=point_vector raster=interpolate_surface sie=25 sin=25

v.surf.bspline -c input=point_vector

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

v.surf.bspline input=point_vector raster=interpolate_surface layer=1 column=attrib_column

In order to avoid RAM memory problems, an auxiliar table will be needed for recording some intermediate calculi. Since the "

At this time, using the external vector input ("

Maria Antonia Brovelli, Massimiliano Cannata, Ulisse Longoni, Mirko Reguzzoni

Update for GRASS 6.X and improvements:

Roberto Antolin

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)

Brovelli M. A., Cannata M. and Longoni U.M., 2002, DTM LIDAR in area urbana, Bollettino SIFET N.2, 2002, pp. 7-26

*Last changed: $Date: 2007/04/16 21:36:04 $*