Mercurial > dive4elements > gnv-client
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; }