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;

http://dive4elements.wald.intevation.org