private String writeDate() { if (srcProduct.getStartTime() != null) { Calendar cal = srcProduct.getStartTime().getAsCalendar(); return cal.get(Calendar.YEAR) + " " + (cal.get(Calendar.MONTH) + 1) + " " + cal.get(Calendar.DAY_OF_MONTH); } return ""; }
private String writeStartTime() { if (srcProduct.getStartTime() != null) { double diff = srcProduct.getStartTime().getMJD() - dateDay.getMJD(); double seconds = diff * daysToSeconds; return seconds + tab + 's'; } return ""; }
private String writeCenterTime() { if (srcProduct.getStartTime() != null) { double center = (srcProduct.getStartTime().getMJD() + (srcProduct.getEndTime().getMJD() - srcProduct.getStartTime().getMJD()) / 2.0); double seconds = (center - dateDay.getMJD()) * daysToSeconds; return seconds + tab + 's'; } return ""; }
public HeaderWriter(final GammaProductWriter writer, final Product srcProduct, final File userOutputFile) { this.writer = writer; this.srcProduct = srcProduct; this.isComplex = false; this.isCoregistered = false; absRoot = AbstractMetadata.getAbstractedMetadata(srcProduct); if (absRoot != null) { try { isComplex = absRoot.getAttributeString(AbstractMetadata.SAMPLE_TYPE).equals("COMPLEX"); isCoregistered = AbstractMetadata.getAttributeBoolean(absRoot, AbstractMetadata.coregistered_stack); } catch (Exception e) { SystemUtils.LOG.severe("Unable to read metadata " + e.getMessage()); } } this.outputFile = createParFile(userOutputFile); this.baseFileName = FileUtils.getFilenameWithoutExtension(this.outputFile); if (srcProduct.getStartTime() != null) { Calendar cal = srcProduct.getStartTime().getAsCalendar(); String dateStr = String.valueOf(cal.get(Calendar.DAY_OF_MONTH)) + '-' + (cal.get(Calendar.MONTH) + 1) + '-' + cal.get(Calendar.YEAR); try { dateDay = ProductData.UTC.parse(dateStr, "dd-MM-yyyy"); } catch (Exception e) { dateDay = srcProduct.getStartTime(); } } }
private TimeSeriesTimes getProductTimes() { final boolean isCoreg = StackUtils.isCoregisteredStack(currentProduct); if (isCoreg) { final ProductData.UTC[] coregTimes = StackUtils.getProductTimes(currentProduct); return new TimeSeriesTimes(coregTimes); } else { final List<Product> products = new ArrayList<>(100); // get all times for all lists for (GraphData data : settings.getGraphDataList()) { products.addAll(Arrays.asList(data.getProducts())); } final ArrayList<ProductData.UTC> utcList = new ArrayList<>(products.size()); for (Product prod : products) { utcList.add(prod.getStartTime()); } return new TimeSeriesTimes(utcList.toArray(new ProductData.UTC[utcList.size()])); } }
public File retrieveOrbitFile(final String orbitType) throws Exception { delftReader = OrbitalDataRecordReader.getInstance(); // get product start time final Date startDate = sourceProduct.getStartTime().getAsDate(); // find orbit file in the folder orbitFile = FindDelftOrbitFile(delftReader, startDate); if (orbitFile == null) { throw new IOException("Unable to find suitable orbit file.\n" + "Please refer to http://www.deos.tudelft.nl/ers/precorbs/orbits/ \n" + "ERS1 orbits are available until 1996\n" + "ERS2 orbits are available until 2003\n" + "ENVISAT orbits are available until 2008"); } return orbitFile; }
private ProductData.UTC getSourceMeanTime() { ProductData.UTC startTime = sourceProduct.getStartTime(); ProductData.UTC endTime = sourceProduct.getEndTime(); ProductData.UTC meanTime; if (startTime != null && endTime != null) { meanTime = new ProductData.UTC(0.5 * (startTime.getMJD() + endTime.getMJD())); } else if (startTime != null) { meanTime = startTime; } else if (endTime != null) { meanTime = endTime; } else { meanTime = null; } return meanTime; }
public int getIndex(final Band band) { final Product product = band.getProduct(); if (StackUtils.isCoregisteredStack(product)) { ProductData.UTC slaveTime = getSlaveTime(product, band); if(slaveTime != null) { return getIndex(slaveTime); } if (foundInMaster(product, band)) { return 0; } } return getIndex(product.getStartTime()); }
private Product createTargetProduct(Product sourceProduct, String name, String type) { final int sceneWidth = sourceProduct.getSceneRasterWidth(); final int sceneHeight = sourceProduct.getSceneRasterHeight(); Product targetProduct = new Product(name, type, sceneWidth, sceneHeight); ProductUtils.copyGeoCoding(sourceProduct, targetProduct); targetProduct.setStartTime(sourceProduct.getStartTime()); targetProduct.setEndTime(sourceProduct.getEndTime()); return targetProduct; }
private Product createTargetProduct(String name, String type) { final int sceneWidth = s2ClassifProduct.getSceneRasterWidth(); final int sceneHeight = s2ClassifProduct.getSceneRasterHeight(); Product targetProduct = new Product(name, type, sceneWidth, sceneHeight); ProductUtils.copyGeoCoding(s2ClassifProduct, targetProduct); targetProduct.setStartTime(s2ClassifProduct.getStartTime()); targetProduct.setEndTime(s2ClassifProduct.getEndTime()); return targetProduct; }
private Product createTargetProduct() { final int sceneWidth = sourceProduct.getSceneRasterWidth(); final int sceneHeight = sourceProduct.getSceneRasterHeight(); Product targetProduct = new Product(TARGET_PRODUCT_NAME, TARGET_PRODUCT_TYPE, sceneWidth, sceneHeight); ProductUtils.copyGeoCoding(sourceProduct, targetProduct); targetProduct.setStartTime(sourceProduct.getStartTime()); targetProduct.setEndTime(sourceProduct.getEndTime()); return targetProduct; }
@Override protected void prepareInputs() throws OperatorException { super.prepareInputs(); final Product sourceProduct = getSourceProduct(); ensureSingleRasterSize(sourceProduct); sceneGeoCoding = sourceProduct.getSceneGeoCoding(); final double mjd = sourceProduct.getStartTime().getMJD(); int dayOfYear = ((int)(mjd % 365.25)) + 1; try { Product climatologiesProduct = null; try { if (StringUtils.isNotNullAndNotEmpty(climatologiesFile)) { climatologiesProduct = ProductIO.readProduct(climatologiesFile); } } catch(IOException e) { climatologiesProduct = null; } aerosolTypeProvider = new AerosolTypeProvider(dayOfYear, climatologiesProduct); } catch (IOException e) { throw new OperatorException("Could not determine aerosol type: " + e.getMessage()); } }
private void updateTimeValues() { final ProductData.UTC utcStartTime = currentProduct.getStartTime(); final ProductData.UTC utcEndTime = currentProduct.getEndTime(); boolean isAvailable = currentProduct.isMultiSize() ? isSampleValueAvailableInScene() : isSampleValueAvailableInRaster() ; if (utcStartTime == null || utcEndTime == null || !isAvailable) { timeModel.updateValue("No date information", 0); timeModel.updateValue("No time information", 1); } else { final ProductData.UTC utcCurrentLine; if(currentProduct.isMultiSize()) { utcCurrentLine = ProductUtils.getPixelScanTime(currentProduct, levelZeroSceneX + 0.5, levelZeroSceneY + 0.5); } else { utcCurrentLine = ProductUtils.getPixelScanTime(currentRaster, levelZeroRasterX + 0.5, levelZeroRasterY + 0.5); } Assert.notNull(utcCurrentLine, "utcCurrentLine"); final Calendar currentLineTime = utcCurrentLine.getAsCalendar(); final String dateString = String.format("%1$tF", currentLineTime); final String timeString = String.format("%1$tI:%1$tM:%1$tS:%1$tL %1$Tp", currentLineTime); timeModel.updateValue(dateString, 0); timeModel.updateValue(timeString, 1); } }
@Override protected void prepareInputs() throws OperatorException { super.prepareInputs(); final Product sourceProduct = getSourceProduct(); for (String requiredInputBandName : REQUIRED_INPUT_BAND_NAMES) { if (sourceProduct.getBand(requiredInputBandName) == null) { throw new OperatorException("Required band " + requiredInputBandName + " is not in source product"); } } final double mjd = getSourceProduct().getStartTime().getMJD(); final int julianDay = DAYS_FROM_1_1_1950_TO_31_12_1999 + ((int) (mjd + 0.5)); int dayOfYear = ((int)(mjd % 365.25)) + 1; final double distanceCorrection = getDistanceCorrection(dayOfYear); final double conversionFactor = getConversionFactor(julianDay) / distanceCorrection; conversionFactorB8A = conversionFactor * SOLAR_SPECTRAL_IRRADIANCE_B_8_A; conversionFactorB9 = conversionFactor * SOLAR_SPECTRAL_IRRADIANCE_B_9; try { waterVapourLut = WaterVapourLUTAccessor.readLut(); } catch (IOException e) { throw new OperatorException(e.getMessage()); } }
private void createTargetProduct() { targetProduct = new Product(sourceProduct.getName() + PRODUCT_SUFFIX, sourceProduct.getProductType(), targetImageWidth, targetImageHeight); addSelectedBands(); ProductUtils.copyMetadata(sourceProduct, targetProduct); //ProductUtils.copyTiePointGrids(sourceProduct, targetProduct); ProductUtils.copyFlagCodings(sourceProduct, targetProduct); //ProductUtils.copyGeoCoding(sourceProduct, targetProduct); targetProduct.setStartTime(sourceProduct.getStartTime()); targetProduct.setEndTime(sourceProduct.getEndTime()); addGeoCoding(); updateTargetProductMetadata(); final int sourceImageTileWidth = sourceImageWidth; final int sourceImageTileHeight = Math.min((int) (prf + 0.5), sourceImageHeight); final int targetImageTileWidth = (int) (sourceImageTileWidth * widthRatio + 0.5f); final int targetImageTileHeight = (int) (sourceImageTileHeight * heightRatio + 0.5f); if (usePRFTileSize) { targetProduct.setPreferredTileSize(targetImageTileWidth, targetImageTileHeight); } }
/** * Create target product. */ private void createTargetProduct() { targetProduct = new Product(sourceProduct.getName() + PRODUCT_SUFFIX, sourceProduct.getProductType(), targetImageWidth, targetImageHeight); OperatorUtils.addSelectedBands( sourceProduct, sourceBandNames, targetProduct, targetBandNameToSourceBandName, false, true); ProductUtils.copyMetadata(sourceProduct, targetProduct); ProductUtils.copyFlagCodings(sourceProduct, targetProduct); targetProduct.setStartTime(sourceProduct.getStartTime()); targetProduct.setEndTime(sourceProduct.getEndTime()); addGeoCoding(); updateTargetProductMetadata(); }
private static Product buildLandCoverProduct(Product sourceProduct, String landCoverName) throws Exception { Product landCoverProduct = new Product(sourceProduct.getName(), sourceProduct.getProductType(), sourceProduct.getSceneRasterWidth(), sourceProduct.getSceneRasterHeight()); landCoverProduct.setStartTime(sourceProduct.getStartTime()); landCoverProduct.setEndTime(sourceProduct.getEndTime()); landCoverProduct.setNumResolutionsMax(sourceProduct.getNumResolutionsMax()); ProductUtils.copyMetadata(sourceProduct, landCoverProduct); ProductUtils.copyGeoCoding(sourceProduct, landCoverProduct); ProductUtils.copyTiePointGrids(sourceProduct, landCoverProduct); ProductUtils.copyVectorData(sourceProduct, landCoverProduct); AddLandCoverOp.LandCoverParameters param = new AddLandCoverOp.LandCoverParameters(landCoverName, ResamplingFactory.NEAREST_NEIGHBOUR_NAME); AddLandCoverOp.AddLandCover(landCoverProduct, param); return landCoverProduct; }
/** * Create target product. */ void createTargetProduct() { targetProduct = new Product(sourceProduct.getName(), sourceProduct.getProductType(), sourceProduct.getSceneRasterWidth(), sourceProduct.getSceneRasterHeight()); ProductUtils.copyMetadata(sourceProduct, targetProduct); ProductUtils.copyTiePointGrids(sourceProduct, targetProduct); ProductUtils.copyFlagCodings(sourceProduct, targetProduct); ProductUtils.copyGeoCoding(sourceProduct, targetProduct); ProductUtils.copyMasks(sourceProduct, targetProduct); ProductUtils.copyVectorData(sourceProduct, targetProduct); targetProduct.setStartTime(sourceProduct.getStartTime()); targetProduct.setEndTime(sourceProduct.getEndTime()); targetProduct.setDescription(sourceProduct.getDescription()); }
public static Product extractBands(Product sourceProduct, String[] sourceBandNames, String[] sourceMaskNames) { Product product = new Product(sourceProduct.getName(), sourceProduct.getProductType(), sourceProduct.getSceneRasterWidth(), sourceProduct.getSceneRasterHeight()); product.setStartTime(sourceProduct.getStartTime()); product.setEndTime(sourceProduct.getEndTime()); product.setNumResolutionsMax(sourceProduct.getNumResolutionsMax()); ProductUtils.copyMetadata(sourceProduct, product); ProductUtils.copyGeoCoding(sourceProduct, product); ProductUtils.copyTiePointGrids(sourceProduct, product); ProductUtils.copyVectorData(sourceProduct, product); if (sourceMaskNames != null && sourceMaskNames.length > 0) { ProductHelper.copyMasks(sourceProduct, product, sourceMaskNames); } for (int i=0; i<sourceBandNames.length; i++) { Band sourceBand = sourceProduct.getBand(sourceBandNames[i]); String sourceBandName = sourceBand.getName(); String targetBandName = sourceBandName; ProductUtils.copyBand(sourceBandName, sourceProduct, targetBandName, product, true); Band targetBand = product.getBand(targetBandName); ProductUtils.copyGeoCoding(sourceBand, targetBand); } return product; }
@Override public void initialize() throws OperatorException { sourceRasterWidth = lowresProduct.getSceneRasterWidth(); sourceRasterHeight = lowresProduct.getSceneRasterHeight(); int targetWidth = hiresProduct.getSceneRasterWidth(); int targetHeight = hiresProduct.getSceneRasterHeight(); offset = scale / 2; String targetProductName = lowresProduct.getName(); String targetProductType = lowresProduct.getProductType(); targetProduct = new Product(targetProductName, targetProductType, targetWidth, targetHeight); targetProduct.setStartTime(hiresProduct.getStartTime()); targetProduct.setEndTime(hiresProduct.getEndTime()); targetProduct.setPointingFactory(hiresProduct.getPointingFactory()); ProductUtils.copyMetadata(lowresProduct, targetProduct); ProductUtils.copyTiePointGrids(hiresProduct, targetProduct); ProductUtils.copyGeoCoding(hiresProduct, targetProduct); copyBands(lowresProduct, targetProduct); for (int i = 0; i < lowresProduct.getMaskGroup().getNodeCount(); i++) { Mask lowresMask = lowresProduct.getMaskGroup().get(i); targetProduct.getMaskGroup().add(lowresMask); } setTargetProduct(targetProduct); }