Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java @ 447:92b7ccbf6163
Improved generation of iso lines in vertical cross section.
gnv-artifacts/trunk@495 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 01 Jan 2010 21:52:41 +0000 |
parents | f5a041000357 |
children | 3cb2bea50456 |
comparison
equal
deleted
inserted
replaced
446:f5a041000357 | 447:92b7ccbf6163 |
---|---|
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.IsoPolygonSeriesProducer; | |
79 import de.intevation.gnv.raster.Vectorizer; | 80 import de.intevation.gnv.raster.Vectorizer; |
80 | 81 |
81 import de.intevation.gnv.jfreechart.PolygonDataset; | 82 import de.intevation.gnv.jfreechart.PolygonDataset; |
83 import de.intevation.gnv.jfreechart.PolygonSeries; | |
82 | 84 |
83 /** | 85 /** |
84 * @author Tim Englich (tim.englich@intevation.de) | 86 * @author Tim Englich (tim.englich@intevation.de) |
85 * @author Ingo Weinzierl (iweinzierl@intevation.de) | 87 * @author Ingo Weinzierl (iweinzierl@intevation.de) |
86 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) | 88 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) |
290 | 292 |
291 if (debug) { | 293 if (debug) { |
292 log.debug("vectorize indexed raster"); | 294 log.debug("vectorize indexed raster"); |
293 } | 295 } |
294 | 296 |
297 double maxDepth = interpolation.getMaxDepth(); | |
298 | |
295 PolygonDatasetProducer pdsp = new PolygonDatasetProducer( | 299 PolygonDatasetProducer pdsp = new PolygonDatasetProducer( |
296 0, 0, | 300 0, 0, |
297 distance, interpolation.getMaxDepth()); | 301 distance, maxDepth); |
298 | 302 |
299 Vectorizer vectorizer = new Vectorizer( | 303 int numRegions = new Vectorizer(intRaster, rasterSize.width) |
300 intRaster, rasterSize.width); | 304 .process(pdsp); |
301 | 305 |
302 int numRegions = vectorizer.process(pdsp); | 306 intRaster = null; // help gc |
303 | |
304 vectorizer = null; intRaster = null; // help gc | |
305 | 307 |
306 PolygonDataset pds = pdsp.getPolygonDataset(); | 308 PolygonDataset pds = pdsp.getPolygonDataset(); |
307 | 309 |
308 if (debug) { | 310 if (debug) { |
309 log.debug("number of regions: " + numRegions); | 311 log.debug("number of regions: " + numRegions); |
310 log.debug("number of series: " + pds.getSeriesCount()); | 312 log.debug("number of series: " + pds.getSeriesCount()); |
311 } | 313 } |
314 | |
315 // generate iso lines | |
316 | |
317 Palette isoPalette = paletteManager.getLevel(2); | |
318 | |
319 intRaster = raster.toIndexed(isoPalette); | |
320 | |
321 IsoPolygonSeriesProducer ipsp = new IsoPolygonSeriesProducer( | |
322 0, 0, | |
323 distance, maxDepth); | |
324 | |
325 numRegions = new Vectorizer(false, intRaster, rasterSize.width) | |
326 .process(ipsp); | |
327 | |
328 // TODO: Use label generator | |
329 Collection<PolygonSeries> ps = ipsp.getSeries(/* label generator */); | |
330 | |
331 if (debug) { | |
332 log.debug("num of iso regions: " + numRegions); | |
333 log.debug("num of iso series: " + ps.size()); | |
334 } | |
335 | |
336 pds.addAllSeries(ps); | |
312 | 337 |
313 columns.setInterpolation(interpolation); | 338 columns.setInterpolation(interpolation); |
314 columns.setPolygonDataset(pds); | 339 columns.setPolygonDataset(pds); |
315 | 340 |
316 return columns; | 341 return columns; |