[STATSGRASS] IDW when d=0?
Roger Bivand
Roger.Bivand at nhh.no
Thu Dec 4 03:30:00 EST 2003
On Thu, 4 Dec 2003, Hamish wrote:
> Hi,
>
> Using an Inverse Distance Weighting formula, such as this one ..
>
> http://gis.nrcan.gc.ca/~viljoen/gis/interp/idw.ht1.jpg
>
> .. what happens when d=0? You want weighting to be huge when you are
> right on top of the interpolation spot, but not DIV0!
>
> I can change all 0's to 1's as my distances extend to 1000, but that's
> just a cheap hack and doesn't solve the general case.
Burrough & McDonnell (1998, p. 117) say: "Because in equation 5.16, f(d)
-> Inf as d -> 0, the value for an interpolation point that coincides with
a data point must be simply copied over." (Eq. 5.16 is:
\hat{z}(x_0) = \frac{\sum_{i=1}^n z(x_i) d_{i0}^{-r}} {\sum_{i=1}^n d_{i0}^{-r}}
where close-to-zero d_{i0}^{-r] becomes Inf, and so the sums blow up)
So a test would be: if d_{i0} < tol, then copy z(x_i) to z(x_0), and
forget all the other points.
I can't see any such test for small d_{i0} in sites/s.surf.idw/cmd/main.c
(5.0.3 release) - is that what you were wondering?
Sorry, too quick (l. 205):
if(dist = list[n].dist)
tests zero, then z(i) is copied through, but I think the test is fragile,
wouldn't it be better to test against machine precision?
It also seems to set r to 2 without saying, and I don't know that it
checks to make sure that we are on the plane (I can't see a trap for
non-projected locations).
Roger
>
>
>
> thanks for any ideas,
> Hamish
>
> _______________________________________________
> statsgrass mailing list
> statsgrass at grass.itc.it
> http://grass.itc.it/mailman/listinfo/statsgrass
>
--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand at nhh.no
More information about the grass-stats
mailing list