Mercurial > dive4elements > gnv-client
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 } |