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