Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/DifferenceCurveFilterFacet.java @ 8202:e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 05 Sep 2014 12:58:17 +0200 |
parents | 92a2b9b691e1 |
children | 2010da0904b7 |
rev | line source |
---|---|
7791
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package org.dive4elements.river.artifacts.model; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import org.dive4elements.artifactdatabase.state.Facet; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 import org.dive4elements.artifacts.Artifact; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import org.dive4elements.artifacts.CallContext; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import org.dive4elements.river.artifacts.D4EArtifact; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import org.dive4elements.river.artifacts.access.RiverAccess; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 import org.dive4elements.river.artifacts.context.RiverContext; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import org.dive4elements.river.artifacts.math.MovingAverage; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 public class DifferenceCurveFilterFacet |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 extends DifferenceCurveFacet |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 { |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 public DifferenceCurveFilterFacet() { |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 } |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 public DifferenceCurveFilterFacet( |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 int index, |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 String name, |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 String description, |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 ComputeType type, |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 String stateID, |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 String hash |
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 ) { |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 super(index, name, description, type, stateID, hash); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 } |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 /** |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 * Get difference curve data. |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 * @return a WKms at given index. |
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 @Override |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 public Object getData(Artifact artifact, CallContext context) { |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 WKms result = (WKms)super.getData(artifact, context); |
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 Double start = (Double)context.getContextValue("startkm"); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 Double end = (Double)context.getContextValue("endkm"); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 if(start != null && end != null) { |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 RiverContext fc = (RiverContext)context.globalContext(); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 // Adaptive smoothing, based on zoom factor/diagram extents. |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 ZoomScale scales = (ZoomScale)fc.get("zoomscale"); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 RiverAccess access = new RiverAccess((D4EArtifact)artifact); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 String river = access.getRiverName(); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 double radius = scales.getRadius(river, start, end); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 double[][] oldData = new double[2][result.size()]; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 for (int i = 0; i < result.size(); i++) { |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 oldData[0][i] = result.getKm(i); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 oldData[1][i] = result.getW(i); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 } |
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[][] diffs = MovingAverage.weighted(oldData, radius); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 WKmsImpl newData = new WKmsImpl(); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 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
|
59 newData.add(diffs[0][j], diffs[1][j]); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 } |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 return newData; |
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 return result; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 } |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 /** Copy deeply. */ |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 @Override |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 public Facet deepCopy() { |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 WaterlevelFacet copy = new DifferenceCurveFilterFacet(); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 copy.set(this); |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 copy.type = type; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 copy.stateId = stateId; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 copy.hash = hash; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 return copy; |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 } |
8b95f9c4f341
Added new facet for filtered winfo differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 } |