/** * Guesses the size of the sample able to contain the range fully * * @param range */ static int guessSizeFromRange(NumberRange range) { double min = range.getMinimum(); double max = range.getMaximum(); double diff = max - min; if (diff <= ((int) Byte.MAX_VALUE - (int) Byte.MIN_VALUE)) { return 8; } else if (diff <= ((int) Short.MAX_VALUE - (int) Short.MIN_VALUE)) { return 16; } else if (diff <= ((double) Integer.MAX_VALUE - (double) Integer.MIN_VALUE)) { return 32; } else if (diff <= ((double) Float.MAX_VALUE - (double) Float.MIN_VALUE)) { return 32; } else { return 64; } }
private StringBuilder formatRange(StringBuilder builder, final Locale locale) { final NumberRange range = getRange(); builder.append('['); if (range != null) { builder.append(range.getMinimum()).append(" ... ").append(range.getMaximum()); } else { final Unit<?> unit = getUnits(); if (unit != null) { builder.append(unit); } } builder.append(']'); return builder; }
@Override public double getMinimumValue() { NumberRange<? extends Number> range = getRange(); // Check if the range exists, otherwise use the sample dimension values if (range != null) { return range.getMinimum(); } else { return sampleDim.getMinimumValue(); } }
double min = cat.getRange().getMinimum(); double max = cat.getRange().getMaximum();
public void testMixed() throws ParseException { final ElevationKvpParser parser = new ElevationKvpParser("ELEVATION"); List elements = new ArrayList((Collection) parser.parse("5,3,4,1,2,8.9,1/9")); assertTrue(elements.get(0) instanceof NumberRange); assertEquals(1.0, ((NumberRange<Double>) elements.get(0)).getMinimum()); assertEquals(9.0, ((NumberRange<Double>) elements.get(0)).getMaximum()); }
@Test public void testMixedElevationExtraction() throws IOException { MockDimensionReader reader = new MockDimensionReader(); reader.metadata.put(GridCoverage2DReader.HAS_ELEVATION_DOMAIN, "true"); reader.metadata.put(GridCoverage2DReader.ELEVATION_DOMAIN, "0/0/0,10,15/20/1"); ReaderDimensionsAccessor accessor = new ReaderDimensionsAccessor(reader); TreeSet<Object> domain = accessor.getElevationDomain(); assertEquals(3, domain.size()); Iterator<Object> it = domain.iterator(); Number firstEntry = (Number) it.next(); assertEquals(0, firstEntry.doubleValue(), 0d); Number secondEntry = (Number) it.next(); assertEquals(10, secondEntry.doubleValue(), 0d); NumberRange thirdEntry = (NumberRange) it.next(); assertEquals(15, thirdEntry.getMinimum(), 0d); assertEquals(20, thirdEntry.getMaximum(), 0d); }
nodataConfigured ? configuredNoDataValues[0] : category.getRange().getMinimum(); double maximum = nodataConfigured && !Double.isInfinite(configuredRange.getMinimum()) && !Double.isInfinite(configuredRange.getMaximum())) { Class targetType =
Category cat = (Category) it.next(); if ((cat != null) && cat.getName().toString().equalsIgnoreCase("no data")) { double min = cat.getRange().getMinimum(); double max = cat.getRange().getMaximum(); writer.write("<value>" + min + "</value>\n");
assertEquals(category.getRange().getMinimum(), Double.NaN, DELTA); assertEquals(category.getRange().getMaximum(), Double.NaN, DELTA); assertEquals(category.getRange().getMinimum(), noData1, DELTA); assertEquals(category.getRange().getMaximum(), noData1, DELTA);
assertEquals(category.getRange().getMinimum(), noData1, DELTA); assertEquals(category.getRange().getMaximum(), noData1, DELTA);
@Test public void testSingleBandedCoverage() throws Exception { // build a feature type (it's already in the catalog, but we just want to // check it's built as expected // LINES is a feature type with a native SRS, so we want the bounds to be there Catalog cat = getCatalog(); CatalogBuilder cb = new CatalogBuilder(cat); cb.setStore(cat.getCoverageStoreByName(MockData.TASMANIA_DEM.getLocalPart())); CoverageInfo ci = cb.buildCoverage(); // perform basic checks assertEquals(CRS.decode("EPSG:4326", true), ci.getCRS()); assertEquals("EPSG:4326", ci.getSRS()); assertNotNull(ci.getNativeCRS()); assertNotNull(ci.getNativeBoundingBox()); assertNotNull(ci.getLatLonBoundingBox()); // check the coverage dimensions List<CoverageDimensionInfo> dimensions = ci.getDimensions(); assertEquals(1, dimensions.size()); CoverageDimensionInfo dimension = dimensions.get(0); assertEquals("GRAY_INDEX", dimension.getName()); assertEquals(1, dimension.getNullValues().size()); assertEquals(-9999, dimension.getNullValues().get(0), 0d); assertEquals(Double.NEGATIVE_INFINITY, dimension.getRange().getMinimum(), 0d); // Huston, we have a problem here... // assertEquals(9999, dimension.getRange().getMaximum(), 0d); assertNull(dimension.getUnit()); }
@Test public void testMultiBandCoverage() throws Exception { Catalog cat = getCatalog(); CatalogBuilder cb = new CatalogBuilder(cat); cb.setStore(cat.getCoverageStoreByName(MockData.TASMANIA_BM.getLocalPart())); CoverageInfo ci = cb.buildCoverage(); // perform basic checks assertEquals(CRS.decode("EPSG:4326", true), ci.getCRS()); assertEquals("EPSG:4326", ci.getSRS()); assertNotNull(ci.getNativeCRS()); assertNotNull(ci.getNativeBoundingBox()); assertNotNull(ci.getLatLonBoundingBox()); // check the coverage dimensions List<CoverageDimensionInfo> dimensions = ci.getDimensions(); assertEquals(3, dimensions.size()); CoverageDimensionInfo dimension = dimensions.get(0); assertEquals("RED_BAND", dimension.getName()); assertEquals(0, dimension.getNullValues().size()); assertEquals(Double.NEGATIVE_INFINITY, dimension.getRange().getMinimum(), 0d); assertEquals(Double.POSITIVE_INFINITY, dimension.getRange().getMaximum(), 0d); assertEquals("W.m-2.Sr-1", dimension.getUnit()); }
assertEquals(newMinimum, wrappedRange.getMinimum(), DELTA); assertEquals(newMaximum, wrappedRange.getMaximum(), DELTA);
/** Returns the expected range of values for the resulting image. */ protected NumberRange deriveRange(final NumberRange[] ranges, final Parameters parameters) { final NumberRange range = ranges[0]; final double min = Math.log(range.getMinimum()); final double max = Math.log(range.getMaximum()); return NumberRange.create(min, max); }
assertEquals(newMinimum, wrappedRange.getMinimum(), DELTA); assertEquals(newMaximum, wrappedRange.getMaximum(), DELTA);
/** Returns the expected range of values for the resulting image. */ protected NumberRange deriveRange(final NumberRange[] ranges, final Parameters parameters) { final NumberRange range = ranges[0]; final double min = Math.abs(range.getMinimum()); final double max = Math.abs(range.getMaximum()); return (max < min) ? NumberRange.create(max, min) : NumberRange.create(min, max); }
/** Returns the expected range of values for the resulting image. */ protected NumberRange deriveRange(final NumberRange[] ranges, final Parameters parameters) { final NumberRange range = ranges[0]; final double min = -range.getMaximum(); final double max = -range.getMinimum(); return NumberRange.create(min, max); }
/** Returns the expected range of values for the resulting image. */ protected NumberRange deriveRange(final NumberRange[] ranges, final Parameters parameters) { final double[] constants = (double[]) parameters.parameters.getObjectParameter("constants"); if (constants.length == 1) { final double c = constants[0]; final NumberRange range = ranges[0]; final double min = c - range.getMaximum(); final double max = c - range.getMinimum(); return NumberRange.create(min, max); } return super.deriveRange(ranges, parameters); }
/** Returns the expected range of values for the resulting image. */ protected NumberRange deriveRange(final NumberRange[] ranges, final Parameters parameters) { final double[] constants = (double[]) parameters.parameters.getObjectParameter("constants"); if (constants.length == 1) { final double c = constants[0]; final NumberRange range = ranges[0]; final double min = range.getMinimum() + c; final double max = range.getMaximum() + c; return NumberRange.create(min, max); } return super.deriveRange(ranges, parameters); }
/** Returns the expected range of values for the resulting image. */ protected NumberRange deriveRange(final NumberRange[] ranges, final Parameters parameters) { final double[] constants = (double[]) parameters.parameters.getObjectParameter("constants"); if (constants.length == 1) { final double c = constants[0]; final NumberRange range = ranges[0]; final double min = range.getMinimum() / c; final double max = range.getMaximum() / c; return (max < min) ? NumberRange.create(max, min) : NumberRange.create(min, max); } return super.deriveRange(ranges, parameters); }