/** * This method copies selected tie point grids to a downscaled target product * * @param sourceProduct - the source product * @param targetProduct - the target product * @param scalingFactor - factor of downscaling */ public static void copyDownscaledTiePointGrids( Product sourceProduct, Product targetProduct, float scalingFactor) { // 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 Band szaDownscaledBand = downscaleBand(szaBand, scalingFactor); final Band saaDownscaledBand = downscaleBand(saaBand, scalingFactor); final Band latitudeDownscaledBand = downscaleBand(latitudeBand, scalingFactor); final Band longitudeDownscaledBand = downscaleBand(longitudeBand, scalingFactor); final Band altitudeDownscaledBand = downscaleBand(altitudeBand, scalingFactor); addTpg(targetProduct, szaDownscaledBand, "sun_zenith"); addTpg(targetProduct, saaDownscaledBand, "sun_azimuth"); // unscaled latitude/longitude TPGs were added by 'copyGeoCoding', we have to remove them before // downscaling targetProduct.removeTiePointGrid(targetProduct.getTiePointGrid("latitude")); targetProduct.removeTiePointGrid(targetProduct.getTiePointGrid("longitude")); addTpg(targetProduct, latitudeDownscaledBand, "latitude"); addTpg(targetProduct, longitudeDownscaledBand, "longitude"); addTpg(targetProduct, altitudeDownscaledBand, "altitude"); }