NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
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 > > >
visad
archives: