Views Management removal - STEMLab/geotools GitHub Wiki
- Contact: Nicola Lagomarsini, Daniele Romagnoli
This proposal aims on removing the Views Management on the GridCoverage2D class. ViewsManager machinery has been introduced to deal with packed coverage data whilst, in the vast majority of the case, datasets contain geophysics values which can be rendered as the user needs through the powerful SLD capabilities.
This machinery introduces several complexities in the code, unneeded pre-processing steps to compute different views of the same data and so on. For this reason we aim to remove the ViewsManager related classes and deprecate the public methods involving sampleToGeophysic transformation, different views management and automatic scaling capabilities.
We will always deal with data values as they are stored in the underlying dataset: packed, native, photographic, geophysics concepts will no be supported anymore.
These modifications involve for the major part the gt-coverage module and, specifically, the classes which are mostly changed in this proposals are:
- Category
- GridSampleDimension
- GridCoverage2D
- SampleDimension
- ViewType
- Calculator2D
- CoverageUtilities
The changes affecting these classes will be described in the following paragraphs.
Generally speaking, our procedure is to remove the already deprecated *Views-management *methods and to deprecate old methods, asking for their removal in the next release version.
Package-private and hidden classes which are no more needed will be removed, since their change will not affect the public APIs.
It also should be pointed out that, since the getSampleToGeophysics method is not part of the OGC specification, it will be deprecated from the SampleDimension interface.
Voting has not started yet:
- Andrea Aime
- Ben Caradoc-Davies
- Christian Mueller
- Ian Turton +1
- Justin Deoliveira
- Jody Garnett
- Simone Giannecchini
This section is used to make sure your proposal is complete (did you remember documentation?) and has enough paid or volunteer time lined up to be a success
- API changed based on BEFORE / AFTER ✅
- Remove Views Management code from GeoTools project ✅
- Deprecate methods from GeoTools project ✅
- Update the existing methods ✅
- Update Views Management Tests ✅
- Remove Views related documentation
BEFORE:
private Category(final CharSequence name,
final int[] ARGB,
final Number sample){...}
public Category(final CharSequence name,
final Color[] colors,
final int lower,
final int upper,
final double scale,
final double offset) throws IllegalArgumentException{...}
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange,
final double scale,
final double offset) throws IllegalArgumentException{...}
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange,
final NumberRange geophysicsValueRange) throws IllegalArgumentException{...}
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange,
final MathTransform1D sampleToGeophysics) throws IllegalArgumentException{...}
private Category(final CharSequence name,
final int[] ARGB,
final NumberRange range,
MathTransform1D sampleToGeophysics) throws IllegalArgumentException{...}
public MathTransform1D getSampleToGeophysics() {...}
public Category rescale(final MathTransform1D sampleToGeophysics) {...}
public Category geophysics(final boolean geo) {...}
AFTER:
private Category(final CharSequence name,
final int[] ARGB,
final Number sample,
final boolean isQuantitative){...}
@Deprecated
public Category(final CharSequence name,
final Color[] colors,
final int lower,
final int upper,
final double scale,
final double offset) throws IllegalArgumentException{...}
@Deprecated
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange,
final double scale,
final double offset) throws IllegalArgumentException{...}
@Deprecated
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange,
final NumberRange geophysicsValueRange) throws IllegalArgumentException{...}
@Deprecated
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange,
final MathTransform1D sampleToGeophysics) throws IllegalArgumentException{...}
private Category(final CharSequence name,
final int[] ARGB,
final NumberRange range,
final boolean isQuantitative) throws IllegalArgumentException{...}
/**
* Constructs a qualitative or quantitative category for sample value {@code sample}.
*/
public Category(final CharSequence name,
final Color color,
final int sample,
final boolean isQuantitative){...}
/**
* Constructs a quantitative category for sample values ranging from {@code lower}
* inclusive to {@code upper} exclusive.
*
* @throws IllegalArgumentException if {@code lower} is not smaller than {@code upper},
* or if {@code scale} or {@code offset} are not real numbers.
*/
public Category(final CharSequence name,
final Color[] colors,
final int lower,
final int upper) throws IllegalArgumentException{...}
/**
* Constructs a quantitative category for sample values in the specified range.
*
* @throws IllegalArgumentException if {@code lower} is not smaller than {@code upper},
* or if {@code scale} or {@code offset} are not real numbers.
*/
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange) throws IllegalArgumentException{...}
/**
* Constructs a qualitative or quantitative category for samples in the specified range.
*
* @throws ClassCastException if the range element class is not a {@link Number} subclass.
* @throws IllegalArgumentException if the range is invalid.
*/
public Category(final CharSequence name,
final Color[] colors,
final NumberRange sampleValueRange,
final boolean isQuantitative) throws IllegalArgumentException{...}
@Deprecated
public MathTransform1D getSampleToGeophysics() {...}
@Deprecated
public Category rescale(final MathTransform1D sampleToGeophysics) {...}
@Deprecated
public Category geophysics(final boolean geo) {...}
AFTER:
@Deprecated
@Extension
MathTransform1D getSampleToGeophysics();
BEFORE:
private GridSampleDimension(final CharSequence description, final CategoryList list) {...}
public MathTransform1D getSampleToGeophysics() {...}
public GridSampleDimension geophysics(final boolean geo) {...}
public GridSampleDimension rescale(final double scale, final double offset) {...}
AFTER:
private GridSampleDimension(final CharSequence description, final CategoryList list, double scale, double offset) {...}
public GridSampleDimension(String description, Category[] categories, double scale, double offset) {...}
@Deprecated
public MathTransform1D getSampleToGeophysics() {...}
@Deprecated
public GridSampleDimension geophysics(final boolean geo) {...}
@Deprecated
public GridSampleDimension rescale(final double scale, final double offset) {...}
AFTER:
@Deprecated
public abstract class Calculator2D extends GridCoverage2D {...}
AFTER:
@Deprecated
public enum ViewType {...}
BEFORE:
public GridCoverage2D view(final ViewType type) {...}
public synchronized Set<ViewType> getViewTypes() {...}
AFTER:
@Deprecated
public GridCoverage2D view(final ViewType type) {...}
@Deprecated
public synchronized Set<ViewType> getViewTypes() {...}
BEFORE:
public static boolean hasRenderingCategories(final GridCoverage gridCoverage) {...}
public static boolean hasTransform(final SampleDimension[] sampleDimensions) {...}
public static ViewType preferredViewForOperation(final GridCoverage2D coverage, final Interpolation interpolation, final boolean hasFilter, final RenderingHints hints) {...}
public static ViewType preferredViewAfterOperation(final GridCoverage2D coverage) {...}
AFTER:
@Deprecated
public static boolean hasRenderingCategories(final GridCoverage gridCoverage) {...}
@Deprecated
public static boolean hasTransform(final SampleDimension[] sampleDimensions) {...}
@Deprecated
public static ViewType preferredViewForOperation(final GridCoverage2D coverage, final Interpolation interpolation, final boolean hasFilter, final RenderingHints hints) {...}
@Deprecated
public static ViewType preferredViewAfterOperation(final GridCoverage2D coverage) {...}
list the pages effected by this proposal
- gt-coverage Documentation page