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
>
>
>