public ValueTransformerFactory (String name, ConfigurableFactory<?> parent, List<String> path) { super(name, getFactoryClass(), parent, path); addProperty(TRANSFORM_NAME); addProperty(TRANSFORM_MAXIMUM); addProperty(TRANSFORM_MINIMUM); addProperty(LAYER_MAXIMUM); addProperty(LAYER_MINIMUM); addProperty(LOG_MINIMUM); addProperty(TRANSFORM_SCALE); }
@Override protected ValueTransformer<?> create () throws ConfigurationException { String name = getPropertyValue(TRANSFORM_NAME); double layerMin = getPropertyValue(LAYER_MINIMUM); double layerMax = getPropertyValue(LAYER_MAXIMUM); layerMin = getPropertyValue(LOG_MINIMUM); if (hasPropertyValue(TRANSFORM_MAXIMUM)) max = getPropertyValue(TRANSFORM_MAXIMUM); else max = layerMax; if (hasPropertyValue(TRANSFORM_MINIMUM)) min = getPropertyValue(TRANSFORM_MINIMUM); else min = layerMin; return new HalfSigmoidValueTransformer(layerMin, layerMax); } else if ("sigmoid".equals(name)) { if (hasPropertyValue(TRANSFORM_SCALE)) { return new SigmoidValueTransformer(layerMin, layerMax, getPropertyValue(TRANSFORM_SCALE)); } else { return new SigmoidValueTransformer(layerMin, layerMax);
/** * Set the tile index, and level minimum and maximum for the impending read * @param tileIndex The index of the tile to be rendererd. * @param levelMinimum The level minimum. * @param levelMaximum The level maximum. */ public void setLevelProperties (TileIndex tileIndex, String levelMinimum, String levelMaximum) { _tileCoordinate = tileIndex; _levelMaximum = levelMaximum; _levelMinimum = levelMinimum; try { TileTransformer<?> tileTransformer = produce(TileTransformer.class); if (null != tileTransformer) { Pair<Double, Double> extrema = tileTransformer.getTransformedExtrema(this); _transformFactory.setExtrema(extrema.getFirst(), extrema.getSecond()); Pair<Double, Double> rawExtrema = tileTransformer.getRawExtrema(this); _alphaTransformFactory.setExtrema(rawExtrema.getFirst(), rawExtrema.getSecond()/2); } } catch (ConfigurationException e1) { String layer; try { layer = getPropertyValue(LAYER_ID); } catch (ConfigurationException e2) { layer = "unknown layer"; } LOGGER.warn("Error determining layer-specific extrema for "+layer); } }
addProperty(LEVEL_MAXIMUMS); _transformFactory = new ValueTransformerFactory( "valueTransformer", this, VALUE_TRANSFORM_PATH ); addChildFactory(_transformFactory); _alphaTransformFactory = new ValueTransformerFactory( "alphaValueTransformer", this, ALPHA_VALUE_TRANSFORM_PATH ); addChildFactory( _alphaTransformFactory );