annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearFilterFacet.java @ 6665:b7945db8a43b

issue1413: Only show unknown sediment loads of selected unit type. Therefore, adjusted the factory to take the units name. Unfortunately, names in db do not match values of data items. Thus do manual replacing. In Facet and Calculate, take the chosen unit via access and to the string replacement. In Facet, do not transform data (we assume it comes in unit as labeled in the db), and removed the possibility of m3/a-data of unknown yields in a t/a diagram and vice versa.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 25 Jul 2013 15:08:13 +0200
parents af13ceeba52a
children 8c169743f4d0
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
9 package org.dive4elements.river.artifacts.model.minfo;
4672
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.apache.log4j.Logger;
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
13 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
14 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
15 import org.dive4elements.artifacts.CallContext;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
16 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
17 import org.dive4elements.river.artifacts.access.RiverAccess;
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
18 import org.dive4elements.river.artifacts.context.RiverContext;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
19 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
20 import org.dive4elements.river.artifacts.model.DataFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
21 import org.dive4elements.river.artifacts.math.MovingAverage;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
22 import org.dive4elements.river.artifacts.model.ZoomScale;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4672
diff changeset
23 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
4672
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 public class BedDiffYearFilterFacet
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 extends DataFacet
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 {
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 private static Logger logger = Logger.getLogger(BedDiffYearFilterFacet.class);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 public BedDiffYearFilterFacet() {
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 }
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 public BedDiffYearFilterFacet(int idx, String name, String description,
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 ComputeType type, String stateId, String hash) {
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 super(idx, name, description, type, hash, stateId);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 }
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 public Object getData(Artifact artifact, CallContext context) {
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 logger.debug("Get data for bed density at index: " + index);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
42 D4EArtifact flys = (D4EArtifact) artifact;
4672
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 CalculationResult res = (CalculationResult) flys.compute(context, hash,
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 stateId, type, false);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 BedDiffYearResult[] data =
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 (BedDiffYearResult[]) res.getData(); // TODO CAST TO SPECIFIC CLASS
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 Double start = (Double)context.getContextValue("startkm");
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 Double end = (Double)context.getContextValue("endkm");
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 if(start != null && end != null) {
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
52 RiverContext fc = (RiverContext)context.globalContext();
4672
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 ZoomScale scales = (ZoomScale)fc.get("zoomscale");
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
54 RiverAccess access = new RiverAccess((D4EArtifact)artifact);
4672
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 String river = access.getRiver();
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 double radius = scales.getRadius(river, start, end);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 BedDiffYearResult oldData = data[index];
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59 BedDiffYearResult newData = new BedDiffYearResult();
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 newData.setStart(oldData.getStart());
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 newData.setEnd(oldData.getEnd());
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 double[][] diffs = MovingAverage.weighted(oldData.getDifferencesData(), radius);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63 double[][] heights1 = MovingAverage.weighted(oldData.getHeights1Data(), radius);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 double[][] heights2 = MovingAverage.weighted(oldData.getHeights2Data(), radius);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 double[][] morph = oldData.getMorphWidthData();
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 double[][] year = MovingAverage.weighted(oldData.getHeightPerYearData(), radius);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 for(int j = 0; j < diffs[0].length; j++) {
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 newData.addKm(diffs[0][j]);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 newData.addBedHeights(year[1][j]);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 newData.addMorphWidth(morph[1][j]);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 newData.addDifference(diffs[1][j]);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 newData.addHeight1(heights1[1][j]);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73 newData.addHeight2(heights2[1][j]);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 }
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75 return newData;
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
76 }
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 return data != null && data.length > index ? data[index] : null;
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 }
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 /** Copy deeply. */
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 @Override
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82 public Facet deepCopy() {
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 BedDiffYearFilterFacet copy = new BedDiffYearFilterFacet();
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 copy.set(this);
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 copy.type = type;
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86 copy.hash = hash;
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87 copy.stateId = stateId;
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 return copy;
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
89 }
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
90 }
12e3da5724e6 Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
91 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org