[GRASS-dev] v.surf.idw: a improvement

E. Jorge Tizado ejtizado at ono.com
Mon May 25 14:22:10 EDT 2009


Hi Benjamin,

> I am always in favour of more interpolation methods,
> but could you explain a little more about the advantage
> of your weight term versus that of classical IDW?

The only advantage is avoid the classic circular spot (attach idw.pow.jpg). 
The IDW use a weight = 1/d^2, (Hyperbolic) with infinite value when d -> 0. 
This result in a circular pattern, with other interpolation method it is 
possible obtain a weight average of the points with d near zero (the 
particular point has not the original value, good for robust estimation).

If weigth = exp( - distance^2 / bandwidth^2) Then, when  d->0 weigth -> 1, no 
infinite as in IDW

This is only a proposal to discuss new interpolation methods more interesting 
than inverse squared distance.

> A bit of web searching for  "Interpolation Distance Weight" or
> "Exponential Interpolation" (i.e. related to GIS and spatial
> interpolation). did not produce anything meaningful for me.

The idea is from Geographically Weighted Regression

> Could you point me to some literature where I can find more
> information on this?

The manual of the SPGWR package of R give you some standard weights functions
(http://cran.r-project.org/web/packages/spgwr/index.html). 
The 'exponential' proposed is in the gwr.gauss definition.

I'm testing others.

> IDW is already a geographically weighted method, is it not?
> And it also uses an exponential weight, so why would your version
> be more similar to a regression model? Or do you mean that the
> weight term is more similar to that used by GWR?

Of course, but it is not the unique geographically weighted method.
Geographically Weighted Regression is complex to implement in GRASS but it is 
possible in R with the package spgwr.

> So do I understand right that the weight gets smaller
> as the bandwidth gets larger (given constant distance)?

Yes. Now, no default bandwith distance. Very lower values result in single 
points (perhaps fill with global average?), lower values is similar a voronoi 
triangulation (attach idw.baw1.jpg), high values result a smooth 
interpolation (attach idw.baw2), very high values is a weighted average.

> Is list[n].dist already the squared distance?
> And bw the squared bandwidth?

Yes, see line: list[i].dist = dy * dy + dx * dx; of the original IDW. 
As power param is by default 2.0 the normal interpolation of IDW is by 1/d^4

BW is also squared ( bw = atof( parm.bandw->answer ); bw = bw * bw; )

-- 
E. Jorge Tizado
-------------- next part --------------
A non-text attachment was scrubbed...
Name: idw_baw1.jpg
Type: image/jpeg
Size: 16419 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-dev/attachments/20090525/c07ef189/idw_baw1-0001.jpg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: idw_baw2.jpg
Type: image/jpeg
Size: 12642 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-dev/attachments/20090525/c07ef189/idw_baw2-0001.jpg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: idw_pow.jpg
Type: image/jpeg
Size: 14189 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-dev/attachments/20090525/c07ef189/idw_pow-0001.jpg


More information about the grass-dev mailing list