annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/DifferenceCurveFilterFacet.java @ 8858:a805211690f7 3.2.x

Fix license headers.
author Tom Gottfried <tom@intevation.de>
date Thu, 18 Jan 2018 20:52:41 +0100
parents 421e5cceac84
children
rev   line source
8858
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
2 * Software engineering by Intevation GmbH
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
3 *
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
6 * documentation coming with Dive4Elements River for details.
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
7 */
a805211690f7 Fix license headers.
Tom Gottfried <tom@intevation.de>
parents: 8609
diff changeset
8
7791
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.artifacts.model;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.dive4elements.artifactdatabase.state.Facet;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 import org.dive4elements.artifacts.Artifact;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import org.dive4elements.artifacts.CallContext;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14 import org.dive4elements.river.artifacts.D4EArtifact;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 import org.dive4elements.river.artifacts.access.RiverAccess;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 import org.dive4elements.river.artifacts.context.RiverContext;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 import org.dive4elements.river.artifacts.math.MovingAverage;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 public class DifferenceCurveFilterFacet
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 extends DifferenceCurveFacet
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 public DifferenceCurveFilterFacet() {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 }
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 public DifferenceCurveFilterFacet(
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 int index,
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 String name,
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 String description,
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 ComputeType type,
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 String stateID,
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 String hash
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 ) {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 super(index, name, description, type, stateID, hash);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 }
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 /**
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 * Get difference curve data.
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 * @return a WKms at given index.
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 */
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 @Override
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 public Object getData(Artifact artifact, CallContext context) {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 WKms result = (WKms)super.getData(artifact, context);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 Double start = (Double)context.getContextValue("startkm");
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 Double end = (Double)context.getContextValue("endkm");
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 if(start != null && end != null) {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 RiverContext fc = (RiverContext)context.globalContext();
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 // Adaptive smoothing, based on zoom factor/diagram extents.
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 ZoomScale scales = (ZoomScale)fc.get("zoomscale");
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 RiverAccess access = new RiverAccess((D4EArtifact)artifact);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 String river = access.getRiverName();
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 double radius = scales.getRadius(river, start, end);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 double[][] oldData = new double[2][result.size()];
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59 for (int i = 0; i < result.size(); i++) {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 oldData[0][i] = result.getKm(i);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 oldData[1][i] = result.getW(i);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 }
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 double[][] diffs = MovingAverage.weighted(oldData, radius);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 WKmsImpl newData = new WKmsImpl();
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 for(int j = 0; j < diffs[0].length; j++) {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 newData.add(diffs[0][j], diffs[1][j]);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 }
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 return newData;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 }
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 return result;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 }
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75 /** Copy deeply. */
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
76 @Override
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 public Facet deepCopy() {
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 WaterlevelFacet copy = new DifferenceCurveFilterFacet();
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 copy.set(this);
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 copy.type = type;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 copy.stateId = stateId;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82 copy.hash = hash;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 return copy;
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 }
8b95f9c4f341 Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 }

http://dive4elements.wald.intevation.org