annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java @ 1115:f953c9a559d8

Added license file and license headers. gnv-artifacts/trunk@1260 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 02 Nov 2010 17:46:55 +0000
parents 51f3edc9d743
children
rev   line source
1115
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
1 /*
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
2 * Copyright (c) 2010 by Intevation GmbH
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
3 *
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
5 * Read the file LGPL.txt coming with the software for details
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
7 */
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1090
diff changeset
8
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
9 package de.intevation.gnv.state.profile.verticalcrosssection;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
10
837
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
11 import au.com.bytecode.opencsv.CSVWriter;
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
12
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
13 import java.awt.Color;
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
14 import java.awt.Dimension;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
15 import java.awt.Paint;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
16 import java.io.IOException;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
17 import java.io.OutputStream;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
18 import java.io.UnsupportedEncodingException;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
19 import java.util.ArrayList;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
20 import java.util.Arrays;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
21 import java.util.Collection;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
22 import java.util.HashMap;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
23 import java.util.Iterator;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
24 import java.util.List;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
25 import java.util.Locale;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
26 import java.util.Map;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
27
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
28 import net.sf.ehcache.Cache;
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
29 import net.sf.ehcache.Element;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
30
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
31 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
32 import org.jfree.chart.ChartTheme;
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
33
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
34 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
35
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.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
37 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
38 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
39 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
40 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
41 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
42 import de.intevation.gnv.chart.VerticalCrossSectionChart;
837
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
43 import de.intevation.gnv.exports.DefaultProfile;
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
44 import de.intevation.gnv.exports.Export;
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
45 import de.intevation.gnv.exports.VerticalCrossODVExport;
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
46 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
47 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
48 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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59 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
60 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
61 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
62 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
63 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
64 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
65 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
66 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
67 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
68 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
69 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
70 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
71 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
72 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
73 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
74 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
75 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
76 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
77 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
78
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
79 /**
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
80 * @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
81 * @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
82 * @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
83 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
84 public class VerticalCrossSectionOutputState extends TimeSeriesOutputState {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
85
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
86 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
87
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
88 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
89
528
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
90 public static final boolean USE_INDEX_BUFFER =
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
91 Boolean.getBoolean("gnv.vertical.cross.section.index.buffer");
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
92
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
93 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
94 "SHAPE",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
95 "Z",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
96 "YORDINATE",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
97 "IPOSITION",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
98 "JPOSITION",
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
99 "KPOSITION"
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
100 };
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
101
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
102 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
103 VerticalCrossSectionOutputState.class);
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
104
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
105 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
106
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
107 private String rangeLabel;
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
108
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
109 /**
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
110 * The UID of this Class
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
111 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
112 private static final long serialVersionUID = 3233620652465061860L;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
113
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
114 /**
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
115 * Constructor
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
116 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
117 public VerticalCrossSectionOutputState() {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
118 super();
343
2e43542e6a11 Added axis labels for charts and use them while generating charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
119 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
120 this.rangeLabel = "chart.verticalcrosssection.title.yaxis";
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
121 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
122
533
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
123 @Override
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
124 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
125 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
126 super.initialize(uuid, callContext);
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
127
533
78e0e239a0b9 Calculate results after reaching the output state and store them in cache.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 528
diff changeset
128 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
129 }
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
130
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
131 @Override
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
132 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
133 RessourceFactory factory = RessourceFactory.getInstance();
654
a6081d76fa1c Fixed broken titles in 'Profilschnitt'-charts (issue195).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
134 InputData input = inputData.get(parameterValuesName);
a6081d76fa1c Fixed broken titles in 'Profilschnitt'-charts (issue195).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
135 String parameterName = input.getDescription()[0];
492
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 if (parameterName == null)
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
138 parameterName = "parameterid";
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
139
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
140 return new ChartLabels(
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
141 createChartTitle(locale, uuid),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
142 createChartSubtitle(locale, uuid),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
143 factory.getRessource(locale, domainLable, domainLable),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
144 factory.getRessource(locale, rangeLabel, rangeLabel),
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
145 parameterName
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
146 );
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
147 }
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
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
150 @Override
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
151 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
152 InputData data = inputData.get(dateValueName);
a6081d76fa1c Fixed broken titles in 'Profilschnitt'-charts (issue195).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 653
diff changeset
153 String date = data.getDescription()[0];
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
154
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
155 if (date == null)
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
156 date = "dateid";
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
157
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
158 RessourceFactory factory = RessourceFactory.getInstance();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
159 String chartType = factory.getRessource(
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
160 locale, CHART_TYPE, CHART_TYPE);
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
161
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
162 return chartType + ": " + date;
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
163 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
164
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
165
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
166 @Override
439
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
167 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
168 log.debug("VerticalCrossSectionOutputState.getChartResult");
1060
cc4ec127d666 Remove the elements of an outdated state from cache if its endOfLife method is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1030
diff changeset
169 String key = getHash();
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
170
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
171 CacheFactory factory = CacheFactory.getInstance();
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
172 if (factory.isInitialized()) {
1030
c07d9f9a738c Removed bugs that existed in the caching mechanism (issue264, issue268).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 852
diff changeset
173 log.info("Using a cachce - key: " + key);
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
174 Cache cache = factory.getCache();
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
175
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
176 Element element = cache.get(key);
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
177 if (element != null)
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
178 return element.getObjectValue();
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
179
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
180 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
181 Object obj = getData(uuid, callContext);
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
182 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
183
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
184 return obj;
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
185 }
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
186 else {
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
187 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
188 return getData(uuid, callContext);
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
189 }
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
190 }
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
191
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
192
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
193 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
194 * 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
195 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
196 * @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
197 * @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
198 * @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
199 */
632
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
200 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
201 Collection<Result> result = null;
62ea2a7b1067 'Profilschnitte' are working without cache as well, now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 533
diff changeset
202 InputData meshId = inputData.get("meshid");
1090
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
203 String meshLine = getLineString();
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
204
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
205 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
206 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
207 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
208 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
209
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
210 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
211 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
212 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
213 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
214
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
215 Coordinate [] coords = WKTUtils.toCoordinates(
1090
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
216 meshLine);
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
217
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
218 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
219 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
220 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
221
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
222 try {
528
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
223 String additionWhere = USE_INDEX_BUFFER
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
224 ? WKTUtils.worldCoordinatesToIndex(
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
225 coords,
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
226 result,
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
227 meshId.getValue(),
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
228 ijkQueryID)
44415ae01ddb Fixed issue gnv/issue159
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 527
diff changeset
229 : 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
230
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
231 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
232 generateFilterValuesFromInputData(),
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
233 additionWhere);
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
234
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
235 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
236 .getInstance()
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
237 .getQueryExecutor();
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
238
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
239 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
240 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
241 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
242 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
243 }
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
244
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
245 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
246 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
247 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
248 callContext);
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
249
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
250 return obj;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
251 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
252
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
253
1090
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
254 protected String getLineString() {
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
255 InputData meshLine = inputData.get("mesh_linestring");
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
256
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
257 return meshLine != null ? meshLine.getValue() : null;
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
258 }
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
259
51f3edc9d743 Added missing classes of the last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1060
diff changeset
260
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
261 @Override
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
262 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
263 Collection values = getCollection(id, uuid);
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
264
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
265 if (values != null) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
266 Iterator it = values.iterator();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
267
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
268 while (it.hasNext()) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
269 KeyValueDescibeData data = (KeyValueDescibeData) it.next();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
270
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
271 if (data.isSelected()) {
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
272 return data.getValue();
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
273 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
274 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
275 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
276 return null;
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
277 }
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
278
463
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
279 private static int getGroundInterpolation(CallContext callContext) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
280 GNVArtifactContext context =
463
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
281 (GNVArtifactContext)callContext.globalContext();
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
282
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
283 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
284 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
285
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
286 return RasterObject.getInterpolationType(interpolation);
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
287 }
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
288
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
289 private static Dimension getRasterSize(CallContext callContext) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
290 GNVArtifactContext context =
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
291 (GNVArtifactContext)callContext.globalContext();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
292 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
293 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
294 return size != null
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
295 ? size
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
296 : 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
297 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
298
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
299 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
300 CallContext callContext
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
301 ) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
302 GNVArtifactContext context =
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
303 (GNVArtifactContext)callContext.globalContext();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
304 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
305 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
306 return factories != null
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
307 ? factories
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
308 : 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
309 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
310
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
311 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
312 CallContext callContext
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
313 ) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
314 GNVArtifactContext context =
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
315 (GNVArtifactContext)callContext.globalContext();
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
316 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
317 (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
318 GNVArtifactContext.PALETTES_KEY);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
319 return palettes != null
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
320 ? palettes
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
321 : 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
322 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
323
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
324 private static Paint getGroundFill(CallContext callContext) {
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
325 GNVArtifactContext context =
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
326 (GNVArtifactContext)callContext.globalContext();
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
327 Paint fill = (Paint)context.get(
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
328 GNVArtifactContext.VERTICAL_CROSS_SECTION_GROUND_FILL_KEY);
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
329 return fill != null
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
330 ? fill
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
331 : GNVArtifactContext.DEFAULT_VERTICAL_CROSS_SECTION_GROUND_FILL;
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
332 }
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
333
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
334 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
335
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
336
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
337 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
338 * 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
339 * 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
340 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
341 * @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
342 * @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
343 * @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
344 * @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
345 */
440
eb2ac62e853a Cleaned up messy code a bit in "Horizontales Schnittprofil" and "Profilschnitt".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 439
diff changeset
346 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
347 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
348 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
349 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
350 ) {
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
351 Integer parameterId =
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
352 (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
353
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
354 if (parameterId == null) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
355 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
356 return null;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
357 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
358
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
359 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
360 getPalettes(callContext);
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 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
363
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
364 if (paletteManager == null) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
365 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
366 return null;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
367 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
368
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
369 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
370
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
371 if (debug) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
372 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
373 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
374
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
375 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
376 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
377 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
378
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
379 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
380
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
381 if (distance < EPSILON) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
382 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
383 return null;
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
384 }
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 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
387 path,
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
388 columns.getXYColumns(),
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
389 0d,
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
390 distance,
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
391 LinearMetrics.INSTANCE,
463
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
392 new QueriedXYDepth(
07672838fa5f Make ground interpolation for vertical cross section configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 462
diff changeset
393 getGroundInterpolation(callContext)));
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
394
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
395 if (!success) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
396 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
397 return null;
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
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
400 // 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
401 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
402 interpolation.getRaster(),
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
403 rasterSize.width);
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
404
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
405 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
406 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
407 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
408
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
409 if (debug) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
410 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
411 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
412
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
413 // 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
414 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
415
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
416 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
417
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
418 // 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
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("vectorize indexed raster");
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
422 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
423
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
424 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
425
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
426 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
427 0, 0,
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
428 distance, maxDepth);
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
429
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
430 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
431 .process(pdsp);
445
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
432
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
433 PolygonDataset pds = pdsp.getPolygonDataset();
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
434
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
435 // Count number of colors before generating seabed
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
436 // 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
437 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
438
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
439 if (debug) {
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
440 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
441 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
442 }
f42ed4f10b79 Fixed some bugs and create "Profilschnitt" polygons via configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 440
diff changeset
443
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
444 // generate seabed polygon
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
445
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
446 PolygonSeries seabed = OutputHelper.createSeabedPolygon(
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
447 interpolation,
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
448 GROUND_FILL_INDEX);
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
449
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
450 if (seabed != null) {
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
451 pds.addSeries(seabed);
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
452 }
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
453
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
454 // generate iso lines
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
455
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
456 int numIso;
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
457
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
458 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
459 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
460 else { numIso = 0; }
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
461
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
462 Palette isoPalette;
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
463
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
464 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
465 isoPalette = basePalette;
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
466 /* intRaster = intRaster; */
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
467 }
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
468 else {
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
469 isoPalette = paletteManager.getLevel(numIso);
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
470 intRaster = raster.toIndexed(isoPalette);
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
471 }
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
472
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
473 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
474 0, 0,
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
475 distance, maxDepth);
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
476
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
477 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
478 .process(ipsp);
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
479
448
3cb2bea50456 Generate iso line classes according gnv-issues/issue108
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 447
diff changeset
480 IsoAttributeGenerator iag = new IsoAttributeGenerator(isoPalette);
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
481 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
482 ipsp.clear();
447
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
483
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
484 if (debug) {
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
485 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
486 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
487 }
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
488
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
489 pds.addAllSeries(ps);
92b7ccbf6163 Improved generation of iso lines in vertical cross section.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 446
diff changeset
490
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
491 columns.setInterpolation(interpolation);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
492 columns.setPolygonDataset(pds);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
493
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
494 return columns;
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
495 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
496
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
497
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
498 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
499 * 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
500 * 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
501 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
502 * @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
503 * @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
504 */
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
505 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
506
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
507 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
508 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
509 Iterator iter = results.iterator();
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
510
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
511 int sIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
512 int iIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
513 int jIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
514 int kIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
515 int vIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
516 int zIdx = -1;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
517
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
518 while (iter.hasNext()) {
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
519 Result result = (Result) iter.next();
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 if (sIdx == -1) {
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
522 ResultDescriptor rd = result.getResultDescriptor();
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
523 int columnCount = rd.getColumnCount();
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
524
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
525 sIdx = rd.getColumnIndex("SHAPE");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
526 iIdx = rd.getColumnIndex("IPOSITION");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
527 jIdx = rd.getColumnIndex("JPOSITION");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
528 kIdx = rd.getColumnIndex("KPOSITION");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
529 vIdx = rd.getColumnIndex("YORDINATE");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
530 zIdx = rd.getColumnIndex("Z");
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
531
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
532 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
533 String colName = rd.getColumnName(i);
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
534
439
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
535 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
536 attColumns.setAttribute(
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
537 colName,
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
538 result.getObject(colName));
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
539 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
540 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
541 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
542
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
543 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
544 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
545 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
546 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
547 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
548
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
549 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
550
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
551 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
552
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
553 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
554 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
555 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
556 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
557 map.put(key, col);
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
558 }
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
559
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
560 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
561 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
562
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
563 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
564 attColumns.setXYColumns(cols);
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
565
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
566 return attColumns;
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
567 }
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
568
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
569
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
570 /**
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
571 * 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
572 * 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
573 * used in that chart.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
574 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
575 * @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
576 * @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
577 * @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
578 * @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
579 * @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
580 * @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
581 * @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
582 * @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
583 * @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
584 * 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
585 * @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
586 * 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
587 * @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
588 * @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
589 */
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
590 @Override
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
591 protected Chart getChart(
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
592 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
593 ChartTheme theme,
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
594 Collection parameters,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
595 Collection measurements,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
596 Collection dates,
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
597 Object result,
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
598 Locale locale,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
599 String uuid,
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
600 boolean linesVisible,
439
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
601 boolean shapesVisible,
8975de9d7483 Loop through configuration to chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 432
diff changeset
602 CallContext callContext
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
603 ) {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
604 Chart chart = null;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
605
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
606 if (CACHE_CHART) {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
607 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
608 chart = (Chart) getChartFromCache(uuid, callContext);
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
609 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
610
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
611 if (chart != null)
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
612 return chart;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
613
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
614 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
615
462
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
616 if (!(result instanceof AttributedXYColumns)) {
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
617 log.error("result of wrong type");
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
618 return null;
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
619 }
912797826099 Use new raster access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 455
diff changeset
620
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
621 AttributedXYColumns columns = (AttributedXYColumns)result;
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
622
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
623 Integer parameterId =
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
624 (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
625
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
626 if (parameterId == null) {
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
627 log.error("missing parameter id");
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
628 return null;
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
629 }
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
630
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
631 Map<Integer, PaletteManager> paletteManagers =
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
632 getPalettes(callContext);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
633
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
634 PaletteManager paletteManager = paletteManagers.get(parameterId);
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
635
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
636 if (paletteManager == null) {
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
637 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
638 return null;
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
639 }
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
640
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
641 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
642 special.put(GROUND_FILL_INDEX, getGroundFill(callContext));
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
643
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
644 chart = new VerticalCrossSectionChart(
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
645 columns,
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
646 paletteManager.getBase(),
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
647 special,
492
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
648 locale,
79e80c289018 Added labels and titles to 'Profilschnitt' charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 474
diff changeset
649 chartLables);
446
f5a041000357 Connected vertical cross section with chart generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 445
diff changeset
650
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
651 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
652 ((VerticalCrossSectionChart)chart).setBackgroundPaint(Color.WHITE);
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
653
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
654 if (CACHE_CHART) {
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
655 log.info("Put chart into cache.");
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
656 purifyChart(chart, uuid);
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
657 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
658
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
659 return chart;
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
660 }
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
661
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
662
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
663 @Override
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
664 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
665 return new VerticalCrossSectionStatistics();
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
666 }
429
bed9735adf84 Finished preprocessing data for interpolation in verticalcrosssection charts.ß
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
667
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
668 /**
804
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
669 * 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
670 * 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
671 * data.
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
672 *
9058c08eac3a Added more Javadoc in some classes of state.profile.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 780
diff changeset
673 * @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
674 * @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
675 * @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
676 * @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
677 * @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
678 */
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
679 @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
680 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
681 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
682 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
683 )
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 654
diff changeset
684 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
685 {
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
686 // TODO: Implement a substitution which makes sense.
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
687 }
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
688
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
689 @Override
837
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
690 protected void createODV(
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
691 OutputStream outputStream,
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
692 String uuid,
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
693 CallContext callContext)
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
694 throws IOException, StateException
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
695 {
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
696 // 'Profilschnitte' contain one parameter only
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
697 Collection tmp = getParameters(uuid);
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
698 KeyValueDescibeData param = (KeyValueDescibeData) tmp.toArray()[0];
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
699
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
700 String [] COLUMN_HEADER = {
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
701 "Cruise",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
702 "Station",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
703 "Type",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
704 "yyyy-mm-dd hh:mm",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
705 "Lon (°E)",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
706 "Lat (°N)",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
707 "Bot. Depth [m]",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
708 "Depth [m]",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
709 "QF",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
710 param.getValue()
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
711 };
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
712
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
713 Export.Profile ODV_PROFILE = new DefaultProfile(
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
714 COLUMN_HEADER,
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
715 '\t',
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
716 CSVWriter.NO_QUOTE_CHARACTER,
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
717 CSVWriter.NO_ESCAPE_CHARACTER,
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
718 "ODV",
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
719 "ISO-8859-1");
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
720
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
721 Object chartResult = getChartResult(uuid, callContext);
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
722
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
723 if (chartResult == null) {
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
724 log.error("No data for export found.");
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
725 return;
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
726 }
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
727
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
728 List result = new ArrayList(1);
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
729 result.add(chartResult);
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
730
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
731 InputData data = inputData.get(dateValueName);
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
732 String date = data.getDescription()[0];
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
733
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
734 Interpolation3D interpol = ((AttributedXYColumns)
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
735 chartResult).getInterpolation();
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
736
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
737 Coordinate[] coords = interpol.getCoordinates();
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
738 double[] depth = interpol.getDepths();
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
739 double[] raster = interpol.getRaster();
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
740
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
741 Export export = new VerticalCrossODVExport(
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
742 interpol.getCoordinates(),
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
743 interpol.getCellHeight(),
852
b5f4b6073cde Calculate the depth in an odv export of a 'Profilschnitt' properly (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 837
diff changeset
744 interpol.getCellWidth(),
837
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
745 interpol.getRaster(),
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
746 date,
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
747 interpol.getWidth(),
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
748 interpol.getHeight());
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
749
43f3c0cd60f2 First implementation of an odv export of a 'Profilschnitt' (issue217).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 830
diff changeset
750 export.create(ODV_PROFILE, outputStream, null);
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
751 }
335
e964a3d8f7bc Some Refactoring work done.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
752 }
521
1bf058f1a2d1 Generate seabed polygon to "Profilschnitte".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 492
diff changeset
753 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org