public class GridSampleDimension extends Object implements SampleDimension, Serializable
GridSampleDimension
implementation is capable to differenciate
qualitative and quantitative categories. For example an image of sea surface
temperature (SST) could very well defines the following categories:
In this example, sample values in range[0] : no data [1] : cloud [2] : land [10..210] : temperature to be converted into Celsius degrees through a linear equation
[10..210]
defines a quantitative category, while
all others categories are qualitative.
While this class can be used with arbitrary coverage, the primary target for this implementation is grid coverage storing their sample values as integers.
This explain the "Grid
" prefix in the class name.
Modifier and Type | Field and Description |
---|---|
static Logger |
LOGGER
The logger for grid sample dimensions.
|
Modifier | Constructor and Description |
---|---|
|
GridSampleDimension(CharSequence description)
Constructs a sample dimension with specified name and no category.
|
|
GridSampleDimension(CharSequence description,
Category[] categories,
Unit<?> units)
Constructs a sample dimension with an arbitrary set of categories, which may be both
quantitative and qualitative.
|
|
GridSampleDimension(CharSequence description,
CharSequence[] categoriesNames)
Constructs a sample dimension with a set of qualitative categories only.
|
|
GridSampleDimension(CharSequence description,
CharSequence[] names,
Color[] colors)
Constructs a sample dimension with a set of qualitative categories and colors.
|
|
GridSampleDimension(CharSequence description,
SampleDimensionType type,
ColorInterpretation color,
Color[] palette,
CharSequence[] categories,
double[] nodata,
double minimum,
double maximum,
double scale,
double offset,
Unit<?> unit)
Constructs a sample dimension with the specified properties.
|
protected |
GridSampleDimension(GridSampleDimension other)
Constructs a new sample dimension with the same categories and units than the specified
sample dimension.
|
|
GridSampleDimension(String description,
Category[] categories,
double scale,
double offset) |
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object object)
Compares the specified object with this sample dimension for equality.
|
List<Category> |
getCategories()
Returns all categories in this sample dimension.
|
Category |
getCategory(double sample)
Returns the category for the specified sample value.
|
InternationalString[] |
getCategoryNames()
Returns a sequence of category names for the values contained in this sample dimension.
|
ColorInterpretation |
getColorInterpretation()
Returns the color interpretation of the sample dimension.
|
ColorModel |
getColorModel()
Returns a color model for this sample dimension.
|
ColorModel |
getColorModel(int visibleBand,
int numBands)
Returns a color model for this sample dimension.
|
ColorModel |
getColorModel(int visibleBand,
int numBands,
int type)
Returns a color model for this sample dimension.
|
InternationalString |
getDescription()
Gets the sample dimension title or description.
|
String |
getLabel(double value,
Locale locale)
Returns a string representation of a sample value.
|
double |
getMaximumValue()
Returns the maximum value occurring in this sample dimension (inclusive).
|
double |
getMinimumValue()
Returns the minimum value occurring in this sample dimension (inclusive).
|
double[] |
getNoDataValues()
Returns the values to indicate "no data" for this sample dimension.
|
double |
getOffset()
Returns the value to add to grid values for this sample dimension.
|
int[][] |
getPalette()
Deprecated.
No replacement.
|
PaletteInterpretation |
getPaletteInterpretation()
Indicates the type of color palette entry for sample dimensions which have a palette.
|
NumberRange<? extends Number> |
getRange()
Returns the range of values in this sample dimension.
|
SampleDimensionType |
getSampleDimensionType()
Returns a code value indicating grid value data type.
|
double |
getScale()
Returns the value which is multiplied to grid values for this sample dimension.
|
Unit<?> |
getUnits()
Returns the unit information for this sample dimension.
|
int |
hashCode()
Returns a hash value for this sample dimension.
|
String |
toString()
Returns a string representation of this sample dimension.
|
static GridSampleDimension |
wrap(SampleDimension sd)
Wraps the specified OpenGIS's sample dimension into a Geotools's implementation of
GridSampleDimension . |
public static final Logger LOGGER
public GridSampleDimension(CharSequence description)
description
- The sample dimension title or description, or null
if none. This
is the value to be returned by getDescription()
.public GridSampleDimension(CharSequence description, CharSequence[] categoriesNames)
description
- The sample dimension title or description, or null
for the default
(the name of what looks like the "main" category). This is the value to be returned by
getDescription()
.categoriesNames
- Sequence of category names for the values contained in a sample
dimension, as String
or InternationalString
objects.public GridSampleDimension(CharSequence description, CharSequence[] names, Color[] colors)
description
- The sample dimension title or description, or null
for the default
(the name of what looks like the "main" category). This is the value to be returned by
getDescription()
.names
- Sequence of category names for the values contained in a sample dimension, as
String
or InternationalString
objects.colors
- Color to assign to each category. This array must have the same length than
names
.public GridSampleDimension(CharSequence description, SampleDimensionType type, ColorInterpretation color, Color[] palette, CharSequence[] categories, double[] nodata, double minimum, double maximum, double scale, double offset, Unit<?> unit)
double
primitive can be null
, and any char sequence can be either a String
or InternationalString
object.
This constructor allows the construction of a GridSampleDimension
without explicit
construction of Category
objects. An heuristic approach is used for dispatching the
informations into a set of Category
objects. However, this constructor still less
general and provides less fine-grain control than the constructor expecting an array of
Category
objects.
description
- The sample dimension title or description, or null
for the default
(the name of what looks like the "main" category). This is the value to be returned by
getDescription()
.type
- The grid value data type (which indicate the number of bits for the data type),
or null
for computing it automatically from the range [minimum..maximum]
.
This is the value to be returned by getSampleDimensionType()
.color
- The color interpretation, or null
for a default value (usually PALETTE_INDEX
). This is the value to be returned by
getColorInterpretation()
.palette
- The color palette associated with the sample dimension, or null
for a
default color palette (usually grayscale). If categories
is non-null, then both
arrays usually have the same length. However, this constructor is tolerant on this array
length. This is the value to be returned (indirectly) by getColorModel()
.categories
- A sequence of category names for the values contained in the sample
dimension, or null
if none. This is the values to be returned by getCategoryNames()
.nodata
- the values to indicate "no data", or null
if none. This is the values
to be returned by getNoDataValues()
.minimum
- The lower value, inclusive. The [minimum..maximum]
range may or may
not includes the nodata
values; the range will be adjusted as needed. If categories
was non-null, then minimum
is usually 0. This is the value to be
returned by getMinimumValue()
.maximum
- The upper value, inclusive as well. The [minimum..maximum]
range may or may not includes the nodata
values; the range
will be adjusted as needed. If categories
was non-null, then maximum
is
usually equals to categories.length-1
. This is the value to be returned by getMaximumValue()
.scale
- The value which is multiplied to grid values, or 1 if none. This is the value to
be returned by getScale()
.offset
- The value to add to grid values, or 0 if none. This is the value to be returned
by getOffset()
.unit
- The unit information for this sample dimension, or null
if none. This is
the value to be returned by getUnits()
.IllegalArgumentException
- if the range [minimum..maximum]
is not valid.public GridSampleDimension(CharSequence description, Category[] categories, Unit<?> units) throws IllegalArgumentException
description
- The sample dimension title or description, or null
for the default
(the name of what looks like the "main" category). This is the value to be returned by
getDescription()
.categories
- The list of categories.units
- The unit information for this sample dimension. May be null
if no
category has units.IllegalArgumentException
- if categories
contains incompatible categories. If
may be the case for example if two or more categories have overlapping ranges of sample
values.protected GridSampleDimension(GridSampleDimension other)
other
- The other sample dimension, or null
.public static GridSampleDimension wrap(SampleDimension sd)
GridSampleDimension
.sd
- The sample dimension to wrap into a Geotools implementation.GridSampleDimension
instance.public SampleDimensionType getSampleDimensionType()
getSampleDimensionType
in interface SampleDimension
public InternationalString getDescription()
null
if no
description is present.getDescription
in interface SampleDimension
public InternationalString[] getCategoryNames() throws IllegalStateException
[0] Background [1] Water [2] Forest [3] Urban
getCategoryNames
in interface SampleDimension
null
if there is no category in this sample dimension.IllegalStateException
- if a sequence can't be mapped because some category use
negative or non-integer sample values.getCategories()
,
getCategory(double)
public List<Category> getCategories()
Category
object may
apply to an arbitrary range of sample values. Consequently, the first element in this
collection may not be directly related to the sample value 0
.null
if none.getCategoryNames()
,
getCategory(double)
public Category getCategory(double sample)
null
.sample
- The value (can be one of NaN
values).null
if none.getCategories()
,
getCategoryNames()
public double[] getNoDataValues() throws IllegalStateException
getNoDataValues
in interface SampleDimension
null
if
not applicable.IllegalStateException
- if some qualitative categories use a range of non-integer
values.SampleDimension.getMinimumValue()
,
SampleDimension.getMaximumValue()
public double getMinimumValue()
Double.NEGATIVE_INFINITY
.getMinimumValue
in interface SampleDimension
getRange()
public double getMaximumValue()
Double.POSITIVE_INFINITY
.getMaximumValue
in interface SampleDimension
getRange()
public NumberRange<? extends Number> getRange()
NaN
values. A NumberRange
object gives
more informations than getMinimumValue()
and getMaximumValue()
methods since it
contains also the data type (integer, float, etc.) and inclusion/exclusion informations.null
if this sample dimension has no quantitative
category.Category.getRange()
,
getMinimumValue()
,
getMaximumValue()
public String getLabel(double value, Locale locale)
value
maps a qualitative category, then the category name is returned as of
Category.getName()
.
value
maps a quantitative category, then the value is formatted
as a number and the unit symbol is appened.
value
- The sample value (can be one of NaN
values).locale
- Locale to use for formatting, or null
for the default locale.null
if there is none.public Unit<?> getUnits()
null
if this
dimension has no units.getUnits
in interface SampleDimension
public double getOffset()
Together withoffset + scale*sample
getScale()
and getNoDataValues()
, this method provides a
limited way to transform sample values into geophysics values.getOffset
in interface SampleDimension
SampleDimension.getScale()
public double getScale()
Together withoffset + scale*sample
getOffset()
and getNoDataValues()
, this method provides a
limited way to transform sample values into geophysics values.getScale
in interface SampleDimension
SampleDimension.getOffset()
public int[][] getPalette()
null
will be returned.getPalette
in interface SampleDimension
getPaletteInterpretation()
,
getColorInterpretation()
,
IndexColorModel
public PaletteInterpretation getPaletteInterpretation()
GRAY_INDEX
or PALETTE_INDEX
. A palette entry type can be Gray, RGB, CMYK or HLS.getPaletteInterpretation
in interface SampleDimension
public ColorInterpretation getColorInterpretation()
ColorInterpretation.UNDEFINED
.getColorInterpretation
in interface SampleDimension
public ColorModel getColorModel()
Category.getColors()
.
Note that GridCoverage2D.getSampleDimension(int)
returns
special implementations of GridSampleDimension
. In this particular case, the color
model created by this getColorModel()
method will have the same number of bands than
the grid coverage's RenderedImage
.
RenderedImage
objects
with values in the getRange()
range. May be null
if this
sample dimension has no category.public ColorModel getColorModel(int visibleBand, int numBands)
Category.getColors()
.visibleBand
- The band to be made visible (usually 0). All other bands, if any will be
ignored.numBands
- The number of bands for the color model (usually 1). The returned color model
will renderer only the visibleBand
and ignore the others, but the existence of
all numBands
will be at least tolerated. Supplemental bands, even invisible, are
useful for processing with Java Advanced Imaging.RenderedImage
objects
with values in the getRange()
range. May be null
if this
sample dimension has no category.public ColorModel getColorModel(int visibleBand, int numBands, int type)
Category.getColors()
.visibleBand
- The band to be made visible (usually 0). All other bands, if any will be
ignored.numBands
- The number of bands for the color model (usually 1). The returned color model
will renderer only the visibleBand
and ignore the others, but the existence of
all numBands
will be at least tolerated. Supplemental bands, even invisible, are
useful for processing with Java Advanced Imaging.type
- The data type that has to be used for the sample model.RenderedImage
objects
with values in the getRange()
range. May be null
if this
sample dimension has no category.public int hashCode()
public boolean equals(Object object)
public String toString()
Copyright © 1996–2019 Geotools. All rights reserved.