comparison 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
comparison
equal deleted inserted replaced
447:92b7ccbf6163 448:3cb2bea50456
74 import de.intevation.gnv.raster.Filter; 74 import de.intevation.gnv.raster.Filter;
75 import de.intevation.gnv.raster.PaletteManager; 75 import de.intevation.gnv.raster.PaletteManager;
76 import de.intevation.gnv.raster.Palette; 76 import de.intevation.gnv.raster.Palette;
77 import de.intevation.gnv.raster.Raster; 77 import de.intevation.gnv.raster.Raster;
78 import de.intevation.gnv.raster.PolygonDatasetProducer; 78 import de.intevation.gnv.raster.PolygonDatasetProducer;
79 import de.intevation.gnv.raster.IsoAttributeGenerator;
79 import de.intevation.gnv.raster.IsoPolygonSeriesProducer; 80 import de.intevation.gnv.raster.IsoPolygonSeriesProducer;
80 import de.intevation.gnv.raster.Vectorizer; 81 import de.intevation.gnv.raster.Vectorizer;
81 82
82 import de.intevation.gnv.jfreechart.PolygonDataset; 83 import de.intevation.gnv.jfreechart.PolygonDataset;
83 import de.intevation.gnv.jfreechart.PolygonSeries; 84 import de.intevation.gnv.jfreechart.PolygonSeries;
282 if (debug) { 283 if (debug) {
283 log.debug("to indexed raster"); 284 log.debug("to indexed raster");
284 } 285 }
285 286
286 // scan for regions with base palette 287 // scan for regions with base palette
287 Palette base = paletteManager.getBase(); 288 Palette basePalette = paletteManager.getBase();
288 289
289 int [] intRaster = raster.toIndexed(base); 290 int [] intRaster = raster.toIndexed(basePalette);
290 291
291 // produce JFreeChart compatible polygons 292 // produce JFreeChart compatible polygons
292 293
293 if (debug) { 294 if (debug) {
294 log.debug("vectorize indexed raster"); 295 log.debug("vectorize indexed raster");
301 distance, maxDepth); 302 distance, maxDepth);
302 303
303 int numRegions = new Vectorizer(intRaster, rasterSize.width) 304 int numRegions = new Vectorizer(intRaster, rasterSize.width)
304 .process(pdsp); 305 .process(pdsp);
305 306
306 intRaster = null; // help gc
307
308 PolygonDataset pds = pdsp.getPolygonDataset(); 307 PolygonDataset pds = pdsp.getPolygonDataset();
308
309 int numColors = pds.getSeriesCount();
309 310
310 if (debug) { 311 if (debug) {
311 log.debug("number of regions: " + numRegions); 312 log.debug("number of regions: " + numRegions);
312 log.debug("number of series: " + pds.getSeriesCount()); 313 log.debug("number of colors: " + numColors);
313 } 314 }
314 315
315 // generate iso lines 316 // generate iso lines
316 317
317 Palette isoPalette = paletteManager.getLevel(2); 318 int numIso;
318 319
319 intRaster = raster.toIndexed(isoPalette); 320 if (numColors < 5) { numIso = 5; }
321 else if (numColors < 10) { numIso = 2; }
322 else { numIso = 0; }
323
324 Palette isoPalette;
325
326 if (numIso == 0) { // same palette
327 isoPalette = basePalette;
328 /* intRaster = intRaster; */
329 }
330 else {
331 isoPalette = paletteManager.getLevel(numIso);
332 intRaster = raster.toIndexed(isoPalette);
333 }
320 334
321 IsoPolygonSeriesProducer ipsp = new IsoPolygonSeriesProducer( 335 IsoPolygonSeriesProducer ipsp = new IsoPolygonSeriesProducer(
322 0, 0, 336 0, 0,
323 distance, maxDepth); 337 distance, maxDepth);
324 338
325 numRegions = new Vectorizer(false, intRaster, rasterSize.width) 339 numRegions = new Vectorizer(false, intRaster, rasterSize.width)
326 .process(ipsp); 340 .process(ipsp);
327 341
328 // TODO: Use label generator 342 IsoAttributeGenerator iag = new IsoAttributeGenerator(isoPalette);
329 Collection<PolygonSeries> ps = ipsp.getSeries(/* label generator */); 343 Collection<PolygonSeries> ps = ipsp.getSeries(iag);
344 ipsp.clear();
330 345
331 if (debug) { 346 if (debug) {
332 log.debug("num of iso regions: " + numRegions); 347 log.debug("num of iso regions: " + numRegions);
333 log.debug("num of iso series: " + ps.size()); 348 log.debug("num of iso series: " + ps.size());
334 } 349 }

http://dive4elements.wald.intevation.org