ColorMap cmap = null;
// Setting up filter functions
FilterFunction_svgColorMap colorMapFilterFunction = new FilterFunction_svgColorMap();
FilterFunction_gridCoverageStats statsFilterFunction = new FilterFunction_gridCoverageStats();
// Only parsing the first layer.
String layerID = "";
int digits = DEFAULT_DIGITS;
Set<String> params = map.keySet();
for (String param: params) {
if (param.equalsIgnoreCase("LAYER")) {
layerID = (String) map.get("LAYER");
} else if (param.equalsIgnoreCase("DIGITS")) {
digits = Integer.parseInt((String) map.get("DIGITS"));
}
}
final int indexOf = layerID.indexOf(":");
final CoverageInfo coverageInfo = geoserverCatalog.getCoverageByName(new NameImpl(
layerID.substring(0, indexOf), layerID.substring(indexOf + 1)));
List<CoverageDimensionInfo> dimensions = coverageInfo.getDimensions();
String unit = "";
if (dimensions != null && !dimensions.isEmpty()) {
CoverageDimensionInfo dimensionInfo = dimensions.get(0);
unit = dimensionInfo.getUnit();
}
// Getting coverage to parse statistics
final CoverageStoreInfo storeInfo = coverageInfo.getStore();
final GridCoverage2DReader reader = (GridCoverage2DReader) geoserverCatalog
.getResourcePool().getGridCoverageReader(storeInfo, null);
GeneralParameterValue[] parameters = parseReadParameters(coverageInfo, map, reader);
coverage = (GridCoverage2D) reader.read(parameters);
final double min = (Double) statsFilterFunction.evaluate(coverage, "minimum");
final double max = (Double) statsFilterFunction.evaluate(coverage, "maximum");
// Getting a colorMap on top of that
cmap = (ColorMap) colorMapFilterFunction.evaluate(colorMap, min, max);
final Builder cmapLegendBuilder = new ColorMapLegendCreator.Builder();
if (cmap != null && cmap.getColorMapEntries() != null