Mercurial > dive4elements > gnv-client
diff 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 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java Fri Jan 01 12:08:05 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java Fri Jan 01 21:52:41 2010 +0000 @@ -76,9 +76,11 @@ import de.intevation.gnv.raster.Palette; import de.intevation.gnv.raster.Raster; import de.intevation.gnv.raster.PolygonDatasetProducer; +import de.intevation.gnv.raster.IsoPolygonSeriesProducer; import de.intevation.gnv.raster.Vectorizer; import de.intevation.gnv.jfreechart.PolygonDataset; +import de.intevation.gnv.jfreechart.PolygonSeries; /** * @author Tim Englich (tim.englich@intevation.de) @@ -292,24 +294,47 @@ log.debug("vectorize indexed raster"); } + double maxDepth = interpolation.getMaxDepth(); + PolygonDatasetProducer pdsp = new PolygonDatasetProducer( 0, 0, - distance, interpolation.getMaxDepth()); + distance, maxDepth); - Vectorizer vectorizer = new Vectorizer( - intRaster, rasterSize.width); + int numRegions = new Vectorizer(intRaster, rasterSize.width) + .process(pdsp); - int numRegions = vectorizer.process(pdsp); - - vectorizer = null; intRaster = null; // help gc + intRaster = null; // help gc PolygonDataset pds = pdsp.getPolygonDataset(); if (debug) { log.debug("number of regions: " + numRegions); - log.debug("number of series: " + pds.getSeriesCount()); + log.debug("number of series: " + pds.getSeriesCount()); } + // generate iso lines + + Palette isoPalette = paletteManager.getLevel(2); + + intRaster = raster.toIndexed(isoPalette); + + IsoPolygonSeriesProducer ipsp = new IsoPolygonSeriesProducer( + 0, 0, + distance, maxDepth); + + numRegions = new Vectorizer(false, intRaster, rasterSize.width) + .process(ipsp); + + // TODO: Use label generator + Collection<PolygonSeries> ps = ipsp.getSeries(/* label generator */); + + if (debug) { + log.debug("num of iso regions: " + numRegions); + log.debug("num of iso series: " + ps.size()); + } + + pds.addAllSeries(ps); + columns.setInterpolation(interpolation); columns.setPolygonDataset(pds);