annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java @ 830:3ab5754e72e3

Extract ODV-Generation into its own method that it is possible to override it in subclasses. gnv-artifacts/trunk@924 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 13 Apr 2010 14:35:30 +0000
parents 9058c08eac3a
children 43f3c0cd60f2
rev   line source
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
1 package de.intevation.gnv.state.profile.verticalcrosssection;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
2
527
f598702b2a10 Fixed issue157: Verticalcrosssection charts have a white background as all other chart types have.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 521
diff changeset
3 import java.awt.Color;
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
4 import java.awt.Dimension;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
5 import java.awt.Paint;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
6 import java.io.IOException;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
7 import java.io.OutputStream;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
8 import java.io.UnsupportedEncodingException;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
9 import java.util.ArrayList;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
10 import java.util.Arrays;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
11 import java.util.Collection;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
12 import java.util.HashMap;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
13 import java.util.Iterator;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
14 import java.util.List;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
15 import java.util.Locale;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
16 import java.util.Map;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
17
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
18 import net.sf.ehcache.Cache;
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
19 import net.sf.ehcache.Element;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
20
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
21 import org.apache.log4j.Logger;
830
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
22 import org.jfree.chart.ChartTheme;
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
23
830
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
24 import com.vividsolutions.jts.geom.Coordinate;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
25
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
26 import de.intevation.artifacts.CallContext;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
27 import de.intevation.gnv.artifacts.cache.CacheFactory;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
28 import de.intevation.gnv.artifacts.context.GNVArtifactContext;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
29 import de.intevation.gnv.artifacts.ressource.RessourceFactory;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
30 import de.intevation.gnv.chart.Chart;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
31 import de.intevation.gnv.chart.ChartLabels;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
32 import de.intevation.gnv.chart.VerticalCrossSectionChart;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
33 import de.intevation.gnv.geobackend.base.Result;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
34 import de.intevation.gnv.geobackend.base.ResultDescriptor;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
35 import de.intevation.gnv.geobackend.base.query.QueryExecutor;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
36 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
37 import de.intevation.gnv.geobackend.base.query.exception.QueryException;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
38 import de.intevation.gnv.geobackend.sde.datasources.RasterObject;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
39 import de.intevation.gnv.jfreechart.PolygonDataset;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
40 import de.intevation.gnv.jfreechart.PolygonSeries;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
41 import de.intevation.gnv.math.AttributedXYColumns;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
42 import de.intevation.gnv.math.HeightValue;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
43 import de.intevation.gnv.math.IJKey;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
44 import de.intevation.gnv.math.Interpolation3D;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
45 import de.intevation.gnv.math.LinearMetrics;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
46 import de.intevation.gnv.math.QueriedXYDepth;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
47 import de.intevation.gnv.math.XYColumn;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
48 import de.intevation.gnv.raster.Filter;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
49 import de.intevation.gnv.raster.IsoAttributeGenerator;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
50 import de.intevation.gnv.raster.IsoPolygonSeriesProducer;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
51 import de.intevation.gnv.raster.Palette;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
52 import de.intevation.gnv.raster.PaletteManager;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
53 import de.intevation.gnv.raster.PolygonDatasetProducer;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
54 import de.intevation.gnv.raster.Raster;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
55 import de.intevation.gnv.raster.Vectorizer;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
56 import de.intevation.gnv.state.InputData;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
57 import de.intevation.gnv.state.describedata.KeyValueDescibeData;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
58 import de.intevation.gnv.state.exception.StateException;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
59 import de.intevation.gnv.state.timeseries.TimeSeriesOutputState;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
60 import de.intevation.gnv.statistics.Statistics;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
61 import de.intevation.gnv.statistics.VerticalCrossSectionStatistics;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
62 import de.intevation.gnv.utils.DistanceCalculator;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
63 import de.intevation.gnv.utils.StringUtils;
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
64 import de.intevation.gnv.utils.WKTUtils;
463
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
65
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
66 /**
780
c4156275c1e1 Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
67 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
c4156275c1e1 Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
68 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
c4156275c1e1 Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
69 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
70 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
71 public class VerticalCrossSectionOutputState extends TimeSeriesOutputState {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
72
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
73 public static final String CHART_TYPE = "verticalcrosssection";
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
74
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
75 public static final Integer GROUND_FILL_INDEX = Integer.valueOf(-2);
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
76
528
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
77 public static final boolean USE_INDEX_BUFFER =
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
78 Boolean.getBoolean("gnv.vertical.cross.section.index.buffer");
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
79
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
80 public static final String[] ATTRIBUTE_LIST = {
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
81 "SHAPE",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
82 "Z",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
83 "YORDINATE",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
84 "IPOSITION",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
85 "JPOSITION",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
86 "KPOSITION"
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
87 };
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
88
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
89 private static Logger log = Logger.getLogger(
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
90 VerticalCrossSectionOutputState.class);
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
91
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
92 private String ijkQueryID = "horizontalprofile_meshpoint_cross_ij";
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
93
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
94 private String rangeLabel;
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
95
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
96 /**
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
97 * The UID of this Class
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
98 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
99 private static final long serialVersionUID = 3233620652465061860L;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
100
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
101 /**
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
102 * Constructor
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
103 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
104 public VerticalCrossSectionOutputState() {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
105 super();
343
2e43542e6a11 Added axis labels for charts and use them while generating charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
106 super.domainLable = "chart.verticalcrosssection.title.xaxis";
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
107 this.rangeLabel = "chart.verticalcrosssection.title.yaxis";
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
108 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
109
533
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
110 @Override
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
111 public void initialize(String uuid, CallContext callContext)
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
112 throws StateException {
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
113 super.initialize(uuid, callContext);
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
114
533
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
115 getChartResult(uuid, callContext);
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
116 }
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
117
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
118 @Override
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
119 protected ChartLabels createChartLabels(Locale locale, String uuid) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
120 RessourceFactory factory = RessourceFactory.getInstance();
654
a6081d76fa1c Fixed broken titles in 'Profilschnitt'-charts (issue195).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
121 InputData input = inputData.get(parameterValuesName);
a6081d76fa1c Fixed broken titles in 'Profilschnitt'-charts (issue195).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
122 String parameterName = input.getDescription()[0];
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
123
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
124 if (parameterName == null)
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
125 parameterName = "parameterid";
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
126
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
127 return new ChartLabels(
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
128 createChartTitle(locale, uuid),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
129 createChartSubtitle(locale, uuid),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
130 factory.getRessource(locale, domainLable, domainLable),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
131 factory.getRessource(locale, rangeLabel, rangeLabel),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
132 parameterName
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
133 );
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
134 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
135
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
136
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
137 @Override
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
138 protected String createChartSubtitle(Locale locale, String uuid) {
654
a6081d76fa1c Fixed broken titles in 'Profilschnitt'-charts (issue195).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
139 InputData data = inputData.get(dateValueName);
a6081d76fa1c Fixed broken titles in 'Profilschnitt'-charts (issue195).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
140 String date = data.getDescription()[0];
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
141
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
142 if (date == null)
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
143 date = "dateid";
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
144
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
145 RessourceFactory factory = RessourceFactory.getInstance();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
146 String chartType = factory.getRessource(
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
147 locale, CHART_TYPE, CHART_TYPE);
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
148
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
149 return chartType + ": " + date;
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
150 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
151
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
152
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
153 @Override
439
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
154 protected Object getChartResult(String uuid, CallContext callContext) {
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
155 log.debug("VerticalCrossSectionOutputState.getChartResult");
653
987584605a60 Changed insufficient key to store results used for chart generation in cache (issue189).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 632
diff changeset
156 String key = getHash();
830
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
157 log.debug("Hash: "+key);
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
158
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
159 CacheFactory factory = CacheFactory.getInstance();
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
160 if (factory.isInitialized()) {
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
161 log.info("Using a cachce.");
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
162 Cache cache = factory.getCache();
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
163
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
164 Element element = cache.get(key);
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
165 if (element != null)
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
166 return element.getObjectValue();
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
167
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
168 log.debug("No results in cache yet.");
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
169 Object obj = getData(uuid, callContext);
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
170 cache.put(new Element(key, obj));
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
171
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
172 return obj;
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
173 }
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
174 else {
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
175 log.info("Not using a cache.");
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
176 return getData(uuid, callContext);
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
177 }
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
178 }
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
179
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
180
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
181 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
182 * Retrieves the data used to create a VerticalCrossProfileChart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
183 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
184 * @param uuid The UUID of the current artifact.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
185 * @param callContext The CallContext object.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
186 * @return the data used to create a VerticalCrossProfileChart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
187 */
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
188 protected Object getData(String uuid, CallContext callContext) {
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
189 Collection<Result> result = null;
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
190 InputData meshLine = inputData.get("mesh_linestring");
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
191 InputData meshId = inputData.get("meshid");
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
192
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
193 if (meshLine == null) {
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
194 log.error("mesh_linestring is not defined");
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
195 throw new IllegalStateException("missing mesh_linestring");
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
196 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
197
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
198 if (meshId == null) {
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
199 log.error("meshid is not defined");
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
200 throw new IllegalStateException("missing meshid");
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
201 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
202
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
203 Coordinate [] coords = WKTUtils.toCoordinates(
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
204 meshLine.getValue());
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
205
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
206 if (coords == null) {
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
207 throw new IllegalStateException("cannot read coordinates");
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
208 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
209
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
210 try {
528
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
211 String additionWhere = USE_INDEX_BUFFER
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
212 ? WKTUtils.worldCoordinatesToIndex(
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
213 coords,
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
214 result,
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
215 meshId.getValue(),
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
216 ijkQueryID)
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
217 : WKTUtils.TRUE_EXPRESSION;
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
218
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
219 String[] addedFilterValues = StringUtils.append(
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
220 generateFilterValuesFromInputData(),
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
221 additionWhere);
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
222
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
223 QueryExecutor exec = QueryExecutorFactory
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
224 .getInstance()
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
225 .getQueryExecutor();
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
226
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
227 result = exec.executeQuery(queryID, addedFilterValues);
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
228 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
229 catch (QueryException qe) {
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
230 log.error(qe, qe);
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
231 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
232
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
233 Object obj = process(
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
234 Arrays.asList(coords),
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
235 preProcess(result),
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
236 callContext);
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
237
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
238 return obj;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
239 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
240
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
241
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
242 @Override
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
243 protected String getSelectedInputDataName(String uuid, String id) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
244 Collection values = getCollection(id, uuid);
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
245
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
246 if (values != null) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
247 Iterator it = values.iterator();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
248
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
249 while (it.hasNext()) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
250 KeyValueDescibeData data = (KeyValueDescibeData) it.next();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
251
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
252 if (data.isSelected()) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
253 return data.getValue();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
254 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
255 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
256 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
257 return null;
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
258 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
259
463
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
260 private static int getGroundInterpolation(CallContext callContext) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
261 GNVArtifactContext context =
463
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
262 (GNVArtifactContext)callContext.globalContext();
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
263
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
264 String interpolation = (String)context.get(
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
265 GNVArtifactContext.VERTICAL_CROSS_SECTION_GROUND_INTERPOLATION_KEY);
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
266
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
267 return RasterObject.getInterpolationType(interpolation);
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
268 }
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
269
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
270 private static Dimension getRasterSize(CallContext callContext) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
271 GNVArtifactContext context =
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
272 (GNVArtifactContext)callContext.globalContext();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
273 Dimension size = (Dimension)context.get(
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
274 GNVArtifactContext.VERTICAL_CROSS_SECTION_SAMPLES_KEY);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
275 return size != null
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
276 ? size
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
277 : GNVArtifactContext.DEFAULT_VERTICAL_CROSS_SECTION_SAMPLES;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
278 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
279
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
280 private static List<Filter.Factory> getFilterFactories(
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
281 CallContext callContext
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
282 ) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
283 GNVArtifactContext context =
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
284 (GNVArtifactContext)callContext.globalContext();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
285 List<Filter.Factory> factories = (List<Filter.Factory>)context.get(
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
286 GNVArtifactContext.VERTICAL_CROSS_SECTION_FILTER_FACTORIES_KEY);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
287 return factories != null
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
288 ? factories
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
289 : new ArrayList<Filter.Factory>();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
290 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
291
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
292 private static Map<Integer, PaletteManager> getPalettes(
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
293 CallContext callContext
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
294 ) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
295 GNVArtifactContext context =
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
296 (GNVArtifactContext)callContext.globalContext();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
297 Map<Integer, PaletteManager> palettes =
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
298 (Map<Integer, PaletteManager>)context.get(
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
299 GNVArtifactContext.PALETTES_KEY);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
300 return palettes != null
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
301 ? palettes
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
302 : new HashMap<Integer, PaletteManager>();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
303 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
304
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
305 private static Paint getGroundFill(CallContext callContext) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
306 GNVArtifactContext context =
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
307 (GNVArtifactContext)callContext.globalContext();
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
308 Paint fill = (Paint)context.get(
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
309 GNVArtifactContext.VERTICAL_CROSS_SECTION_GROUND_FILL_KEY);
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
310 return fill != null
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
311 ? fill
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
312 : GNVArtifactContext.DEFAULT_VERTICAL_CROSS_SECTION_GROUND_FILL;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
313 }
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
314
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
315 public static final double EPSILON = 1e-5d;
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
316
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
317
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
318 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
319 * Finalize the data used for chart generation. Isolines are added, colors
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
320 * are assigned to polygons and the seabed is added.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
321 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
322 * @param path The path which have been inserted while parameterization.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
323 * @param columns The data used to be displayed in a 2D chart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
324 * @param callContext The CallContext object.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
325 * @return the finalized data ready for chart generation.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
326 */
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
327 protected Object process(
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
328 List<Coordinate> path,
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
329 AttributedXYColumns columns,
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
330 CallContext callContext
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
331 ) {
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
332 Integer parameterId =
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
333 (Integer)columns.getAttribute("GROUP1"); // XXX: hardcoded
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
334
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
335 if (parameterId == null) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
336 log.error("missing parameter id");
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
337 return null;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
338 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
339
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
340 Map<Integer, PaletteManager> paletteManagers =
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
341 getPalettes(callContext);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
342
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
343 PaletteManager paletteManager = paletteManagers.get(parameterId);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
344
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
345 if (paletteManager == null) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
346 log.error("no palette found for parameter id " + parameterId);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
347 return null;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
348 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
349
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
350 boolean debug = log.isDebugEnabled();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
351
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
352 if (debug) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
353 log.debug("using palette '" + paletteManager.getName() + "'");
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
354 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
355
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
356 Dimension rasterSize = getRasterSize(callContext);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
357 List<Filter.Factory> filterFactories = getFilterFactories(callContext);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
358 Interpolation3D interpolation = new Interpolation3D(rasterSize);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
359
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
360 double distance = DistanceCalculator.calculateDistance(path);
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
361
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
362 if (distance < EPSILON) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
363 log.warn("distance too short for interpolation");
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
364 return null;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
365 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
366
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
367 boolean success = interpolation.interpolate(
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
368 path,
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
369 columns.getXYColumns(),
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
370 0d,
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
371 distance,
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
372 LinearMetrics.INSTANCE,
463
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
373 new QueriedXYDepth(
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
374 getGroundInterpolation(callContext)));
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
375
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
376 if (!success) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
377 log.warn("interpolation failed");
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
378 return null;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
379 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
380
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
381 // Do the post processing
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
382 Raster raster = new Raster(
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
383 interpolation.getRaster(),
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
384 rasterSize.width);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
385
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
386 for (Filter.Factory factory: filterFactories) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
387 raster = factory.create().filter(raster);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
388 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
389
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
390 if (debug) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
391 log.debug("to indexed raster");
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
392 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
393
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
394 // scan for regions with base palette
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
395 Palette basePalette = paletteManager.getBase();
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
396
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
397 int [] intRaster = raster.toIndexed(basePalette);
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
398
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
399 // produce JFreeChart compatible polygons
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
400
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
401 if (debug) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
402 log.debug("vectorize indexed raster");
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
403 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
404
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
405 double maxDepth = interpolation.getMaxDepth();
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
406
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
407 PolygonDatasetProducer pdsp = new PolygonDatasetProducer(
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
408 0, 0,
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
409 distance, maxDepth);
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
410
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
411 int numRegions = new Vectorizer(intRaster, rasterSize.width)
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
412 .process(pdsp);
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
413
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
414 PolygonDataset pds = pdsp.getPolygonDataset();
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
415
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
416 // Count number of colors before generating seabed
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
417 // because its used to determine the number of iso lines.
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
418 int numColors = pds.getSeriesCount();
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
419
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
420 if (debug) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
421 log.debug("number of regions: " + numRegions);
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
422 log.debug("number of colors: " + numColors);
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
423 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
424
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
425 // generate seabed polygon
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
426
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
427 PolygonSeries seabed = OutputHelper.createSeabedPolygon(
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
428 interpolation,
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
429 GROUND_FILL_INDEX);
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
430
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
431 if (seabed != null) {
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
432 pds.addSeries(seabed);
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
433 }
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
434
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
435 // generate iso lines
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
436
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
437 int numIso;
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
438
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
439 if (numColors < 5) { numIso = 5; }
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
440 else if (numColors < 10) { numIso = 2; }
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
441 else { numIso = 0; }
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
442
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
443 Palette isoPalette;
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
444
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
445 if (numIso == 0) { // same palette
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
446 isoPalette = basePalette;
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
447 /* intRaster = intRaster; */
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
448 }
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
449 else {
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
450 isoPalette = paletteManager.getLevel(numIso);
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
451 intRaster = raster.toIndexed(isoPalette);
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
452 }
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
453
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
454 IsoPolygonSeriesProducer ipsp = new IsoPolygonSeriesProducer(
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
455 0, 0,
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
456 distance, maxDepth);
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
457
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
458 numRegions = new Vectorizer(false, intRaster, rasterSize.width)
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
459 .process(ipsp);
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
460
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
461 IsoAttributeGenerator iag = new IsoAttributeGenerator(isoPalette);
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
462 Collection<PolygonSeries> ps = ipsp.getSeries(iag);
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
463 ipsp.clear();
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
464
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
465 if (debug) {
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
466 log.debug("num of iso regions: " + numRegions);
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
467 log.debug("num of iso series: " + ps.size());
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
468 }
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
469
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
470 pds.addAllSeries(ps);
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
471
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
472 columns.setInterpolation(interpolation);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
473 columns.setPolygonDataset(pds);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
474
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
475 return columns;
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
476 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
477
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
478
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
479 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
480 * Pre-process the data returned by database query. The resulting data is
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
481 * not ready for chart creation!
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
482 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
483 * @param results Data returned by database.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
484 * @return Pre-processed data which is not ready for chart creation yet.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
485 */
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
486 protected AttributedXYColumns preProcess(Collection results) {
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
487
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
488 AttributedXYColumns attColumns = new AttributedXYColumns();
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
489 Map<IJKey, XYColumn> map = new HashMap<IJKey, XYColumn>(1013);
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
490 Iterator iter = results.iterator();
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
491
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
492 int sIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
493 int iIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
494 int jIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
495 int kIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
496 int vIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
497 int zIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
498
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
499 while (iter.hasNext()) {
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
500 Result result = (Result) iter.next();
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
501
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
502 if (sIdx == -1) {
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
503 ResultDescriptor rd = result.getResultDescriptor();
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
504 int columnCount = rd.getColumnCount();
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
505
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
506 sIdx = rd.getColumnIndex("SHAPE");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
507 iIdx = rd.getColumnIndex("IPOSITION");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
508 jIdx = rd.getColumnIndex("JPOSITION");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
509 kIdx = rd.getColumnIndex("KPOSITION");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
510 vIdx = rd.getColumnIndex("YORDINATE");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
511 zIdx = rd.getColumnIndex("Z");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
512
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
513 for (int i = 0; i < columnCount; i++) {
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
514 String colName = rd.getColumnName(i);
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
515
439
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
516 if (!StringUtils.contains(ATTRIBUTE_LIST, colName)) {
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
517 attColumns.setAttribute(
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
518 colName,
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
519 result.getObject(colName));
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
520 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
521 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
522 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
523
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
524 double v = result.getDouble(vIdx);
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
525 double z = result.getDouble(zIdx);
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
526 int i = result.getInteger(iIdx);
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
527 int j = result.getInteger(jIdx);
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
528 int k = result.getInteger(kIdx);
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
529
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
530 IJKey key = new IJKey(i, j);
431
422275fc9927 Refactored the XYColumn and Point2d code a bit to be more reusable in 3D.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 429
diff changeset
531
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
532 XYColumn col = (XYColumn)map.get(key);
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
533
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
534 if (col == null) {
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
535 Coordinate coord = WKTUtils.toCoordinate(result.getString(sIdx));
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
536 if (coord == null) coord = new Coordinate();
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
537 col = new XYColumn(coord.x, coord.y, i, j);
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
538 map.put(key, col);
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
539 }
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
540
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
541 col.add(new HeightValue(z, v, k));
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
542 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
543
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
544 ArrayList<XYColumn> cols = new ArrayList<XYColumn>(map.values());
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
545 attColumns.setXYColumns(cols);
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
546
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
547 return attColumns;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
548 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
549
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
550
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
551 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
552 * This <code>getChart</code> method returns a 2D VerticalCrossSectionChart
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
553 * displaying polygon data with isolines and a legend describing the colors
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
554 * used in that chart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
555 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
556 * @param chartLables Labels used to decorate the chart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
557 * @param theme The theme used to adjust the look of the chart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
558 * @param parameters A collection with parameters this chart contains.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
559 * @param measurements A collection with measurement this chart contains.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
560 * @param dates A collection with dates this chart contains.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
561 * @param result The data collection used to be displayed in this chart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
562 * @param locale The Locale used to determine the language.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
563 * @param uuid The uuid of the current artifact.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
564 * @param linesVisible A boolean property to determine the visibility of
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
565 * lines connecting two points in a chart (not used in this chart type).
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
566 * @param shapesVisible A boolean property to determine the visiblity of
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
567 * datapoints in this chart (not used in this chart type).
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
568 * @param callContext The CallContext object.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
569 * @return a 2D chart representing the data as polygons.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
570 */
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
571 @Override
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
572 protected Chart getChart(
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
573 ChartLabels chartLables,
358
2f7a28f211c7 Fetch ChartTheme from CallContext instead of creating it each time before creating a chart.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 343
diff changeset
574 ChartTheme theme,
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
575 Collection parameters,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
576 Collection measurements,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
577 Collection dates,
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
578 Object result,
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
579 Locale locale,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
580 String uuid,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
581 boolean linesVisible,
439
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
582 boolean shapesVisible,
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
583 CallContext callContext
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
584 ) {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
585 Chart chart = null;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
586
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
587 if (CACHE_CHART) {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
588 log.info("Try to get verticalcrosssection chart from cache.");
439
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
589 chart = (Chart) getChartFromCache(uuid, callContext);
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
590 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
591
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
592 if (chart != null)
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
593 return chart;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
594
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
595 log.info("Chart not in cache yet.");
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
596
462
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
597 if (!(result instanceof AttributedXYColumns)) {
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
598 log.error("result of wrong type");
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
599 return null;
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
600 }
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
601
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
602 AttributedXYColumns columns = (AttributedXYColumns)result;
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
603
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
604 Integer parameterId =
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
605 (Integer)columns.getAttribute("GROUP1"); // XXX: hardcoded
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
606
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
607 if (parameterId == null) {
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
608 log.error("missing parameter id");
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
609 return null;
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
610 }
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
611
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
612 Map<Integer, PaletteManager> paletteManagers =
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
613 getPalettes(callContext);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
614
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
615 PaletteManager paletteManager = paletteManagers.get(parameterId);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
616
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
617 if (paletteManager == null) {
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
618 log.error("no palette found for parameter id " + parameterId);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
619 return null;
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
620 }
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
621
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
622 HashMap<Integer, Paint> special = new HashMap<Integer, Paint>();
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
623 special.put(GROUND_FILL_INDEX, getGroundFill(callContext));
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
624
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
625 chart = new VerticalCrossSectionChart(
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
626 columns,
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
627 paletteManager.getBase(),
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
628 special,
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
629 locale,
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
630 chartLables);
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
631
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
632 chart.generateChart();
527
f598702b2a10 Fixed issue157: Verticalcrosssection charts have a white background as all other chart types have.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 521
diff changeset
633 ((VerticalCrossSectionChart)chart).setBackgroundPaint(Color.WHITE);
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
634
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
635 if (CACHE_CHART) {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
636 log.info("Put chart into cache.");
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
637 purifyChart(chart, uuid);
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
638 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
639
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
640 return chart;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
641 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
642
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
643
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
644 @Override
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
645 protected Statistics getStatisticsGenerator() {
454
04cfb4e3da4f Refactored statistics classes a bit. Added class for vertical cross sections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 448
diff changeset
646 return new VerticalCrossSectionStatistics();
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
647 }
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
648
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
649 /**
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
650 * Nothing happens here. <b>This method should never be called</b> until
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
651 * there is a wise implementation of a csv representation of the polygon
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
652 * data.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
653 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
654 * @param outputStream The output stream used to write the csv file to.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
655 * @param chartResult The data used to be written to csv file.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
656 * @throws UnsupportedEncodingException if the encoding is not supported.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
657 * @throws IOException if an error occured while writing to output stream.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
658 * @throws StateException if an error occured while csv file creation.
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
659 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
660 @Override
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
661 protected void createCSV(
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
662 OutputStream outputStream,
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
663 Collection<Result> chartResult
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
664 )
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
665 throws UnsupportedEncodingException, IOException, StateException
432
6a70e8883307 Added some type safety. Fixed z value bug in reading database preprocessing. Only dissemble WKT points if really needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 431
diff changeset
666 {
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
667 // TODO: Implement a substitution which makes sense.
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
668 }
830
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
669
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
670 @Override
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
671 protected void createODV(OutputStream outputStream, String uuid,
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
672 CallContext callContext) throws IOException,
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
673 StateException {
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
674 Object chartResult = this.getChartResult(uuid, callContext);
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
675 log.debug("Hier gehts weiter");
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
676 }
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
677
3ab5754e72e3 Extract ODV-Generation into its own method that it is possible to override it in subclasses.
Tim Englich <tim.englich@intevation.de>
parents: 804
diff changeset
678
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
679 }
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
680 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org