private String resolveProductName() { for (List<Band> bandList : variablesList) { if (!bandList.isEmpty()) { for (Band band : bandList) { if (band != null) { return band.getProduct().getName(); } } } } return "Time Series Product"; }
private boolean bandsAndGridsFromMoreThanOneProduct(Band[] allBands, TiePointGrid[] allTiePointGrids) { Set<Product> productSet = new HashSet<>(); if (allBands != null) { for (Band allBand : allBands) { productSet.add(allBand.getProduct()); } } if (allTiePointGrids != null) { for (TiePointGrid allTiePointGrid : allTiePointGrids) { productSet.add(allTiePointGrid.getProduct()); } } return productSet.size() > 1; }
private void writeFileHeader(PrintWriter out, Band[] bands) { ProductData.UTC utc = ProductData.UTC.create(new Date(), 0); out.printf("# Exported transect on %s%n", utc.format()); if (bands.length >= 0) { Product product = bands[0].getProduct(); out.printf("# Product name: %s%n", product.getName()); if (product.getFileLocation() != null) { out.printf("# Product file location: %s%n", product.getFileLocation().getAbsolutePath()); } } out.println(); }
private ExpectedPixel[] createExpectedPixels(Band band, Random random) { ArrayList<Point2D> pointList = ExpectedPixel.createPointList(band.getProduct(), random); final ExpectedPixel[] expectedPixels = new ExpectedPixel[pointList.size()]; for (int i = 0; i < expectedPixels.length; i++) { final Point2D point = pointList.get(i); final int x = (int) point.getX(); final int y = (int) point.getY(); final float value = band.isPixelValid(x, y) ? band.getSampleFloat(x, y) : Float.NaN; expectedPixels[i] = new ExpectedPixel(x, y, value); } return expectedPixels; }
/** * Gets a reader for the geophysical band. * * @param band the band * @return the geophysical band reader, or <code>null</code> if this product doesn't support reading band data or if * the a band with the given name was not found */ public synchronized BandLineReader getBandLineReader(final Band band) { if (bandLineReaderMap == null) { bandLineReaderMap = new java.util.Hashtable<Band, BandLineReader>(); BandLineReader[] bandLineReaders = getBandLineReaders(); final Product product = band.getProduct(); for (BandLineReader bandLineReader : bandLineReaders) { final String bandName = bandLineReader.getBandName(); final Band key = product.getBand(bandName); if (key != null) { bandLineReaderMap.put(key, bandLineReader); } } } return bandLineReaderMap.get(band); }
private static void applySolarFluxFromMetadata(Band band, int spectralIndex) { MetadataElement metadataRoot = band.getProduct().getMetadataRoot(); band.setSolarFlux(getSolarFluxFromMetadata(metadataRoot, spectralIndex)); }
private void fixBandTimeCodings() { for (Band destBand : tsProduct.getBands()) { final String destBandName = destBand.getName(); final Band raster = getSourceBand(destBandName); final TimeCoding timeCoding; if (raster != null) { timeCoding = GridTimeCoding.create(raster.getProduct()); } else { ProductData.UTC time = extractUtcTime(destBandName); timeCoding = new GridTimeCoding(time, time); } rasterTimeMap.put(destBand, timeCoding); } }
private static void setIndexCoding(Band band, IndexCoding indexCoding, boolean rename, String pattern) { if (indexCoding != null) { String indexCodingName = indexCoding.getName(); if (rename) { indexCodingName = pattern.replace(SOURCE_NAME_REFERENCE, indexCodingName); } final Product product = band.getProduct(); if (!product.getIndexCodingGroup().contains(indexCodingName)) { addIndexCoding(product, indexCoding, indexCodingName); } band.setSampleCoding(product.getIndexCodingGroup().get(indexCodingName)); } }
private static void setFlagCoding(Band band, FlagCoding flagCoding, boolean rename, String pattern) { if (flagCoding != null) { String flagCodingName = flagCoding.getName(); if (rename) { flagCodingName = pattern.replace(SOURCE_NAME_REFERENCE, flagCodingName); } final Product product = band.getProduct(); if (!product.getFlagCodingGroup().contains(flagCodingName)) { addFlagCoding(product, flagCoding, flagCodingName); } band.setSampleCoding(product.getFlagCodingGroup().get(flagCodingName)); } }
private static PixelGrid create(final Band b, ProgressMonitor pm) throws IOException { final int w = b.getRasterWidth(); final int h = b.getRasterHeight(); final float[] pixels = new float[w * h]; b.readPixels(0, 0, w, h, pixels, pm); return new PixelGrid(b.getProduct(), b.getName(), w, h, 0.5f, 0.5f, 1.0f, 1.0f, pixels); } }
private static void createNrcsBands() { final ProductNode node = VisatApp.getApp().getSelectedProductNode(); if (!(node instanceof Band)) { return; } Band sourceBand = (Band) node; D d = D.create(sourceBand); if (d == null) { return; } String nrcsExpression = "(" + d.sourceBand.getName() + " * " + d.sourceBand.getName() + " / " + d.extCalFactAttr.getData() + ")" + " * " + "sin(rad(" + d.incidentAngleGrid.getName() + "))"; addVirtualBandToProduct(sourceBand.getProduct(), NRCS_BAND_NAME, nrcsExpression, "1", "Normalised Radar Cross Section"); String nrcsDbExpression = "10 * log10(" + NRCS_BAND_NAME + ")"; addVirtualBandToProduct(sourceBand.getProduct(), NRCS_DB_BAND_NAME, nrcsDbExpression, "dB", "Normalised Radar Cross Section in dB"); }
private static void setFlagCoding(Band band, FlagCoding flagCoding) { if (flagCoding != null) { final String flagCodingName = flagCoding.getName(); final Product product = band.getProduct(); if (!product.getFlagCodingGroup().contains(flagCodingName)) { addFlagCoding(product, flagCoding); } band.setSampleCoding(product.getFlagCodingGroup().get(flagCodingName)); } }
private void initData(final Band latBand, final Band lonBand, final String validMaskExpr, ProgressMonitor pm) throws IOException { if (useTiling) { RenderedImage validMask = null; if (validMaskExpr != null && validMaskExpr.trim().length() > 0 && pixelPosEstimator != null) { validMask = ImageManager.getInstance().getMaskImage(validMaskExpr, latBand.getProduct()); } latLonImage = new LatLonImage(this.latBand.getGeophysicalImage(), this.lonBand.getGeophysicalImage(), validMask, pixelPosEstimator); } else { try { pm.beginTask("Preparing data for pixel based geo-coding...", 4); latGrid = PixelGrid.create(latBand, SubProgressMonitor.create(pm, 1)); lonGrid = PixelGrid.create(lonBand, SubProgressMonitor.create(pm, 1)); if (validMaskExpr != null && validMaskExpr.trim().length() > 0) { final BitRaster validMask = latBand.getProduct().createValidMask(validMaskExpr, SubProgressMonitor.create(pm, 1)); fillInvalidGaps(new RasterDataNode.ValidMaskValidator(rasterHeight, 0, validMask), (float[]) latGrid.getDataElems(), (float[]) lonGrid.getDataElems(), SubProgressMonitor.create(pm, 1)); } } finally { pm.done(); } } }
private void handleFlagCoding(Band sourceBand, Band targetBand, boolean renameComponents, String renamePattern) { if(sourceBand.getFlagCoding() != null) { targetBand.getProduct().getFlagCodingGroup().remove(targetBand.getFlagCoding()); targetBand.setSampleCoding(null); } setFlagCoding(targetBand, sourceBand.getFlagCoding(), renameComponents, renamePattern); }
private void handleIndexCoding(Band sourceBand, Band targetBand, boolean renameComponents, String renamePattern) { if(sourceBand.getIndexCoding() != null) { targetBand.getProduct().getIndexCodingGroup().remove(targetBand.getIndexCoding()); targetBand.setSampleCoding(null); } setIndexCoding(targetBand, sourceBand.getIndexCoding(), renameComponents, renamePattern); }
public static D create(Band sourceBand) { TiePointGrid incidentAngleGrid = sourceBand.getProduct().getTiePointGrid("incident_angle"); if (incidentAngleGrid == null) { VisatApp.getApp().showErrorDialog(DIALOG_TITLE, "Cant find tie-point grid 'incident_angle'."); return null; } MetadataElement ads = sourceBand.getProduct().getMetadataRoot().getElement("MAIN_PROCESSING_PARAMS_ADS"); MetadataAttribute extCalFactAttr = null; if (ads != null) { extCalFactAttr = ads.getAttribute(ATTRIBUTE_EXT_CAL_FACT); if (extCalFactAttr == null) { ads = ads.getElement("MAIN_PROCESSING_PARAMS_ADS.1"); if (ads != null) { extCalFactAttr = ads.getAttribute(ATTRIBUTE_EXT_CAL_FACT); } } } if (extCalFactAttr == null) { VisatApp.getApp().showErrorDialog(DIALOG_TITLE, "Cant find metadata 'MAIN_PROCESSING_PARAMS_ADS/" + ATTRIBUTE_EXT_CAL_FACT + "'."); return null; } return new D(sourceBand, incidentAngleGrid, extCalFactAttr); } }
final Product sourceProduct = sourceBand.getProduct();
public void testSetProductToNullAfterNodeRemoval() { Band band = new Band("b", ProductData.TYPE_INT16, 10, 10); assertNull(band.getOwner()); assertNull(band.getProduct()); final Product p1 = new Product("p1", "t", 10, 10); p1.addBand(band); assertNotNull(band.getOwner()); assertSame(p1, band.getProduct()); p1.removeBand(band); assertNull(band.getOwner()); assertNull(band.getProduct()); final Product p2 = new Product("p2", "t", 10, 10); p2.addBand(band); assertNotNull(band.getOwner()); assertSame(p2, band.getProduct()); p2.removeBand(band); assertNull(band.getOwner()); assertNull(band.getProduct()); }
public void testSetOwnerToNullAfterNodeRemoval() { final ProductNode[] owners = new ProductNode[1]; final Product product = new Product("product", "t", 10, 10); product.addBand("band1", ProductData.TYPE_INT16); final Band addedBand = product.getBandAt(0); product.addProductNodeListener(new ProductNodeListenerAdapter() { @Override public void nodeRemoved(ProductNodeEvent event) { ProductNode sourceNode = event.getSourceNode(); assertSame(addedBand, sourceNode); assertNotNull(sourceNode.getOwner()); } }); assertNotNull(addedBand.getOwner()); assertSame(product, addedBand.getOwner().getProduct()); assertSame(product, addedBand.getProduct()); product.removeBand(addedBand); assertNull(addedBand.getProduct()); assertNull(addedBand.getOwner()); }
@Test public void testCreateStxForMultipleBandsAndRoiMask() throws Exception { final Band testBand1 = createTestBand(ProductData.TYPE_FLOAT64, 10, 10, -100); final Band testBand2 = createTestBand(ProductData.TYPE_FLOAT64, 10, 10, -200); final Mask roiMask = testBand1.getProduct().addMask("validMask", "X < 5", "testValidMask", Color.gray, Double.NaN); final Mask roiMask2 = testBand2.getProduct().addMask("validMask", "X < 5", "testValidMask", Color.gray, Double.NaN); Stx stx = new StxFactory() .withHistogramBinCount(2097152) .create(new Mask[]{roiMask, roiMask2}, new RasterDataNode[]{testBand1, testBand2}, ProgressMonitor.NULL); assertEquals(100, stx.getMinimum(), 1E-3); assertEquals(294, stx.getMaximum(), 1E-3); assertEquals(197, stx.getMean(), 1E-3); assertEquals(274, stx.getHistogram().getPTileThreshold(0.9)[0], 1E-3); assertEquals(194, stx.getHistogram().getPTileThreshold(0.5)[0], 1E-3); assertEquals(114, stx.getHistogram().getPTileThreshold(0.1)[0], 1E-3); }