.withMean(mean) .withStandardDeviation(stdDev) .withIntHistogram(intHistogram) .withHistogramBins(frequencies) .withResolutionLevel(resolutionLevel)
private static Stx createStx(Band band, Element bandStatisticsElem) { final Double minSample = getElemDouble(bandStatisticsElem, DimapProductConstants.TAG_STX_MIN); final Double maxSample = getElemDouble(bandStatisticsElem, DimapProductConstants.TAG_STX_MAX); final Double mean = getElemDouble(bandStatisticsElem, DimapProductConstants.TAG_STX_MEAN); final Double stdDev = getElemDouble(bandStatisticsElem, DimapProductConstants.TAG_STX_STDDEV); final Integer level = getElemInt(bandStatisticsElem, DimapProductConstants.TAG_STX_LEVEL); final int[] bins = getHistogramBins(bandStatisticsElem); boolean intHistogram = !ProductData.isFloatingPointType(band.getGeophysicalDataType()); if (minSample != null && maxSample != null) { return new StxFactory() .withMinimum(minSample) .withMaximum(maxSample) .withMean(mean) .withStandardDeviation(stdDev) .withIntHistogram(intHistogram) .withHistogramBins(bins == null ? new int[0] : bins) .withResolutionLevel(level).create(); } return null; }
@Test public void testMinMaxBinsIntHistogram() throws Exception { StxFactory factory = new StxFactory(); factory .withMinimum(1) .withMaximum(100) .withIntHistogram(true) .withHistogramBins(new int[]{1, 2, 3, 6, 6, 3, 2, 1}); Stx stx = factory.create(); assertEquals(1, stx.getMinimum(), 1e-10); assertEquals(100, stx.getMaximum(), 1e-10); assertEquals(44.75, stx.getMean(), 1e-10); assertEquals(51.0, stx.getMedian(), 1e-10); assertNotNull(stx.getHistogram()); assertEquals(1, stx.getHistogram().getNumBands()); assertEquals(8, stx.getHistogram().getNumBins()[0]); assertEquals(1, stx.getHistogram().getLowValue(0), 1e-10); assertEquals(101, stx.getHistogram().getHighValue(0), 1e-10); assertArrayEquals(new int[]{1, 2, 3, 6, 6, 3, 2, 1}, stx.getHistogramBins()); }