Re: resampling problem

Hi Desiree,

I cannot see any obvious problem. Make sure that the line
from:

  (linePointCalc.x - lineVector.x, linePointCalc.y - lineVector.y)

to:

  (linePointCalc.x + lineVector.x, linePointCalc.y + lineVector.y)

overlaps the rectangle from (northMin, eastMin) to
(northMax, eastMax).

Good luck,
Bill

On Thu, 15 Apr 2004, Desiree Hilbring wrote:
> until now I resampled an Irregular2DSet resembling a terrain surface, for
> achieving a
> profile line the following way, which worked very well:
>       RealType x2 = RealType.getRealType("x");
>       RealType y2 = RealType.getRealType("y");
>       RealType height2 = RealType.getRealType("height");
>       RealTupleType xy2 = new RealTupleType(x2, y2);
>       FunctionType terrain_type2 = new FunctionType(xy2,height2);
>       Irregular2DSet set2 = new Irregular2DSet(
>                               xy2,
>                       new float[][] { eastValues,northValues });
>       FlatField terrain2 = new FlatField(terrain_type2,set2);
>       terrain2.setSamples(new float[][] { heightValues});
>
>
>       // Why 2000 points? Try and error, it was okay for
>       // dataset with max. 50 points.
>       // The more points, the better fit of the profile to the terrain.
>       double[][] lineCoordinates = new double[2][2000];
>       double j = -1;
>       for (int i = 0; i < 2000; i++) {
>               lineCoordinates[0][i] = linePointCalc.x +j * lineVector.x;
>               lineCoordinates[1][i] = linePointCalc.y +j * lineVector.y;
>               j = j + 0.001;
>       }
>       Gridded2DDoubleSet gridded2DSet
>                               new Gridded2DDoubleSet(xy2,
>                               lineCoordinates, 2000);
>       FlatField line =(FlatField) terrain2.resample(
>                                       gridded2DSet,
>                                       Data.WEIGHTED_AVERAGE,
>                                       Data.NO_ERRORS);
>       System.out.println(line.toString());
>
> Now I have a grid data set with a lot more points so I want to use a
> Linear2DSet as my original data set instead of the Irregular2DSet
> (which is very slow now, because I have many more terrain points):
>
>       RealType eastV =RealType.getRealType("eastValues");
>       RealType northV =RealType.getRealType("northValues");
>       RealType heightV =RealType.getRealType("heightValues");
>       domain_tuple = new RealTupleType(eastV, northV);
>       func_en_h = new FunctionType(domain_tuple,heightV);
>       domain_set = new Linear2DSet(
>                               domain_tuple,
>                               northMin,
>                               northMax,
>                               nRows,
>                               eastMin,
>                               eastMax,
>                               nCols);
>
>       double[][] flat_samples = new double[1][nCols *nRows];
>       for (int c = 0; c < (nRows); c++) {
>               for (int r = 0; r < (nCols); r++) {
>                       // dgm 1 x y z
>                       flat_samples[0][c * nCols + r] =height[c * nCols + r];
>               }
>       }
>       vals_ff = new FlatField(func_en_h, domain_set);
>       vals_ff.setSamples(flat_samples, false);
>
>       // Why 2000 points? Try and error, it was okay for
>       // dataset with max. 50 points.
>       // The more points, the better fit of the profile to the terrain.
>       double[][] lineCoordinates = new double[2][2000];
>       double j = -1;
>       for (int i = 0; i < 2000; i++) {
>               lineCoordinates[0][i] = linePointCalc.x + j *lineVector.x;
>               lineCoordinates[1][i] = linePointCalc.y + j *lineVector.y;
>               j = j + 0.001;
>       }
>
>       Gridded2DDoubleSet gridded2DSet
>               new Gridded2DDoubleSet(domain_tuple,
>                       lineCoordinates, 2000);
>       FlatField line =(FlatField) vals_ff.resample(
>                                       gridded2DSet,
>                                       Data.WEIGHTED_AVERAGE,
>                                       Data.NO_ERRORS);
>       System.out.println(line.toString());
>
> The problem is, that I only get missing values in the FlatField line. What
> am I doing wrong?
> Thanks for your help.
>
> Greetings Desiree
>
>
> oooooooooooooooooooooooooooooooooooooooooooooooo
> Desiree Hilbring
>
> Institut fuer Photogrammetrie und Fernerkundung
> Universitaet Karlsruhe, Germany
> email: hilbring@xxxxxxxxxxxxxxxxxxxx
> # 0721 6083676
> oooooooooooooooooooooooooooooooooooooooooooooooo
>
>
>