Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java @ 448:3cb2bea50456
Generate iso line classes according gnv-issues/issue108
gnv-artifacts/trunk@496 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 03 Jan 2010 12:16:55 +0000 |
parents | 92b7ccbf6163 |
children | 04cfb4e3da4f |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java Fri Jan 01 21:52:41 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java Sun Jan 03 12:16:55 2010 +0000 @@ -76,6 +76,7 @@ import de.intevation.gnv.raster.Palette; import de.intevation.gnv.raster.Raster; import de.intevation.gnv.raster.PolygonDatasetProducer; +import de.intevation.gnv.raster.IsoAttributeGenerator; import de.intevation.gnv.raster.IsoPolygonSeriesProducer; import de.intevation.gnv.raster.Vectorizer; @@ -284,9 +285,9 @@ } // scan for regions with base palette - Palette base = paletteManager.getBase(); + Palette basePalette = paletteManager.getBase(); - int [] intRaster = raster.toIndexed(base); + int [] intRaster = raster.toIndexed(basePalette); // produce JFreeChart compatible polygons @@ -303,20 +304,33 @@ int numRegions = new Vectorizer(intRaster, rasterSize.width) .process(pdsp); - intRaster = null; // help gc + PolygonDataset pds = pdsp.getPolygonDataset(); - PolygonDataset pds = pdsp.getPolygonDataset(); + int numColors = pds.getSeriesCount(); if (debug) { log.debug("number of regions: " + numRegions); - log.debug("number of series: " + pds.getSeriesCount()); + log.debug("number of colors: " + numColors); } // generate iso lines - Palette isoPalette = paletteManager.getLevel(2); + int numIso; - intRaster = raster.toIndexed(isoPalette); + if (numColors < 5) { numIso = 5; } + else if (numColors < 10) { numIso = 2; } + else { numIso = 0; } + + Palette isoPalette; + + if (numIso == 0) { // same palette + isoPalette = basePalette; + /* intRaster = intRaster; */ + } + else { + isoPalette = paletteManager.getLevel(numIso); + intRaster = raster.toIndexed(isoPalette); + } IsoPolygonSeriesProducer ipsp = new IsoPolygonSeriesProducer( 0, 0, @@ -325,8 +339,9 @@ numRegions = new Vectorizer(false, intRaster, rasterSize.width) .process(ipsp); - // TODO: Use label generator - Collection<PolygonSeries> ps = ipsp.getSeries(/* label generator */); + IsoAttributeGenerator iag = new IsoAttributeGenerator(isoPalette); + Collection<PolygonSeries> ps = ipsp.getSeries(iag); + ipsp.clear(); if (debug) { log.debug("num of iso regions: " + numRegions);