package mil.nga.giat.geowave.core.index.dimension;
import mil.nga.giat.geowave.core.index.Persistable;
import mil.nga.giat.geowave.core.index.dimension.bin.BinRange;
import mil.nga.giat.geowave.core.index.sfc.data.NumericData;
import mil.nga.giat.geowave.core.index.sfc.data.NumericRange;
/**
* The Numeric Dimension Definition interface defines the attributes and methods
* of a class which forms the Space Filling Curve dimension.
*
*/
public interface NumericDimensionDefinition extends
Persistable
{
public double getRange();
/**
* Used to normalize a value within the bounds of the range to a percentage
* of the range between 0 and 1
*
* @return normalized value
*/
public double normalize(
double value );
/**
* Used to denormalize the numeric data set from a value between 0 and 1
* scaled to fit within its native bounds
*
* @return the denormalized value
*/
public double denormalize(
double value );
/**
* Returns the set of normalized ranges
*
* @param range
* a numeric range of the data set
* @return an array of BinRange[] objects
*/
public BinRange[] getNormalizedRanges(
NumericData range );
/**
* Returns a range in the native bounds of the dimension definition,
* denormalized from a bin and separate range
*
* @param range
* a numeric range of the data set, with a bin
* @return a NumericRange representing the given bin and range
*/
public NumericRange getDenormalizedRange(
BinRange range );
/**
* If this numeric dimension definition uses bins, it is given a fixed
* length for the bin ID
*
* @return the fixed length for this dimensions bin ID
*/
public int getFixedBinIdSize();
/**
* Returns the native bounds of the dimension definition
*
* @return a range representing the minimum value and the maximum value for
* this dimension definition
*/
public NumericRange getBounds();
/**
* Provide the entire allowed range
*
* @return
*/
public NumericData getFullRange();
}