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);
 

http://dive4elements.wald.intevation.org