diff gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java @ 446:f5a041000357

Connected vertical cross section with chart generation. gnv-artifacts/trunk@494 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 01 Jan 2010 12:08:05 +0000
parents f42ed4f10b79
children 92b7ccbf6163
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java	Wed Dec 30 23:02:10 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java	Fri Jan 01 12:08:05 2010 +0000
@@ -39,6 +39,7 @@
 import de.intevation.gnv.chart.Chart;
 import de.intevation.gnv.chart.ChartLabels;
 import de.intevation.gnv.chart.ChartStyle;
+import de.intevation.gnv.chart.VerticalCrossSectionChart;
 
 import de.intevation.gnv.chart.exception.TechnicalChartException;
 
@@ -187,7 +188,9 @@
             : GNVArtifactContext.DEFAULT_VERTICAL_CROSS_SECTION_SAMPLES;
     }
 
-    private static List<Filter.Factory> getFilterFactories(CallContext callContext) {
+    private static List<Filter.Factory> getFilterFactories(
+        CallContext callContext
+    ) {
         GNVArtifactContext context = 
             (GNVArtifactContext)callContext.globalContext();
         List<Filter.Factory> factories = (List<Filter.Factory>)context.get(
@@ -245,8 +248,7 @@
         List<Filter.Factory> filterFactories = getFilterFactories(callContext);
         Interpolation3D      interpolation   = new Interpolation3D(rasterSize);
 
-        double distance = WKTUtils.toKM(
-            DistanceCalculator.calculateDistance(path));
+        double distance = DistanceCalculator.calculateDistance(path);
 
         if (distance < EPSILON) {
             log.warn("distance too short for interpolation");
@@ -259,7 +261,7 @@
             0d,
             distance,
             LinearMetrics.INSTANCE,
-            new ConstantXYDepth(-42d)); // TODO: Use DEM here!!
+            new ConstantXYDepth(-75d)); // TODO: Use DEM here!!
 
         if (!success) {
             log.warn("interpolation failed");
@@ -299,6 +301,8 @@
 
         int numRegions = vectorizer.process(pdsp);
 
+        vectorizer = null; intRaster = null; // help gc
+
         PolygonDataset pds = pdsp.getPolygonDataset();
 
         if (debug) {
@@ -306,7 +310,10 @@
             log.debug("number of series: " + pds.getSeriesCount());
         }
 
-        return null;
+        columns.setInterpolation(interpolation);
+        columns.setPolygonDataset(pds);
+
+        return columns;
     }
 
 
@@ -401,24 +408,38 @@
 
         log.info("Chart not in cache yet.");
 
-        log.warn("This sort of chart is not implemented yet.");
-        /* TODO Implement a special chart for this sort of charts.
-        chart = new VerticalProfileChart(
-            chartLables,
-            chartTheme,
-            parameters,
-            measurements,
-            result,
-            dates,
-            locale
-        );
+        AttributedXYColumns columns =
+            (AttributedXYColumns)result;
+
+        Integer parameterId =
+            (Integer)columns.getAttribute("GROUP1"); // XXX: hardcoded
+
+        if (parameterId == null) {
+            log.error("missing parameter id");
+            return null;
+        }
+
+        Map<Integer, PaletteManager> paletteManagers =
+            getPalettes(callContext);
+
+        PaletteManager paletteManager = paletteManagers.get(parameterId);
+
+        if (paletteManager == null) {
+            log.error("no palette found for parameter id " + parameterId);
+            return null;
+        }
+
+        chart = new VerticalCrossSectionChart(
+            columns,
+            paletteManager.getBase(),
+            locale);
+
         chart.generateChart();
 
         if (CACHE_CHART) {
             log.info("Put chart into cache.");
             purifyChart(chart, uuid);
         }
-        */
 
         return chart;
     }

http://dive4elements.wald.intevation.org