Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffHeightMinFilterFacet.java @ 8782:4289930e276c
Issue1854: Adapt to QualityMeasurementFactory and filter with river distance.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Tue, 08 Dec 2015 16:03:30 +0100 |
parents | afa2096a1f15 |
children | 5e38e2924c07 |
rev | line source |
---|---|
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 * |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 */ |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.minfo; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import org.apache.log4j.Logger; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import org.dive4elements.artifactdatabase.state.Facet; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 import org.dive4elements.artifacts.Artifact; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 import org.dive4elements.artifacts.CallContext; |
8273
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
16 |
8737
afa2096a1f15
Facet-Metadata: Don't put the value into the key.
Tom Gottfried <tom@intevation.de>
parents:
8559
diff
changeset
|
17 import org.dive4elements.river.utils.Formatter; |
afa2096a1f15
Facet-Metadata: Don't put the value into the key.
Tom Gottfried <tom@intevation.de>
parents:
8559
diff
changeset
|
18 |
8559
6d8d7425a6b5
Bed heights are just bed heights since a while ('single' is obsolete).
"Tom Gottfried <tom@intevation.de>"
parents:
8332
diff
changeset
|
19 import org.dive4elements.river.model.BedHeight; |
8273
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
20 |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 import org.dive4elements.river.artifacts.D4EArtifact; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 import org.dive4elements.river.artifacts.access.RiverAccess; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 import org.dive4elements.river.artifacts.context.RiverContext; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 import org.dive4elements.river.artifacts.model.CalculationResult; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 import org.dive4elements.river.artifacts.model.DataFacet; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 import org.dive4elements.river.artifacts.math.MovingAverage; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 import org.dive4elements.river.artifacts.model.ZoomScale; |
7997
9f42d161886b
Add river elevation model to bed diff chart export.
Raimund Renkert <rrenkert@intevation.de>
parents:
7985
diff
changeset
|
28 import org.dive4elements.river.artifacts.resources.Resources; |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 public class BedDiffHeightMinFilterFacet |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 extends DataFacet |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8007
diff
changeset
|
35 private static Logger log = Logger.getLogger(BedDiffHeightMinFilterFacet.class); |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 public BedDiffHeightMinFilterFacet() { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 public BedDiffHeightMinFilterFacet(int idx, String name, String description, |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 ComputeType type, String stateId, String hash) { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 super(idx, name, description, type, hash, stateId); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); |
8267
99912f51468d
A bit less chaos in i18n for bed heights.
"Tom Gottfried <tom@intevation.de>"
parents:
8202
diff
changeset
|
44 this.metaData.put("Y", "chart.bedheight_middle.section.yaxis.label"); |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 public Object getData(Artifact artifact, CallContext context) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8007
diff
changeset
|
48 log.debug("Get data for bed density at index: " + index); |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 D4EArtifact flys = (D4EArtifact) artifact; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 CalculationResult res = (CalculationResult) flys.compute(context, hash, |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 stateId, type, false); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 BedDiffYearResult[] data = |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 (BedDiffYearResult[]) res.getData(); // TODO CAST TO SPECIFIC CLASS |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 Double start = (Double)context.getContextValue("startkm"); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 Double end = (Double)context.getContextValue("endkm"); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 if(start != null && end != null) { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 RiverContext fc = (RiverContext)context.globalContext(); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 // Adaptive smoothing, based on zoom factor/diagram extents. |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 ZoomScale scales = (ZoomScale)fc.get("zoomscale"); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 RiverAccess access = new RiverAccess((D4EArtifact)artifact); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 String river = access.getRiverName(); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 double radius = scales.getRadius(river, start, end); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 BedDiffYearResult oldData = data[index]; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 double[][] heights = MovingAverage.weighted(oldData.getHeights1Data(), radius); |
8737
afa2096a1f15
Facet-Metadata: Don't put the value into the key.
Tom Gottfried <tom@intevation.de>
parents:
8559
diff
changeset
|
69 this.addMetaData( |
7997
9f42d161886b
Add river elevation model to bed diff chart export.
Raimund Renkert <rrenkert@intevation.de>
parents:
7985
diff
changeset
|
70 Resources.getMsg(context.getMeta(), |
8737
afa2096a1f15
Facet-Metadata: Don't put the value into the key.
Tom Gottfried <tom@intevation.de>
parents:
8559
diff
changeset
|
71 "chart.subtitle.radius"), |
afa2096a1f15
Facet-Metadata: Don't put the value into the key.
Tom Gottfried <tom@intevation.de>
parents:
8559
diff
changeset
|
72 Formatter.getRawFormatter(context).format(radius) + " km"); |
8273
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
73 |
8559
6d8d7425a6b5
Bed heights are just bed heights since a while ('single' is obsolete).
"Tom Gottfried <tom@intevation.de>"
parents:
8332
diff
changeset
|
74 BedHeight first = BedHeight.getBedHeightById( |
8273
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
75 oldData.getIdFirst()); |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
76 this.addMetaData(Resources.getMsg( |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
77 context.getMeta(), |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
78 "meta.bedheight.cur.elevation"), |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
79 first.getCurElevationModel().getName()); |
8332
3baa6290cebf
bed_height_single.old_elevation_model_id is not NOT NULL.
"Tom Gottfried <tom@intevation.de>"
parents:
8273
diff
changeset
|
80 if (first.getOldElevationModel() != null) { |
3baa6290cebf
bed_height_single.old_elevation_model_id is not NOT NULL.
"Tom Gottfried <tom@intevation.de>"
parents:
8273
diff
changeset
|
81 this.addMetaData(Resources.getMsg( |
3baa6290cebf
bed_height_single.old_elevation_model_id is not NOT NULL.
"Tom Gottfried <tom@intevation.de>"
parents:
8273
diff
changeset
|
82 context.getMeta(), |
3baa6290cebf
bed_height_single.old_elevation_model_id is not NOT NULL.
"Tom Gottfried <tom@intevation.de>"
parents:
8273
diff
changeset
|
83 "meta.bedheight.old.elevation"), |
3baa6290cebf
bed_height_single.old_elevation_model_id is not NOT NULL.
"Tom Gottfried <tom@intevation.de>"
parents:
8273
diff
changeset
|
84 first.getOldElevationModel().getName()); |
3baa6290cebf
bed_height_single.old_elevation_model_id is not NOT NULL.
"Tom Gottfried <tom@intevation.de>"
parents:
8273
diff
changeset
|
85 } |
8273
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
86 this.addMetaData(Resources.getMsg( |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
87 context.getMeta(), |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
88 "meta.bedheight.river.elevation"), |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
89 access.getRiver().getWstUnit().getName()); |
5c3b36b519d0
Add metadata to bedheight facets in bed height differences.
"Tom Gottfried <tom@intevation.de>"
parents:
8267
diff
changeset
|
90 |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 return heights; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 return null; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
95 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
96 /** Copy deeply. */ |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
97 @Override |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 public Facet deepCopy() { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 BedDiffHeightMinFilterFacet copy = new BedDiffHeightMinFilterFacet(); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 copy.set(this); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 copy.type = type; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
102 copy.hash = hash; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
103 copy.stateId = stateId; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
104 return copy; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
105 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
106 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
107 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |