--- trunk/src/skrueger/RasterLegendData.java 2009/07/31 14:43:47 256 +++ branches/1.0-gt2-2.6/src/skrueger/RasterLegendData.java 2009/09/14 11:42:49 398 @@ -32,9 +32,17 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; import org.apache.log4j.Logger; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.geometry.Envelope2D; +import org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer; +import schmitzm.geotools.GTUtil; +import schmitzm.geotools.grid.GridUtil; import skrueger.i8n.Translation; /** @@ -44,7 +52,7 @@ * @author Stefan Alfons Krüger * */ -public class RasterLegendData extends HashMap { +public class RasterLegendData extends TreeMap { static private final Logger LOGGER = Logger.getLogger(RasterLegendData.class); private Boolean paintGaps = false; @@ -61,7 +69,6 @@ * indicating nominal values in the raster (e.g. classifications) */ public RasterLegendData(boolean paintGaps) { - super(); this.paintGaps = paintGaps; } @@ -69,17 +76,38 @@ return paintGaps ; } - public List getSortedKeys(){ - Object[] array = keySet().toArray(); - - Arrays.sort(array); - - final LinkedList linkedList = new LinkedList(); - for (Object o : array){ - linkedList.add( (Double)o); - } - - return linkedList; - - } +// public List getSortedKeys(){ +// Object[] array = keySet().toArray(); +// +// Arrays.sort(array); +// +// final LinkedList linkedList = new LinkedList(); +// for (Object o : array){ +// linkedList.add( (Double)o); +// } +// +// return linkedList; +// +// } + + /** + * Creates a sample {@link GridCoverage2D} (size 1x1, WGS84) for each + * legend value. These rasters can be used to do visualize the + * legend item in the corresponding color via {@link GridCoverageRenderer}. + */ + public SortedMap createSampleRasters() { + SortedMap sampleRaster = new TreeMap(); + + for (Double rasterValue : keySet()) { + GridCoverage2D grid = GridUtil.GRID_FAC.create( + "Legend_"+rasterValue, + new float[][] { { rasterValue.floatValue() } }, + new Envelope2D(GTUtil.WGS84, 0,0,1,1) + ); + sampleRaster.put(rasterValue, grid); + } + + + return sampleRaster; + } }