slantRangeGrid.setUnit(Unit.NANOSECONDS);
slantRangeGrid.setUnit(Unit.NANOSECONDS);
private void addTiePointGrids(final Product product) { final int gridWidth = 11; final int gridHeight = 11; final int subSamplingX = product.getSceneRasterWidth() / (gridWidth - 1); final int subSamplingY = product.getSceneRasterHeight() / (gridHeight - 1); final BinaryRecord sceneRec = leaderFile.getSceneRecord(); final TiePointGrid slantRangeGrid = new TiePointGrid(OperatorUtils.TPG_SLANT_RANGE_TIME, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid); if (isProductIPF) { setIPFTiePointGridRasterData(slantRangeGrid); //populate sR grid data } if (sceneRec != null) { final TiePointGrid incidentAngleGrid = new TiePointGrid(OperatorUtils.TPG_INCIDENT_ANGLE, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY); incidentAngleGrid.setDiscontinuity(TiePointGrid.DISCONT_AUTO); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid); } }
slantRangeGrid.setUnit(Unit.NANOSECONDS);
@Override protected void addTiePointGrids(final Product product) { final int gridWidth = 4; final int gridHeight = 4; final double subSamplingX = (double) product.getSceneRasterWidth() / (gridWidth - 1); final double subSamplingY = (double) product.getSceneRasterHeight() / (gridHeight - 1); if (subSamplingX == 0 || subSamplingY == 0) return; final float[] flippedSlantRangeCorners = new float[4]; final float[] flippedIncidenceCorners = new float[4]; getFlippedCorners(product, flippedSlantRangeCorners, flippedIncidenceCorners); if (product.getTiePointGrid(OperatorUtils.TPG_INCIDENT_ANGLE) == null) { final float[] fineAngles = new float[gridWidth * gridHeight]; ReaderUtils.createFineTiePointGrid(2, 2, gridWidth, gridHeight, flippedIncidenceCorners, fineAngles); final TiePointGrid incidentAngleGrid = new TiePointGrid(OperatorUtils.TPG_INCIDENT_ANGLE, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, fineAngles); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid); } final float[] fineSlantRange = new float[gridWidth * gridHeight]; ReaderUtils.createFineTiePointGrid(2, 2, gridWidth, gridHeight, flippedSlantRangeCorners, fineSlantRange); final TiePointGrid slantRangeGrid = new TiePointGrid(OperatorUtils.TPG_SLANT_RANGE_TIME, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, fineSlantRange); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid); addShiftFiles(product); }
private static void addIncidenceAnglesSlantRangeTime(final Product product, final MetadataElement bandElem) { if (bandElem == null) return; final int gridWidth = 11; final int gridHeight = 11; final float subSamplingX = product.getSceneRasterWidth() / (float) (gridWidth - 1); final float subSamplingY = product.getSceneRasterHeight() / (float) (gridHeight - 1); final double nearRangeAngle = bandElem.getAttributeDouble("Near_Incidence_Angle", 0); final double farRangeAngle = bandElem.getAttributeDouble("Far_Incidence_Angle", 0); final double firstRangeTime = bandElem.getAttributeDouble("Zero_Doppler_Range_First_Time", 0) * Constants.oneBillion; final double lastRangeTime = bandElem.getAttributeDouble("Zero_Doppler_Range_Last_Time", 0) * Constants.oneBillion; final float[] incidenceCorners = new float[]{(float) nearRangeAngle, (float) farRangeAngle, (float) nearRangeAngle, (float) farRangeAngle}; final float[] slantRange = new float[]{(float) firstRangeTime, (float) lastRangeTime, (float) firstRangeTime, (float) lastRangeTime}; final float[] fineAngles = new float[gridWidth * gridHeight]; final float[] fineTimes = new float[gridWidth * gridHeight]; ReaderUtils.createFineTiePointGrid(2, 2, gridWidth, gridHeight, incidenceCorners, fineAngles); ReaderUtils.createFineTiePointGrid(2, 2, gridWidth, gridHeight, slantRange, fineTimes); final TiePointGrid incidentAngleGrid = new TiePointGrid(OperatorUtils.TPG_INCIDENT_ANGLE, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, fineAngles); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid); final TiePointGrid slantRangeGrid = new TiePointGrid(OperatorUtils.TPG_SLANT_RANGE_TIME, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, fineTimes); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid); }
private static void addIncidenceAnglesSlantRangeTime(final Product product, final MetadataElement bandElem) { if (bandElem == null) return; final int gridWidth = 11; final int gridHeight = 11; final float subSamplingX = product.getSceneRasterWidth() / (float) (gridWidth - 1); final float subSamplingY = product.getSceneRasterHeight() / (float) (gridHeight - 1); final double nearRangeAngle = bandElem.getAttributeDouble("Near_Incidence_Angle", 0); final double farRangeAngle = bandElem.getAttributeDouble("Far_Incidence_Angle", 0); final double firstRangeTime = bandElem.getAttributeDouble("Zero_Doppler_Range_First_Time", 0) * Constants.oneBillion; final double lastRangeTime = bandElem.getAttributeDouble("Zero_Doppler_Range_Last_Time", 0) * Constants.oneBillion; final float[] incidenceCorners = new float[]{(float)nearRangeAngle, (float)farRangeAngle, (float)nearRangeAngle, (float)farRangeAngle}; final float[] slantRange = new float[]{(float)firstRangeTime, (float)lastRangeTime, (float)firstRangeTime, (float)lastRangeTime}; final float[] fineAngles = new float[gridWidth * gridHeight]; final float[] fineTimes = new float[gridWidth * gridHeight]; ReaderUtils.createFineTiePointGrid(2, 2, gridWidth, gridHeight, incidenceCorners, fineAngles); ReaderUtils.createFineTiePointGrid(2, 2, gridWidth, gridHeight, slantRange, fineTimes); final TiePointGrid incidentAngleGrid = new TiePointGrid(OperatorUtils.TPG_INCIDENT_ANGLE, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, fineAngles); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid); final TiePointGrid slantRangeGrid = new TiePointGrid(OperatorUtils.TPG_SLANT_RANGE_TIME, gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, fineTimes); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid); }
gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, rangeTime); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid); gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, angles); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid);
gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, rangeTime); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid); gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, angles); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid);
gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, rangeTime); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid); gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, angles); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid);
latGrid = new TiePointGrid(pre + OperatorUtils.TPG_LATITUDE, newGridWidth, newGridHeight, 0.5f, 0.5f, subSamplingX, subSamplingY, newLatList); latGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(latGrid); lonGrid = new TiePointGrid(pre + OperatorUtils.TPG_LONGITUDE, newGridWidth, newGridHeight, 0.5f, 0.5f, subSamplingX, subSamplingY, newLonList, TiePointGrid.DISCONT_AT_180); lonGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(lonGrid); final TiePointGrid incidentAngleGrid = new TiePointGrid(pre + OperatorUtils.TPG_INCIDENT_ANGLE, newGridWidth, newGridHeight, 0.5f, 0.5f, subSamplingX, subSamplingY, newIncList); incidentAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(incidentAngleGrid); final TiePointGrid elevAngleGrid = new TiePointGrid(pre + OperatorUtils.TPG_ELEVATION_ANGLE, newGridWidth, newGridHeight, 0.5f, 0.5f, subSamplingX, subSamplingY, newElevList); elevAngleGrid.setUnit(Unit.DEGREES); product.addTiePointGrid(elevAngleGrid); final TiePointGrid slantRangeGrid = new TiePointGrid(pre + OperatorUtils.TPG_SLANT_RANGE_TIME, newGridWidth, newGridHeight, 0.5f, 0.5f, subSamplingX, subSamplingY, newslrtList); slantRangeGrid.setUnit(Unit.NANOSECONDS); product.addTiePointGrid(slantRangeGrid);
public static TiePointGrid createTiePointGrid(final Variable variable, final int gridWidth, final int gridHeight, final int sceneWidth, final int sceneHeight) throws IOException { final NcAttributeMap attMap = NcAttributeMap.create(variable); final double subSamplingX = (double) sceneWidth / (double) (gridWidth - 1); final double subSamplingY = (double) sceneHeight / (double) (gridHeight - 1); final Array data = variable.read(); final float[] dataArray = new float[(int) data.getSize()]; //(float[])data.copyTo1DJavaArray(); for (int i = 0; i < data.getSize(); ++i) { dataArray[i] = data.getFloat(i); } final TiePointGrid tpg = new TiePointGrid(variable.getShortName(), gridWidth, gridHeight, 0, 0, subSamplingX, subSamplingY, dataArray); tpg.setDescription(getDescription(variable, attMap)); tpg.setUnit(getUnit(variable, attMap)); tpg.setScalingFactor(getScalingFactor(attMap)); tpg.setScalingOffset(getAddOffset(attMap)); final Number noDataValue = getNoDataValue(attMap); if (noDataValue != null) { tpg.setNoDataValue(noDataValue.doubleValue()); tpg.setNoDataValueUsed(true); } return tpg; }
subSamplingX, subSamplingY, incidenceAngleList); incidentAngleGrid.setUnit(Unit.DEGREES);
subSamplingX, subSamplingY, incidenceAngleList); incidentAngleGrid.setUnit(Unit.DEGREES);