/** * This method copies selected tie point grids to a rescaled target product * * @param sourceProduct - the source product * @param targetProduct - the target product * @param xScalingFactor - scaling factor in x-direction * @param yScalingFactor - scaling factor in y-direction */ public static void copyRescaledTiePointGrids( Product sourceProduct, Product targetProduct, int xScalingFactor, int yScalingFactor) { // Add tie point grids for sun/view zenith/azimuths. Get data from AATSR bands. final Band szaBand = sourceProduct.getBand("sun_elev_nadir_" + SynergyConstants.INPUT_BANDS_SUFFIX_AATSR); final Band saaBand = sourceProduct.getBand("sun_azimuth_nadir_" + SynergyConstants.INPUT_BANDS_SUFFIX_AATSR); final Band latitudeBand = sourceProduct.getBand("latitude_" + SynergyConstants.INPUT_BANDS_SUFFIX_AATSR); final Band longitudeBand = sourceProduct.getBand("longitude_" + SynergyConstants.INPUT_BANDS_SUFFIX_AATSR); final Band altitudeBand = sourceProduct.getBand("altitude_" + SynergyConstants.INPUT_BANDS_SUFFIX_AATSR); final TiePointGrid szaTpg = getRescaledTpgFromBand(szaBand, xScalingFactor, yScalingFactor); targetProduct.addTiePointGrid(szaTpg); final TiePointGrid saaTpg = getRescaledTpgFromBand(saaBand, xScalingFactor, yScalingFactor); targetProduct.addTiePointGrid(saaTpg); final TiePointGrid latTpg = getRescaledTpgFromBand(latitudeBand, xScalingFactor, yScalingFactor); targetProduct.addTiePointGrid(latTpg); final TiePointGrid lonTpg = getRescaledTpgFromBand(longitudeBand, xScalingFactor, yScalingFactor); targetProduct.addTiePointGrid(lonTpg); final TiePointGrid altTpg = getRescaledTpgFromBand(altitudeBand, xScalingFactor, yScalingFactor); targetProduct.addTiePointGrid(altTpg); }
protected void addTiePointGridsToProduct(final Product product) { final GeoCoding geoCoding = getSourceProduct().getGeoCoding(); final String latGridName; final String lonGridName; if (geoCoding instanceof TiePointGeoCoding) { final TiePointGeoCoding tiePointGeoCoding = (TiePointGeoCoding) geoCoding; final TiePointGrid latGrid = tiePointGeoCoding.getLatGrid(); final TiePointGrid lonGrid = tiePointGeoCoding.getLonGrid(); latGridName = latGrid.getName(); lonGridName = lonGrid.getName(); } else { latGridName = null; lonGridName = null; } for (int i = 0; i < getSourceProduct().getNumTiePointGrids(); i++) { final TiePointGrid sourceTiePointGrid = getSourceProduct().getTiePointGridAt(i); final String gridName = sourceTiePointGrid.getName(); if (isNodeAccepted(gridName) || (gridName.equals(latGridName) || gridName.equals(lonGridName))) { final TiePointGrid tiePointGrid = TiePointGrid.createSubset(sourceTiePointGrid, getSubsetDef()); if (isFullScene(getSubsetDef()) && sourceTiePointGrid.isStxSet()) { copyStx(sourceTiePointGrid, tiePointGrid); } product.addTiePointGrid(tiePointGrid); copyImageInfo(sourceTiePointGrid, tiePointGrid); } } }
private static Product createProduct() throws Exception { Product product = new Product("p", "t", 32, 256); final TiePointGrid lat = new TiePointGrid("lat", 2, 2, 0f, 0f, 32f, 256f, new float[] {+40f, +40f, -40f, -40f}); final TiePointGrid lon = new TiePointGrid("lon", 2, 2, 0f, 0f, 32f, 256f, new float[] {-80f, +80f, -80f, +80f}); product.addTiePointGrid(lat); product.addTiePointGrid(lon); product.setGeoCoding(new TiePointGeoCoding(lat, lon)); product.setPreferredTileSize(32, 16); product.setStartTime(ProductData.UTC.parse("2003-01-01", "yyyy-MM-dd")); product.setEndTime(ProductData.UTC.parse("2003-01-02", "yyyy-MM-dd")); return product; }
private static void addTpg(Product targetProduct, Band scaledBand, String name) { DataBuffer dataBuffer; float[] tpgData; TiePointGrid tpg; dataBuffer = scaledBand.getSourceImage().getData().getDataBuffer(); tpgData = new float[dataBuffer.getSize()]; for (int i = 0; i < dataBuffer.getSize(); i++) { tpgData[i] = dataBuffer.getElemFloat(i); } tpg = new TiePointGrid( name, scaledBand.getSceneRasterWidth(), scaledBand.getSceneRasterHeight(), 0.0f, 0.0f, 1.0f, 1.0f, tpgData); targetProduct.addTiePointGrid(tpg); }