Mercurial > dive4elements > gnv-client
annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java @ 418:6eae1efb5fc3
Horizontales Schnittprofil:
Added some code to prevent needless null inserts if interpolating over large gaps.
gnv-artifacts/trunk@466 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 21 Dec 2009 14:41:18 +0000 |
parents | 04a242c67fe6 |
children | c6a287398379 |
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 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
6 import java.util.ArrayList; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
7 import java.util.Arrays; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
8 import java.util.Collection; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
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.geom.Coordinate; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
16 import com.vividsolutions.jts.geom.Point; |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
17 import com.vividsolutions.jts.geom.LineString; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
18 |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
19 import com.vividsolutions.jts.io.ParseException; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
20 import com.vividsolutions.jts.io.WKTReader; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
21 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
22 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
|
23 |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
24 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
|
25 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
26 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
|
27 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
|
28 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
|
29 |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
30 import de.intevation.gnv.geobackend.base.DefaultResultDescriptor; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
31 import de.intevation.gnv.geobackend.base.ResultDescriptor; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
32 import de.intevation.gnv.geobackend.base.DefaultResult; |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
33 import de.intevation.gnv.geobackend.base.Result; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
34 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
35 import de.intevation.gnv.math.Point2d; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
36 import de.intevation.gnv.math.Interpolation2D; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
37 |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
38 import de.intevation.gnv.geobackend.base.query.QueryExecutor; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
39 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
40 import de.intevation.gnv.geobackend.base.query.exception.QueryException; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
41 import de.intevation.gnv.geobackend.sde.datasources.ResultSet; |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
42 |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
43 |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
44 import de.intevation.gnv.utils.IndexBuffer; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
45 import de.intevation.gnv.utils.DistanceCalculator; |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
46 |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
47 import de.intevation.gnv.math.LinearFunction; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
48 import de.intevation.gnv.math.LinearMetrics; |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
49 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
50 import org.apache.commons.math.optimization.fitting.CurveFitter; |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
51 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
52 import org.apache.commons.math.optimization.general.GaussNewtonOptimizer; |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
53 import org.apache.commons.math.optimization.OptimizationException; |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
54 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
55 import org.apache.commons.math.FunctionEvaluationException; |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
56 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
57 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
|
58 |
352
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 * @author Tim Englich <tim.englich@intevation.de> |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
61 * |
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 public class HorizontalProfileMeshCrossOutputState extends |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
64 HorizontalProfileOutputState { |
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 * |
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 private static final long serialVersionUID = 2205958041745637263L; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
70 |
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 * the logger, used to log exceptions and additonaly information |
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 private static Logger log = |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
75 Logger.getLogger(HorizontalProfileMeshCrossOutputState.class); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
76 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
77 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
78 private String ijkQueryID = null; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
79 |
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 * Constructor |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
82 */ |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
83 public HorizontalProfileMeshCrossOutputState() { |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
84 super(); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
85 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
86 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
87 /** |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
88 * @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
|
89 */ |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
90 @Override |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
91 public void setup(Node configuration) { |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
92 super.setup(configuration); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
93 this.ijkQueryID = Config.getStringXPath(configuration,"queryID-ijk"); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
94 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
95 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
96 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
97 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
98 @Override |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
99 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
|
100 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
|
101 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
|
102 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
|
103 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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 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
|
109 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
|
110 ) { |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
111 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
|
112 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
|
113 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
|
114 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
|
115 } |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
116 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
117 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
|
118 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
|
119 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
120 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
|
121 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
|
122 chartLables, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
123 theme, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
124 parameters, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
125 measurements, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
126 dates, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
127 result, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
128 null, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
129 locale, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
130 linesVisible, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
131 shapesVisible |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
132 ); |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
133 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
|
134 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
135 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
|
136 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
|
137 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
|
138 } |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
139 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
140 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
|
141 } |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
142 |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
143 @Override |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
144 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
|
145 log.debug("HorizontalProfileMeshCrossOutputState.getChartResult"); |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
146 Collection<Result> result = null; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
147 if (CacheFactory.getInstance().isInitialized()) { |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
148 String key = uuid + super.getID(); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
149 log.debug("Hash for Queryelements: " + key); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
150 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
|
151 if (value != null) { |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
152 result = (Collection<Result>) (value.getObjectValue()); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
153 }else{ |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
154 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
155 if (this.inputData.containsKey("mesh_linestring")){ |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
156 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
157 try { |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
158 // 1. IJK Anfragen f�r Stuetzpunkte im Netz ausf�hren. |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
159 LineString ls = (LineString)new WKTReader().read(this.inputData |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
160 .get("mesh_linestring") |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
161 .getValue()); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
162 Coordinate[] coords = ls.getCoordinates(); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
163 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
164 List<java.awt.Point> points = new ArrayList<java.awt.Point>(coords.length); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
165 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
166 String meshid = this.inputData.get("meshid").getValue(); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
167 QueryExecutor queryExecutor = QueryExecutorFactory |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
168 .getInstance() |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
169 .getQueryExecutor(); |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
170 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
171 ArrayList missingPoints = new ArrayList(); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
172 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
173 String additionWhere = "FEATUREID=FEATUREID"; |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
174 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
175 for (int i = 0; i < coords.length; i++) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
176 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
177 String wkt = toWKT(coords[i]); |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
178 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
179 result = queryExecutor.executeQuery(this.ijkQueryID, |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
180 new String[]{meshid,wkt}); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
181 if (!result.isEmpty()){ |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
182 Result resultValue = result.iterator().next(); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
183 int iPos = resultValue.getInteger(1); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
184 int jPos = resultValue.getInteger(0); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
185 log.debug("Found Pos "+iPos+"/"+jPos +" for "+wkt); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
186 points.add(i, new java.awt.Point(iPos,jPos)); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
187 }else{ |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
188 log.debug("No i/j Pos found for "+wkt); |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
189 missingPoints.add(new Object [] { Integer.valueOf(i), coords[i] }); |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
190 points.add(i, null); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
191 // Special Case no i,j found for Coordinate |
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 } |
357
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
194 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
195 if (missingPoints.size() == coords.length) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
196 log.debug("cannot create index buffer"); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
197 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
198 else { // generate index filter |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
199 boolean remainsMissingPoints = !missingPoints.isEmpty(); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
200 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
201 if (remainsMissingPoints) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
202 // try to guess the missing (i, j) |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
203 CurveFitter iFitter = new CurveFitter(new GaussNewtonOptimizer(true)); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
204 CurveFitter jFitter = new CurveFitter(new GaussNewtonOptimizer(true)); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
205 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
206 for (int i = 0, N = points.size(); i < N; ++i) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
207 java.awt.Point p = (java.awt.Point)points.get(i); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
208 if (p != null) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
209 Coordinate coord = coords[i]; |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
210 iFitter.addObservedPoint(coord.x, p.x); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
211 jFitter.addObservedPoint(coord.y, p.y); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
212 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
213 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
214 try { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
215 // XXX: Assumption: (i, j) are created by componentwise linear function. |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
216 // This is surely not correct because (x, y) are in a ellipsoid projection. |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
217 // TODO: use ellipsoid functions and fit with Levenberg Marquardt. |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
218 double [] iParams = iFitter.fit( |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
219 LinearFunction.INSTANCE, new double [] { 1d, 1d }); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
220 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
221 double [] jParams = jFitter.fit( |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
222 LinearFunction.INSTANCE, new double [] { 1d, 1d }); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
223 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
224 for (int i = missingPoints.size()-1; i >= 0; --i) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
225 Object [] a = (Object [])missingPoints.get(i); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
226 Coordinate coord = (Coordinate)a[1]; |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
227 int pi = (int)Math.round(iParams[0]*coord.x + iParams[1]); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
228 int pj = (int)Math.round(jParams[0]*coord.y + jParams[1]); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
229 points.set( |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
230 ((Integer)a[0]).intValue(), |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
231 new java.awt.Point(pi, pj)); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
232 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
233 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
234 remainsMissingPoints = false; // we filled the gaps |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
235 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
236 catch (FunctionEvaluationException fee) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
237 log.error(fee); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
238 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
239 catch (OptimizationException oe) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
240 log.error(oe); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
241 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
242 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
243 |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
244 if (!remainsMissingPoints) { |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
245 // TODO: Make Tablenames and Columns Configurable |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
246 IndexBuffer ib = new IndexBuffer( |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
247 points, |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
248 "MEDIAN.MESHPOINT.IPOSITION", |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
249 "MEDIAN.MESHPOINT.JPOSITION" ); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
250 additionWhere = ib.toWhereClause(); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
251 log.debug("Additional Where Clause = "+additionWhere); |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
252 // 2. Aus diesen Stuetzpunkten den Resultset generieren. |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
253 } |
25e4724aa504
Fill (i, j)-gaps when building index buffer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
352
diff
changeset
|
254 } // if generate index filter |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
255 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
256 String[] filterValues = this.generateFilterValuesFromInputData(); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
257 String[] addedFilterValues = new String[filterValues.length+1]; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
258 System.arraycopy(filterValues, 0, addedFilterValues, 0, filterValues.length); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
259 addedFilterValues[filterValues.length] = additionWhere; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
260 |
361
aec85d00d82c
Added code to do 2D interpolations along a digitied track on the map.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
357
diff
changeset
|
261 result = process( |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
262 Arrays.asList(coords), |
361
aec85d00d82c
Added code to do 2D interpolations along a digitied track on the map.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
357
diff
changeset
|
263 queryExecutor.executeQuery( |
aec85d00d82c
Added code to do 2D interpolations along a digitied track on the map.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
357
diff
changeset
|
264 this.queryID, |
aec85d00d82c
Added code to do 2D interpolations along a digitied track on the map.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
357
diff
changeset
|
265 addedFilterValues)); |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
266 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
267 } catch (ParseException e) { |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
268 log.error(e,e); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
269 }catch (QueryException e) { |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
270 log.error(e,e); |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
271 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
272 }else{ |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
273 // TODO: definieren was passiert wenn kein linestring vorhanden ist. |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
274 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
275 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
276 if (CacheFactory.getInstance().isInitialized()) { |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
277 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
|
278 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
279 |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
280 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
281 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
282 return result; |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
283 } |
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
284 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
285 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
286 @Override |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
287 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
|
288 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
|
289 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
|
290 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
291 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
|
292 } |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
293 |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
294 private static final String [] COLUMN_BLACKLIST = { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
295 "MEDIAN.MESHPOINT.JPOSITION", |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
296 "MEDIAN.MESHPOINT.IPOSITION" |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
297 }; |
361
aec85d00d82c
Added code to do 2D interpolations along a digitied track on the map.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
357
diff
changeset
|
298 |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
299 private static final boolean blacklisted(String column) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
300 for (int i = 0; i < COLUMN_BLACKLIST.length; ++i) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
301 if (COLUMN_BLACKLIST.equals(column)) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
302 return true; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
303 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
304 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
305 return false; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
306 } |
361
aec85d00d82c
Added code to do 2D interpolations along a digitied track on the map.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
357
diff
changeset
|
307 |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
308 private static boolean different(Result a, Result b, int [] indices) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
309 for (int i = 0; i < indices.length; ++i) { |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
310 String oa = a.getString(indices[i]); |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
311 String ob = b.getString(indices[i]); |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
312 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
313 if (oa == null && ob == null) { |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
314 continue; |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
315 } |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
316 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
317 if (oa == null || ob == null) { |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
318 return true; |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
319 } |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
320 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
321 if (!oa.equals(ob)) { |
418
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
322 if (log.isDebugEnabled()) { |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
323 log.debug("+++++++++++++++ differs ++++++++++++++"); |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
324 log.debug(" " + oa + " != " + ob); |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
325 } |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
326 return true; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
327 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
328 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
329 return false; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
330 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
331 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
332 private static final String [] DIFF_COLUMS = { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
333 "GROUP1", |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
334 "GROUP2", |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
335 "GROUP3" |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
336 }; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
337 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
338 public static final class SectionHandler |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
339 implements Interpolation2D.Consumer |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
340 { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
341 private ArrayList<Point2d> points; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
342 private List<Coordinate> path; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
343 private Collection<Result> output; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
344 private Result prototyp; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
345 private ResultDescriptor descriptor; |
418
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
346 private boolean lastWasSuccess; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
347 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
348 public SectionHandler() { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
349 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
350 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
351 public SectionHandler( |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
352 List<Coordinate> path, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
353 Collection<Result> output, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
354 ResultDescriptor descriptor |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
355 ) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
356 this.path = path; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
357 this.output = output; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
358 this.descriptor = descriptor; |
418
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
359 points = new ArrayList<Point2d>(); |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
360 lastWasSuccess = true; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
361 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
362 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
363 public void finish() { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
364 if (!points.isEmpty()) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
365 double distance = toKM( |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
366 DistanceCalculator.calculateDistance(path)); |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
367 |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
368 if (distance > EPSILON) { |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
369 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
370 Interpolation2D.interpolate( |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
371 path, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
372 points, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
373 0d, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
374 distance, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
375 INTERPOLATION_STEPS, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
376 LinearMetrics.INSTANCE, |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
377 this); |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
378 } |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
379 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
380 points.clear(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
381 } |
418
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
382 lastWasSuccess = true; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
383 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
384 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
385 public void setPrototyp(Result prototyp) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
386 this.prototyp = prototyp; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
387 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
388 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
389 public void handle(Result result) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
390 Coordinate coordinate = |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
391 toCoordinate(result.getString("SHAPE")); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
392 double value = result.getDouble("YORDINATE"); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
393 int iPos = result.getInteger("MEDIAN.MESHPOINT.JPOSITION"); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
394 int jPos = result.getInteger("MEDIAN.MESHPOINT.JPOSITION"); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
395 Point2d p = new Point2d( |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
396 coordinate.x, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
397 coordinate.y, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
398 value, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
399 iPos, jPos); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
400 points.add(p); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
401 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
402 |
416
04a242c67fe6
Added support of gap detection in horizontalcrossprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
365
diff
changeset
|
403 public void interpolated(Coordinate coordinate, boolean success) { |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
404 DefaultResult result = new DefaultResult(descriptor); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
405 ResultDescriptor pd = prototyp.getResultDescriptor(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
406 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
407 int pcolums = pd.getColumnCount(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
408 for (int i = 0, j = 0; i < pcolums; ++i) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
409 String colname = pd.getColumnName(i); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
410 if (blacklisted(colname)) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
411 continue; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
412 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
413 if (colname.equals("SHAPE")) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
414 result.addColumnValue(j, toWKT(coordinate)); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
415 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
416 else if (colname.equals("YORDINATE")) { |
418
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
417 if (success) { |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
418 result.addColumnValue(j, Double.valueOf(coordinate.z)); |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
419 } |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
420 else if (lastWasSuccess) { |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
421 // only insert null if last was valid. |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
422 // This prevents flooding the result set with nulls |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
423 // if interpolating over a large gap. |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
424 result.addColumnValue(j, null); |
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
425 } |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
426 } |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
427 else { |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
428 result.addColumnValue(j, prototyp.getObject(i)); |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
429 } |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
430 ++j; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
431 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
432 output.add(result); |
418
6eae1efb5fc3
Horizontales Schnittprofil:
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
416
diff
changeset
|
433 lastWasSuccess = success; |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
434 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
435 } // class SectionHandler |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
436 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
437 public static final double NAUTICAL_MILE = 1852.216d; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
438 public static final double KILOMETER = 1000d; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
439 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
440 public static final double toKM(double distance) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
441 return (distance * NAUTICAL_MILE) / KILOMETER; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
442 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
443 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
444 public static final double EPSILON = 1e-5d; |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
445 public static final int INTERPOLATION_STEPS = |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
446 Integer.getInteger("interpolation.steps", 500).intValue(); |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
447 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
448 public static Coordinate toCoordinate(String shape) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
449 try { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
450 return ((Point)(new WKTReader().read(shape))).getCoordinate(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
451 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
452 catch (ParseException pe) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
453 log.error(pe); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
454 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
455 return null; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
456 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
457 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
458 public static String toWKT(Coordinate coordinate) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
459 StringBuilder sb = new StringBuilder("POINT("); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
460 sb.append(coordinate.x) |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
461 .append(' ') |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
462 .append(coordinate.y) |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
463 .append(')'); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
464 return sb.toString(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
465 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
466 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
467 protected Collection<Result> process( |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
468 List<Coordinate> path, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
469 Collection<Result> input |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
470 ) { |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
471 log.debug("------ number of points before processing: " + input.size()); |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
472 ArrayList<Result> output = new ArrayList<Result>(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
473 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
474 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
475 Result last = null; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
476 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
477 int [] diffColums = null; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
478 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
479 SectionHandler sectionHandler = null; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
480 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
481 for (Result result: input) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
482 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
483 if (sectionHandler == null) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
484 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
485 ResultDescriptor rd = result.getResultDescriptor(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
486 diffColums = rd.getColumnIndices(DIFF_COLUMS); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
487 int columns = rd.getColumnCount(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
488 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
489 DefaultResultDescriptor resultDescriptor = |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
490 new DefaultResultDescriptor(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
491 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
492 for (int j = 0; j < columns; ++j) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
493 String columnName = rd.getColumnName(j); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
494 if (!blacklisted(columnName)) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
495 resultDescriptor.addColumn( |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
496 columnName, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
497 rd.getColumnClassName(j)); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
498 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
499 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
500 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
501 sectionHandler = new SectionHandler( |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
502 path, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
503 output, |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
504 resultDescriptor); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
505 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
506 sectionHandler.setPrototyp(result); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
507 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
508 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
509 if (last != null && different(last, result, diffColums)) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
510 sectionHandler.finish(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
511 sectionHandler.setPrototyp(result); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
512 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
513 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
514 sectionHandler.handle(result); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
515 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
516 last = result; |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
517 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
518 |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
519 if (sectionHandler != null) { |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
520 sectionHandler.finish(); |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
521 } |
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
522 |
365
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
523 log.debug("------ number of points after processing: " + output.size()); |
f66088a43ecc
Added horizontal crossprofile charts to chart pallet. Fixed some bugs before interpolation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
362
diff
changeset
|
524 |
362
1ab23cd66870
Added result set handling. Needs some testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
361
diff
changeset
|
525 return output; |
361
aec85d00d82c
Added code to do 2D interpolations along a digitied track on the map.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
357
diff
changeset
|
526 } |
352
24c21a720aa5
Added Support for "horizontale Schnittprofile"
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
527 } |