private String createToolTip(final TiePointGrid tiePointGrid) { StringBuilder tooltip = new StringBuilder(); append(tooltip, tiePointGrid.getDescription()); append(tooltip, String.format("%d x %d --> %d x %d pixels", tiePointGrid.getGridWidth(), tiePointGrid.getGridHeight(), tiePointGrid.getRasterWidth(), tiePointGrid.getRasterHeight())); if (tiePointGrid.getUnit() != null) { append(tooltip, String.format(" (%s)", tiePointGrid.getUnit())); } return tooltip.toString(); } }
private static float[][] getTiePointGridData(final TiePointGrid tpg) { int gridWidth = tpg.getGridWidth(); int gridHeight = tpg.getGridHeight(); final float[][] data = new float[gridHeight][gridWidth]; final ProductData gridData = tpg.getGridData(); for (int y = 0; y < gridHeight; ++y) { final int stride = y * gridWidth; for (int x = 0; x < gridWidth; ++x) { data[y][x] = gridData.getElemFloatAt(stride + x); } } return data; }
subSamplinX = tpg.getSubSamplingX(); subSamplinY = tpg.getSubSamplingY(); final int width = tpg.getGridWidth(); final int height = tpg.getGridHeight(); final float[] tiePoints = tpg.getTiePoints();
final int w = tpg.getGridWidth(); final int h = tpg.getGridHeight(); final int n = w * h;
/** * Compute polynomial coefficients for quadratic interpolation. For each tie point record, 3 coefficients * are computed. The 3 coefficients are saved in a row in _quadraticInterpCoeffs as {a0, a1, a2}. The * quadratic polynomial is given as f(x) = a0 + a1*x + a2*x^2. */ private synchronized void computeQuadraticInterpCoeffs() { if (quadraticInterpCoeffs != null) return; final int numCoeff = 3; final int width = tpg.getGridWidth(); final int height = tpg.getGridHeight(); final double[][] sampleIndexArray = new double[width][numCoeff]; for (int c = 0; c < width; c++) { final int x = (int) (tpg.getOffsetX() + c * tpg.getSubSamplingX()); sampleIndexArray[c][0] = 1.0; sampleIndexArray[c][1] = (double) (x); sampleIndexArray[c][2] = (double) (x * x); } final Matrix A = new Matrix(sampleIndexArray); quadraticInterpCoeffs = new double[height][numCoeff]; final double[] tiePointArray = new double[width]; for (int r = 0; r < height; r++) { final int rwidth = r * width; for (int c = 0; c < width; c++) { tiePointArray[c] = (double) (tiePoints[rwidth + c]); } final Matrix b = new Matrix(tiePointArray, width); final Matrix x = A.solve(b); quadraticInterpCoeffs[r] = x.getColumnPackedCopy(); } }
addEntry("Geophysical unit:", grid.getUnit(), ""); addEntry("Geophysical data type:", ProductData.getTypeString(grid.getGeophysicalDataType()), ""); addEntry("Grid width:", String.valueOf(grid.getGridWidth()), "tie points"); addEntry("Grid height:", String.valueOf(grid.getGridHeight()), "tie points"); addEntry("Offset X:", String.valueOf(grid.getOffsetX()), "pixels");
incidenceAngleTPG = OperatorUtils.getIncidenceAngle(sourceProduct); targetTPGWidth = latitudeTPG.getGridWidth(); targetTPGHeight = latitudeTPG.getGridHeight();
netCDFWriteable.addDimension(name + 'x', tpg.getGridWidth()); netCDFWriteable.addDimension(name + 'y', tpg.getGridHeight()); netCDFWriteable.addVariable(name, DataType.FLOAT,