/** @param index a numeric value to be normalized */ @Override public BinRange[] getNormalizedRanges(final NumericData index) { return binningStrategy.getNormalizedRanges(index); }
@Override public NumericRange getDenormalizedRange(BinRange range) { return binningStrategy.getDenormalizedRanges(range); }
@Override public NumericRange getDenormalizedRanges(final BinRange binnedRange) { final long startOfEpochMillis = getStartEpoch(binnedRange.getBinId()); final long minMillis = startOfEpochMillis + (long) binnedRange.getNormalizedMin(); final long maxMillis = startOfEpochMillis + (long) binnedRange.getNormalizedMax(); return new NumericRange(minMillis, maxMillis); }
@Override public NumericRange getDenormalizedRanges(BinRange binnedRange) { int bin = ByteBuffer.wrap(binnedRange.getBinId()).getInt(); double center = bin * interval; if (binnedRange.isFullExtent()) { return new NumericRange(center - halfInterval, center + halfInterval); } return new NumericRange( center + binnedRange.getNormalizedMin(), center + binnedRange.getNormalizedMax()); }
@Override public NumericRange getDenormalizedRange(final BinRange range) { return new NumericRange(range.getNormalizedMin(), range.getNormalizedMax()); }
@Override public BinRange[] getNormalizedRanges(NumericData index) { if (!index.isRange()) { BinValue value = getBinnedValue(index.getMin()); return new BinRange[] { new BinRange( value.getBinId(), value.getNormalizedValue(), value.getNormalizedValue(), false)}; ByteBuffer buf = ByteBuffer.allocate(4); buf.putInt((int) minBin); return new BinRange[] {new BinRange(buf.array(), min, max, false)}; new BinRange( intToBinary(minBin), (index.getMin() - interval * minBin), halfInterval, false); for (int b = minBin + 1; b < maxBin; b++) { retVal[b - minBin] = new BinRange(intToBinary(b), -halfInterval, halfInterval, true); new BinRange( intToBinary(maxBin), -halfInterval, (index.getMax() - interval * maxBin),
@Override public BinValue getBinnedValue(double value) { double bin = Math.floor((value - halfInterval) / interval); return new BinValue(intToBinary((int) bin), (value - interval * bin)); }
/** Method used to bin a raw date in milliseconds to a binned value of the Binning Strategy. */ @Override public BinValue getBinnedValue(final double value) { final long millisFromOrigin = (long) value - ORIGIN_MILLIS; if (millisFromOrigin < 0) { final int binId = (int) (((millisFromOrigin - BIN_SIZE_MILLIS) + 1) / BIN_SIZE_MILLIS); final long startOfEpochFromOrigin = binId * BIN_SIZE_MILLIS; final ByteBuffer buf = ByteBuffer.allocate(4); buf.putInt(binId); return new BinValue(buf.array(), millisFromOrigin - startOfEpochFromOrigin); } else { final int binId = (int) (millisFromOrigin / BIN_SIZE_MILLIS); final ByteBuffer buf = ByteBuffer.allocate(4); buf.putInt(binId); return new BinValue(buf.array(), millisFromOrigin % BIN_SIZE_MILLIS); } }
@Override public BinRange[] getNormalizedRanges(final NumericData range) { if (range == null) { return new BinRange[0]; } return new BinRange[] { new BinRange( // by default clamp to the min and max clamp(range.getMin()), clamp(range.getMax()))}; }
public CustomCRSUnboundedSpatialDimensionY(double interval, byte axis) { super(new BasicBinningStrategy(interval)); baseCustomCRS = new BaseCustomCRSSpatialDimension(axis); }
@Override public int getFixedBinIdSize() { return binningStrategy.getFixedBinIdSize(); }
@Override public NumericRange getDenormalizedRanges(final BinRange binnedRange) { final Calendar startofEpoch = getStartEpoch(binnedRange.getBinId()); final long startOfEpochMillis = startofEpoch.getTimeInMillis(); final long minMillis = startOfEpochMillis + (long) binnedRange.getNormalizedMin(); final long maxMillis = startOfEpochMillis + (long) binnedRange.getNormalizedMax(); return new NumericRange(minMillis, maxMillis); } }
@Override public NumericRange getDenormalizedRange(final BinRange range) { return new NumericRange(range.getNormalizedMin(), range.getNormalizedMax()); }
/** Method used to bin a raw date in milliseconds to a binned value of the Binning Strategy. */ @Override public BinValue getBinnedValue(final double value) { // convert to a calendar and subtract the epoch for the bin final Calendar epochCal = Calendar.getInstance(TimeZone.getTimeZone(timezone)); epochCal.setTimeInMillis((long) value); setToEpoch(epochCal); // use the value to get the bin ID (although the epoch should work fine // too) final Calendar valueCal = Calendar.getInstance(TimeZone.getTimeZone(timezone)); valueCal.setTimeInMillis((long) value); return new BinValue( getBinId(valueCal), valueCal.getTimeInMillis() - epochCal.getTimeInMillis()); }
public CustomCRSUnboundedSpatialDimension(double interval, byte axis) { super(new BasicBinningStrategy(interval)); baseCustomCRS = new BaseCustomCRSSpatialDimension(axis); }
public static MultiDimensionalCoordinateRanges getCoordinateRanges( final BinRange[][] binRangesPerDimension, final SpaceFillingCurve sfc, final int numDimensions, final byte tier) { final CoordinateRange[][] coordinateRangesPerDimension = new CoordinateRange[numDimensions][]; for (int d = 0; d < coordinateRangesPerDimension.length; d++) { coordinateRangesPerDimension[d] = new CoordinateRange[binRangesPerDimension[d].length]; for (int i = 0; i < binRangesPerDimension[d].length; i++) { final long[] range = sfc.normalizeRange( binRangesPerDimension[d][i].getNormalizedMin(), binRangesPerDimension[d][i].getNormalizedMax(), d); coordinateRangesPerDimension[d][i] = new CoordinateRange(range[0], range[1], binRangesPerDimension[d][i].getBinId()); } } return new MultiDimensionalCoordinateRanges(new byte[] {tier}, coordinateRangesPerDimension); }
binnedQueries[i] = new double[binsPerDimension.length]; if ((binsPerDimension[d][b].getNormalizedMax() - binsPerDimension[d][b].getNormalizedMin()) <= 0.000000001) { binnedQueries[i][d] = 0; } else { log2( Math.ceil( (binsPerDimension[d][b].getNormalizedMax() - binsPerDimension[d][b].getNormalizedMin()) / cellRangePerDimension[d]));
public CustomCRSUnboundedSpatialDimensionX(double interval, byte axis) { super(new BasicBinningStrategy(interval)); baseCustomCRS = new BaseCustomCRSSpatialDimension(axis); }