annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/FlowVelocityFilterFacet.java @ 7300:83bb52fa0c32

(issue1529) Be more tolerant in the fitting. The invalid value warning is removed because invalid data is expected there when datapoints are not valid for this KM
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 11 Oct 2013 18:40:33 +0200
parents a56fe3bc6700
children 42076d94977e
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: 4668
diff changeset
9 package org.dive4elements.river.artifacts.model;
4668
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4668
diff changeset
11 import org.dive4elements.artifactdatabase.state.Facet;
4668
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4668
diff changeset
13 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4668
diff changeset
14 import org.dive4elements.artifacts.CallContext;
4668
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15
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: 4668
diff changeset
17
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4668
diff changeset
18 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
19 import org.dive4elements.river.artifacts.context.RiverContext;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4668
diff changeset
20
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4668
diff changeset
21 import org.dive4elements.river.artifacts.math.MovingAverage;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4668
diff changeset
22 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
4668
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 import org.apache.log4j.Logger;
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 /**
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 * Facet of a FlowVelocity curve.
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 */
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 public class FlowVelocityFilterFacet extends DataFacet {
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 private static Logger logger = Logger.getLogger(FlowVelocityFilterFacet.class);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 public FlowVelocityFilterFacet() {
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 // required for clone operation deepCopy()
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 }
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 public FlowVelocityFilterFacet(
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 int idx,
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 String name,
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 String description,
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 ComputeType type,
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 String stateId,
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 String hash
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 ) {
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 super(idx, name, description, type, hash, stateId);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 }
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 public Object getData(Artifact artifact, CallContext context) {
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 logger.debug("Get data for flow velocity at index: " + index);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 Double start = (Double)context.getContextValue("startkm");
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 Double end = (Double)context.getContextValue("endkm");
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
55 D4EArtifact flys = (D4EArtifact) artifact;
4668
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 CalculationResult res = (CalculationResult)
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 flys.compute(context, hash, stateId, type, false);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 FlowVelocityData[] data = (FlowVelocityData[]) res.getData();
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 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
62 RiverContext fc = (RiverContext)context.globalContext();
4668
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63 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
64 RiverAccess access = new RiverAccess((D4EArtifact)artifact);
7261
a56fe3bc6700 Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
65 String river = access.getRiverName();
4668
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 double radius = scales.getRadius(river, start, end);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 FlowVelocityData oldData = data[index];
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 FlowVelocityData newData = new FlowVelocityData();
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 double[][] q = oldData.getQPoints();
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 double[][] totalV = MovingAverage.weighted(oldData.getTotalChannelPoints(), radius);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 double[][] mainV = MovingAverage.weighted(oldData.getMainChannelPoints(), radius);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73 double[][] tau = MovingAverage.weighted(oldData.getTauPoints(), radius);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 for(int j = 0; j < q[0].length; j++) {
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75 newData.addKM(q[0][j]);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
76 newData.addQ(q[1][j]);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 newData.addTauMain(tau[1][j]);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 newData.addVMain(mainV[1][j]);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 newData.addVTotal(totalV[1][j]);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 }
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 return newData;
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82 }
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 return data[index];
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 }
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87 /** Copy deeply. */
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 @Override
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
89 public Facet deepCopy() {
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
90 FlowVelocityFilterFacet copy = new FlowVelocityFilterFacet();
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
91 copy.set(this);
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
92 copy.type = type;
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
93 copy.hash = hash;
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
94 copy.stateId = stateId;
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
95 return copy;
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
96 }
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
97 }
87c938d082d6 Added facet for filtered flow velocity and removed filter from default facet.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
98 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org