comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Anisotropic smoothing operations
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Anisotropic smoothing operations [message #24831] Thu, 26 April 2001 15:31 Go to previous message
Ben Tupper is currently offline  Ben Tupper
Messages: 186
Registered: August 1999
Senior Member
Craig Markwardt wrote:

>
> Question by an idiot:

You are decidedly not an idiot. You must have meant 'for' not 'by'.

> couldn't you use KRIG2D/TRIANGULATE/TRIGRID for
> this? They're designed to take irregular points to a regular grid and
> filling in the gaps.
>
Yes and no. This is my same old question about gridding data that a ship
collected along a 300km long straight line. The ship stopped every 10-20km
and dropped a thermometer into the water, measuring temperature (and other
things) every 0.5m.

KRIG2D: I would love to use this, but (a) it is very slow for more than
300ish data points and (b) I really don't know how to set the input parameters
so they have a physical meaning.

TRIGRID: This is what we have been using... because the temperature casts are
different lengths the triangulation introduces interpolation where it is
unreasonable to expect any, thus we have to introduce ad hoc masking. This is
identical to the problem Liam encountered recently using MODIS data. In
general terms, this method works (when we mask) for measurements of fields
that have soft and sharp gradients (temperature, salinity) but not so well for
spikes and discontinuities (pigments, plankton cells per unit volume, doughnut
crumbs per unit volume.)

A while back, when I called the newsgroup-hotline for help, quite a number of
nice ideas were suggested. We are simply exploring some other techniques.
Liam provided two different approaches: inverse distance weighting and region
growing (that is the one we are trying now.) You had suggested coming up
with a response function that 'follows' each cast line downward. We haven't
tried that yet

We have seen nice results with the region growing (repeated smoothing) method,
except that the smoothing window must be square. In the water column, vertical
gradients are sharped than horizontal ones; hence the desire to using a
rectangualr smoothing window. I thought, ever the optimistic programmer,
that I would just slip the CONVOL function in the place of SMOOTH. Bonk.

Actually, Jaco, hit on something, the counter (counts the number times a
cell/pixel has been sampled) holds the key. FIRST, start with the entire grid
as ZERO rather than the user defined MISSING value. At the end of the
sprinkle/smooth iterations, simply examine the counter cells that hold '0',
these will be filled with the USER defined MISSING value.

Something like the following is pretty much what the code that Liam sent me
does (except it uses SMOOTH instead of CONVOL). I would add the missing check
at the end.


grid = FltArr(nx,ny)
count = fltarr(nx,ny)
kernal = replicate(1.0, winX, winY)
scale = total(kernal)

For i = 0, n_iterations-1 Do Begin
;sprinkle
grid[dataX, dataY] = dataZ
count[dataX, dataY] = count[DataX, dataY] + 1.0

;smooth
grid = CONVOL(grid, kernal, scale, /edge_truncate)
count = CONVOL(count, kernal, scale, /edge_truncate)

EndFor

;check for missing values
A = where(count eq 0.0, missing_count)
If missing_count GT 0 Then Grid[A] = missing

Thanks,

Ben
--
Ben Tupper
248 Lower Round Pond Road
POB 106
Bristol, ME 04539

Tel: (207) 563-1048
Email: PemaquidRiver@tidewater.net
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: Regridding.
Next Topic: Re: sec : U Re: MPI_Plot Was: Something else

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 13:34:04 PDT 2025

Total time taken to generate the page: 0.00772 seconds