Re: warping space

"From: Bill Hibbard " wrote:

> where samples is an array float[3][number_of_samples].
> Before the constructor call, put in a loop like:
>
>   for (int i=0; i<number_of_samples; i++) {
>     float x = samples[0][i];
>     float y = samples[1][i];
>     float z_surface = some_function_of(x, y);
>     samples[2][i] = z_surface - samples[2][i];
>   }
>   Set set = new Gridded3DSet(set_type, samples, ...);
>
> This will convert your surface-relative depths to altitude
> above sea level, which can be converted to any other
> absolute depth measure.

thanks, bill.

it occurs to me that i may have a way of doing this that doesn't involve
creating a new Gridded3DSet.  it depends on whether i grok the semantics of
getSamples().

my data are handed to me in a netCDF file, and i'm using Plain to extract
'em.

if i plunge down through the various constructs in my data, i eventually
reach something that looks like:

            Tuple aDay = (Tuple) (modelRun.getSample(0));
            // there's an extraneous datum in the tuple, so we get component
1, not 0
            FlatField aGrid = (FlatField) (aDay.getComponent(1));
            Gridded3DSet aDomain = (Gridded3DSet) (aGrid.getDomainSet());
            float[][] samples = aDomain.getSamples(false); // don't copy
            int number_of_samples = samples[0].length;

now, if i understand how the copy parameter to getSamples works, i can just
dive into the for-loop you describe above.  it'll reach in and convert depth
to altitude on the existing data set, no?

rw





  • 2000 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: