annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/DifferenceCurveFilterFacet.java @ 8870:c26fb37899ca

Introduced groups for modules. Modules marked with the same group-id, will be put together in the ui. Also using now the localization info from the server instead of localizing the modules again on the client side.
author gernotbelger
date Wed, 07 Feb 2018 11:59:13 +0100
parents a805211690f7
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