private Band createTargetBand(Product product, H5ScalarDS scalarDS, String bandName, int dataType) throws Exception { final List<Attribute> metadata = scalarDS.getMetadata(); final float scaleFactorAttr = ProbaVUtils.getFloatAttributeValue(metadata, "SCALE"); final float scaleFactor = Float.isNaN(scaleFactorAttr) ? 1.0f : scaleFactorAttr; final float scaleOffsetAttr = ProbaVUtils.getFloatAttributeValue(metadata, "OFFSET"); final float scaleOffset = Float.isNaN(scaleOffsetAttr) ? 0.0f : scaleOffsetAttr; final Band band = product.addBand(bandName, dataType); band.setScalingFactor(scaleFactor); band.setScalingOffset(scaleOffset); return band; }
private Band createTargetBand(Product product, H5ScalarDS scalarDS, String bandName, int dataType) throws Exception { final List<Attribute> metadata = scalarDS.getMetadata(); final float scaleFactorAttr = ProbaVUtils.getFloatAttributeValue(metadata, "SCALE"); final float scaleFactor = Float.isNaN(scaleFactorAttr) ? 1.0f : scaleFactorAttr; final float scaleOffsetAttr = ProbaVUtils.getFloatAttributeValue(metadata, "OFFSET"); final float scaleOffset = Float.isNaN(scaleOffsetAttr) ? 0.0f : scaleOffsetAttr; final Band band = product.addBand(bandName, dataType); band.setScalingFactor(1.0 / scaleFactor); band.setScalingOffset(-1.0 * scaleOffset / scaleFactor); return band; }
private Band addBand(Product product, BandReader bandReader, int channelIndex) { final Band band = product.addBand(bandReader.getBandName(), bandReader.getDataType()); band.setScalingFactor(bandReader.getScalingFactor()); band.setUnit(bandReader.getBandUnit()); band.setDescription(bandReader.getBandDescription()); band.setSpectralBandIndex(channelIndex + 1); band.setValidPixelExpression(band.getName() + " != NaN"); bandReaderMap.put(band, bandReader); return band; }
private Band createBand(Product product, int type, double scalingFactor, double scalingOffset, boolean log10scaled) { final Band node = new Band("b", type, 10, 10); node.setScalingFactor(scalingFactor); node.setScalingOffset(scalingOffset); node.setLog10Scaled(log10scaled); product.addBand(node); return node; }
@Override protected Product readProductNodesImpl() throws IOException { Product product = new Product("A", "B", SIZE, SIZE, this); if (projected) { setMapGeoCoding(product); } // (1) A "normal" band, whose source image is implicitly created by framework product.addBand("B1", ProductData.TYPE_FLOAT32); // (2) A band whose source image is set explicitly Band b2 = product.addBand("B2", ProductData.TYPE_UINT8); b2.setSourceImage(new BufferedImage(SIZE, SIZE, BufferedImage.TYPE_BYTE_GRAY)); b2.setScalingFactor(0.05); return product; }
private static Band _createIntegerBand(int type, int i0, double scalingFactor) { Product product = new Product("n", "t", W, H); Band band = product.addBand("x", type); band.setScalingFactor(scalingFactor); ProductData rasterData = band.createCompatibleRasterData(); for (int i = 0; i < N; i++) { rasterData.setElemDoubleAt(i, i0 + i); } band.setRasterData(rasterData); return band; } }
private Band createBand(double factor, double offset, boolean log10Scaled) { Product p = new Product("n", "t", 2, 2); Band band = p.addBand("b", ProductData.TYPE_INT8); band.setScalingFactor(factor); band.setScalingOffset(offset); band.setLog10Scaled(log10Scaled); band.setSourceImage(createSourceImage()); return band; }
private static Band _createFloatingPointBand(int type, double scalingFactor, boolean dataValueUsed, double noDataValue) { Product product = new Product("n", "t", W, H); Band band = product.addBand("x", type); band.setScalingFactor(scalingFactor); band.setGeophysicalNoDataValue(noDataValue); band.setNoDataValueUsed(dataValueUsed); ProductData rasterData = band.createCompatibleRasterData(); for (int i = 0; i < N; i++) { rasterData.setElemDoubleAt(i, (i + 1) + 0.1); } band.setRasterData(rasterData); return band; }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(255 * scalingFactor, sampleConverter.toGeoPhysical(255), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(128 * scalingFactor, sampleConverter.toGeoPhysical(128), 1.0e-6); }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue * scalingFactor, sampleConverter.toGeoPhysical(maxRawValue), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(minRawValue * scalingFactor, sampleConverter.toGeoPhysical(minRawValue), 1.0e-6); }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(127 * scalingFactor, sampleConverter.toGeoPhysical(127), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(-128 * scalingFactor, sampleConverter.toGeoPhysical(-128), 1.0e-6); }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue * scalingFactor, sampleConverter.toGeoPhysical(maxRawValue), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(minRawValue * scalingFactor, sampleConverter.toGeoPhysical(minRawValue), 1.0e-6); }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue * scalingFactor, sampleConverter.toGeoPhysical(maxRawValue), 1.0e-6); assertEquals(-356 * scalingFactor, sampleConverter.toGeoPhysical(-356), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(minRawValue * scalingFactor, sampleConverter.toGeoPhysical(minRawValue), 1.0e-6); }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue * scalingFactor, sampleConverter.toGeoPhysical(maxRawValue), 1.0e-6); assertEquals(-356 * scalingFactor, sampleConverter.toGeoPhysical(-356), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(minRawValue * scalingFactor, sampleConverter.toGeoPhysical(minRawValue), 1.0e-6); }
@Test public void testToRaw_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue / 1.1, sampleConverter.toRaw(maxRawValue), 1.0e-6); assertEquals(-356 / 1.1, sampleConverter.toRaw(-356), 1.0e-6); assertEquals(0 / 1.1, sampleConverter.toRaw(0), 1.0e-6); assertEquals(10.8 / 1.1, sampleConverter.toRaw(10.8), 1.0e-6); assertEquals(minRawValue / 1.1, sampleConverter.toRaw(minRawValue), 1.0e-6); }
@Test public void testToRaw_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue / 1.1, sampleConverter.toRaw(maxRawValue), 1.0e-6); assertEquals(-356 / 1.1, sampleConverter.toRaw(-356), 1.0e-6); assertEquals(0 / 1.1, sampleConverter.toRaw(0), 1.0e-6); assertEquals(10.8 / 1.1, sampleConverter.toRaw(10.8), 1.0e-6); assertEquals(minRawValue / 1.1, sampleConverter.toRaw(minRawValue), 1.0e-6); }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue * scalingFactor, sampleConverter.toGeoPhysical(maxRawValue), 1.0e-6); assertEquals(-356 * scalingFactor, sampleConverter.toGeoPhysical(-356), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(minRawValue * scalingFactor, sampleConverter.toGeoPhysical(minRawValue), 1.0e-6); }
@Test public void testToGeoPhysical_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(Short.MAX_VALUE * scalingFactor, sampleConverter.toGeoPhysical(Short.MAX_VALUE), 1.0e-6); assertEquals(-356 * scalingFactor, sampleConverter.toGeoPhysical(-356), 1.0e-6); assertEquals(0 * scalingFactor, sampleConverter.toGeoPhysical(0), 1.0e-6); assertEquals(16.0 * scalingFactor, sampleConverter.toGeoPhysical(16.0), 1.0e-6); assertEquals(Short.MIN_VALUE * scalingFactor, sampleConverter.toGeoPhysical(Short.MIN_VALUE), 1.0e-6); }
@Test public void testToRaw_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue / 1.1, sampleConverter.toRaw(maxRawValue), 1.0e-6); assertEquals(minRawValue / 1.1, sampleConverter.toRaw(minRawValue), 1.0e-6); assertEquals(10.8 / 1.1, sampleConverter.toRaw(10.8), 1.0e-6); // the converted shall be within the raw value range and no overflow shall appear assertEquals(minRawValue, sampleConverter.toRaw((minRawValue - 1) * 1.1), 1.0e-6); assertEquals(maxRawValue, sampleConverter.toRaw((maxRawValue + 1) * 1.1), 1.0e-6); }
@Test public void testToRaw_Scaled() { double scalingFactor = 1.1; band.setScalingFactor(scalingFactor); SampleConverterFactory.SampleConverter sampleConverter = SampleConverterFactory.createConverter(band); assertNotNull(sampleConverter); assertEquals(maxRawValue / 1.1, sampleConverter.toRaw(maxRawValue), 1.0e-6); assertEquals(minRawValue / 1.1, sampleConverter.toRaw(minRawValue), 1.0e-6); assertEquals(10.8 / 1.1, sampleConverter.toRaw(10.8), 1.0e-6); // the converted shall be within the raw value range and no overflow shall appear assertEquals(minRawValue, sampleConverter.toRaw((minRawValue - 1) * 1.1), 1.0e-6); assertEquals(maxRawValue, sampleConverter.toRaw((maxRawValue + 1) * 1.1), 1.0e-6); }