annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java @ 425:15b8e95fa8da

Horizontale Schnittprofile. Ignore invalid interpolation correctly. gnv-artifacts/trunk@473 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 21 Dec 2009 19:58:17 +0000
parents 2402173a1490
children bed9735adf84
rev   line source
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
1 /**
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
2 *
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
3 */
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
4 package de.intevation.gnv.state.profile.horizontal;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
5
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
6 import java.util.Arrays;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
7 import java.util.ArrayList;
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
8 import java.util.Collection;
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
9 import java.util.List;
365
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
10 import java.util.Locale;
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
11
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
12 import org.apache.log4j.Logger;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
13 import org.w3c.dom.Node;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
14
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
15 import com.vividsolutions.jts.io.ParseException;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
16
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
17 import de.intevation.artifactdatabase.Config;
357
25e4724aa504 Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 352
diff changeset
18
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
19 import de.intevation.gnv.artifacts.cache.CacheFactory;
357
25e4724aa504 Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 352
diff changeset
20
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
21 import de.intevation.gnv.geobackend.base.DefaultResult;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
22 import de.intevation.gnv.geobackend.base.DefaultResultDescriptor;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
23 import de.intevation.gnv.geobackend.base.Result;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
24 import de.intevation.gnv.geobackend.base.ResultDescriptor;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
25 import de.intevation.gnv.geobackend.base.query.QueryExecutor;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
26 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
27 import de.intevation.gnv.geobackend.base.query.exception.QueryException;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
28 import de.intevation.gnv.math.Interpolation2D;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
29 import de.intevation.gnv.math.LinearMetrics;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
30 import de.intevation.gnv.math.Point2d;
365
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
31 import de.intevation.gnv.chart.Chart;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
32 import de.intevation.gnv.chart.ChartLabels;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
33 import de.intevation.gnv.chart.HorizontalCrossProfileChart;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
34
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
35 import de.intevation.gnv.utils.DistanceCalculator;
420
c6a287398379 Outsourcing of some methods for preparing results for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
36 import de.intevation.gnv.utils.WKTUtils;
357
25e4724aa504 Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 352
diff changeset
37
365
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
38 import org.jfree.chart.ChartTheme;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
39
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
40 import com.vividsolutions.jts.geom.Coordinate;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
41 import com.vividsolutions.jts.geom.LineString;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
42 import com.vividsolutions.jts.io.WKTReader;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
43
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
44
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
45 /**
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
46 * @author Tim Englich <tim.englich@intevation.de>
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
47 *
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
48 */
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
49 public class HorizontalProfileMeshCrossOutputState extends
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
50 HorizontalProfileOutputState {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
51
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
52 /**
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
53 *
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
54 */
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
55 private static final long serialVersionUID = 2205958041745637263L;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
56
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
57 /**
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
58 * the logger, used to log exceptions and additonaly information
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
59 */
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
60 private static Logger log =
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
61 Logger.getLogger(HorizontalProfileMeshCrossOutputState.class);
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
62
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
63
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
64 private String ijkQueryID = null;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
65
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
66 /**
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
67 * Constructor
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
68 */
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
69 public HorizontalProfileMeshCrossOutputState() {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
70 super();
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
71 }
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
72
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
73 /**
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
74 * @see de.intevation.gnv.state.timeseries.TimeSeriesOutputState#setup(org.w3c.dom.Node)
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
75 */
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
76 @Override
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
77 public void setup(Node configuration) {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
78 super.setup(configuration);
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
79 this.ijkQueryID = Config.getStringXPath(configuration,"queryID-ijk");
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
80
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
81 }
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
82
365
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
83
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
84 @Override
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
85 protected Chart getChart(
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
86 ChartLabels chartLables,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
87 ChartTheme theme,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
88 Collection parameters,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
89 Collection measurements,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
90 Collection dates,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
91 Collection result,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
92 Locale locale,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
93 String uuid,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
94 boolean linesVisible,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
95 boolean shapesVisible
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
96 ) {
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
97 Chart chart = null;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
98 if (CACHE_CHART) {
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
99 log.info("Try to get horizontalprofilemeshcross chart from cache.");
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
100 chart = (Chart) getChartFromCache(uuid);
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
101 }
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
102
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
103 if (chart != null)
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
104 return chart;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
105
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
106 log.info("Chart not in cache yet.");
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
107 chart = new HorizontalCrossProfileChart(
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
108 chartLables,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
109 theme,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
110 parameters,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
111 measurements,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
112 dates,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
113 result,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
114 null,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
115 locale,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
116 linesVisible,
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
117 shapesVisible
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
118 );
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
119 chart.generateChart();
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
120
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
121 if (CACHE_CHART) {
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
122 log.info("Put chart into cache.");
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
123 purifyChart(chart, uuid);
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
124 }
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
125
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
126 return chart;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
127 }
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
128
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
129 @Override
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
130 protected Collection<Result> getChartResult(String uuid) {
365
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
131 log.debug("HorizontalProfileMeshCrossOutputState.getChartResult");
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
132 Collection<Result> result = null;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
133 if (CacheFactory.getInstance().isInitialized()) {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
134 String key = uuid + super.getID();
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
135 log.debug("Hash for Queryelements: " + key);
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
136 net.sf.ehcache.Element value = CacheFactory.getInstance().getCache().get(key);
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
137 if (value != null) {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
138 result = (Collection<Result>) (value.getObjectValue());
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
139 }else{
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
140
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
141 if (this.inputData.containsKey("mesh_linestring")){
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
142
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
143 try {
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
144 LineString ls = (LineString)new WKTReader().read(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
145 inputData.get("mesh_linestring").getValue());
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
146
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
147 Coordinate[] coords = ls.getCoordinates();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
148
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
149 String additionWhere =
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
150 WKTUtils.worldCoordinatesToIndex(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
151 result,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
152 inputData,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
153 ijkQueryID
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
154 );
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
155
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
156 String[] filterValues =
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
157 generateFilterValuesFromInputData();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
158 String[] addedFilterValues =
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
159 new String[filterValues.length+1];
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
160 System.arraycopy(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
161 filterValues, 0,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
162 addedFilterValues, 0,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
163 filterValues.length);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
164 addedFilterValues[filterValues.length] = additionWhere;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
165
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
166 QueryExecutor queryExecutor = QueryExecutorFactory
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
167 .getInstance()
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
168 .getQueryExecutor();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
169
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
170 result = process(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
171 Arrays.asList(coords),
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
172 queryExecutor.executeQuery(
420
c6a287398379 Outsourcing of some methods for preparing results for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
173 queryID,
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
174 addedFilterValues)
420
c6a287398379 Outsourcing of some methods for preparing results for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
175 );
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
176 } catch (ParseException e) {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
177 log.error(e,e);
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
178 }catch (QueryException e) {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
179 log.error(e,e);
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
180 }
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
181 }else{
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
182 // TODO: definieren was passiert wenn kein linestring vorhanden ist.
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
183 }
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
184
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
185 if (CacheFactory.getInstance().isInitialized()) {
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
186 CacheFactory.getInstance().getCache().put(new net.sf.ehcache.Element(key, result));
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
187 }
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
188
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
189 }
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
190 }
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
191 return result;
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
192 }
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
193
365
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
194
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
195 @Override
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
196 protected String createChartSubtitle(Locale locale, String uuid) {
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
197 log.debug("create chart subtitle for horizontal crossprofile charts.");
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
198 String subtitle = createTimePeriod(locale, uuid);
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
199
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
200 return subtitle;
f66088a43ecc Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 362
diff changeset
201 }
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
202
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
203
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
204 public static Collection<Result> process(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
205 List<Coordinate> path,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
206 Collection<Result> input
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
207 ) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
208 log.debug("------ number of points before processing: " + input.size());
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
209 ArrayList<Result> output = new ArrayList<Result>();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
210
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
211 Result last = null;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
212
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
213 int [] diffColums = null;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
214
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
215 SectionHandler sectionHandler = null;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
216
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
217 for (Result result: input) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
218
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
219 if (sectionHandler == null) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
220
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
221 ResultDescriptor rd = result.getResultDescriptor();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
222 diffColums = rd.getColumnIndices(DIFF_COLUMS);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
223 int columns = rd.getColumnCount();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
224
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
225 DefaultResultDescriptor resultDescriptor =
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
226 new DefaultResultDescriptor();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
227
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
228 for (int j = 0; j < columns; ++j) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
229 String columnName = rd.getColumnName(j);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
230 if (!blacklisted(columnName)) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
231 resultDescriptor.addColumn(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
232 columnName,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
233 rd.getColumnClassName(j));
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
234 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
235 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
236
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
237 sectionHandler = new SectionHandler(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
238 path,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
239 output,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
240 resultDescriptor);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
241
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
242 sectionHandler.setPrototyp(result);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
243 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
244
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
245 if (last != null && WKTUtils.different(last, result, diffColums)) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
246 sectionHandler.finish();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
247 sectionHandler.setPrototyp(result);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
248 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
249
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
250 sectionHandler.handle(result);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
251
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
252 last = result;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
253 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
254
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
255 if (sectionHandler != null) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
256 sectionHandler.finish();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
257 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
258
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
259 log.debug("------ number of points after processing: " + output.size());
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
260
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
261 return output;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
262 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
263
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
264
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
265 private static final boolean blacklisted(String column) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
266 for (int i = 0; i < COLUMN_BLACKLIST.length; ++i) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
267 if (COLUMN_BLACKLIST.equals(column)) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
268 return true;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
269 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
270 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
271 return false;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
272 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
273
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
274 private static final String [] DIFF_COLUMS = {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
275 "GROUP1",
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
276 "GROUP2",
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
277 "GROUP3"
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
278 };
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
279
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
280 private static final String [] COLUMN_BLACKLIST = {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
281 "MEDIAN.MESHPOINT.JPOSITION",
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
282 "MEDIAN.MESHPOINT.IPOSITION"
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
283 };
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
284
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
285 public static final double EPSILON = 1e-5d;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
286
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
287 public static final int INTERPOLATION_STEPS =
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
288 Integer.getInteger("interpolation.steps", 500).intValue();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
289
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
290 public static final class SectionHandler
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
291 implements Interpolation2D.Consumer
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
292 {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
293 private ArrayList<Point2d> points;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
294 private List<Coordinate> path;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
295 private Collection<Result> output;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
296 private Result prototyp;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
297 private ResultDescriptor descriptor;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
298 private boolean lastWasSuccess;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
299
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
300 public SectionHandler() {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
301 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
302
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
303 public SectionHandler(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
304 List<Coordinate> path,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
305 Collection<Result> output,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
306 ResultDescriptor descriptor
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
307 ) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
308 this.path = path;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
309 this.output = output;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
310 this.descriptor = descriptor;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
311 points = new ArrayList<Point2d>();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
312 lastWasSuccess = true;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
313 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
314
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
315 public void finish() {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
316 if (!points.isEmpty()) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
317 double distance = WKTUtils.toKM(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
318 DistanceCalculator.calculateDistance(path));
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
319
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
320 if (distance > EPSILON) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
321
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
322 Interpolation2D.interpolate(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
323 path,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
324 points,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
325 0d,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
326 distance,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
327 INTERPOLATION_STEPS,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
328 LinearMetrics.INSTANCE,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
329 this);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
330 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
331
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
332 points.clear();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
333 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
334 lastWasSuccess = true;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
335 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
336
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
337 public void setPrototyp(Result prototyp) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
338 this.prototyp = prototyp;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
339 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
340
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
341 public void handle(Result result) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
342 Coordinate coordinate =
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
343 WKTUtils.toCoordinate(result.getString("SHAPE"));
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
344 double value = result.getDouble("YORDINATE");
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
345 int iPos = result.getInteger("MEDIAN.MESHPOINT.JPOSITION");
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
346 int jPos = result.getInteger("MEDIAN.MESHPOINT.JPOSITION");
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
347 Point2d p = new Point2d(
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
348 coordinate.x,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
349 coordinate.y,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
350 value,
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
351 iPos, jPos);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
352 points.add(p);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
353 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
354
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
355 public void interpolated(Coordinate coordinate, boolean success) {
425
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
356
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
357 if (!success && !lastWasSuccess) {
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
358 // only insert null if last was valid.
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
359 // This prevents flooding the result set with nulls
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
360 // if interpolating over a large gap.
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
361 return;
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
362 }
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
363
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
364 DefaultResult result = new DefaultResult(descriptor);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
365 ResultDescriptor pd = prototyp.getResultDescriptor();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
366
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
367 int pcolums = pd.getColumnCount();
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
368 for (int i = 0, j = 0; i < pcolums; ++i) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
369 String colname = pd.getColumnName(i);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
370 if (blacklisted(colname)) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
371 continue;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
372 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
373 if (colname.equals("SHAPE")) {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
374 result.addColumnValue(j, WKTUtils.toWKT(coordinate));
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
375 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
376 else if (colname.equals("YORDINATE")) {
425
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
377 result.addColumnValue(j, success
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
378 ? Double.valueOf(coordinate.z)
15b8e95fa8da Horizontale Schnittprofile. Ignore invalid interpolation correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 423
diff changeset
379 : null);
423
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
380 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
381 else {
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
382 result.addColumnValue(j, prototyp.getObject(i));
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
383 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
384 ++j;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
385 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
386 output.add(result);
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
387 lastWasSuccess = success;
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
388 }
2402173a1490 Moved some methods back to old place.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
389 }
352
24c21a720aa5 Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
390 }

http://dive4elements.wald.intevation.org