Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffHeightSubFilterFacet.java @ 8098:09725b65955a
Add new and simplyfied SedimentLoadFacet
The SedimentLoadFacet is intended to work with the Measurement stations.
It uses the same mechanismn to access the Mesurement station values
as the calculation does.
SedimentLoadLS values need a different facet that will come soon.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Fri, 15 Aug 2014 18:27:19 +0200 |
parents | 5fc56103952a |
children | e4606eae8ea5 |
rev | line source |
---|---|
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 * |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 */ |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.minfo; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import org.apache.log4j.Logger; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import org.dive4elements.artifactdatabase.state.Facet; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 import org.dive4elements.artifacts.Artifact; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 import org.dive4elements.artifacts.CallContext; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 import org.dive4elements.river.artifacts.D4EArtifact; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 import org.dive4elements.river.artifacts.access.RiverAccess; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 import org.dive4elements.river.artifacts.context.RiverContext; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 import org.dive4elements.river.artifacts.model.CalculationResult; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 import org.dive4elements.river.artifacts.model.DataFacet; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 import org.dive4elements.river.artifacts.math.MovingAverage; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 import org.dive4elements.river.artifacts.model.ZoomScale; |
7997
9f42d161886b
Add river elevation model to bed diff chart export.
Raimund Renkert <rrenkert@intevation.de>
parents:
7985
diff
changeset
|
23 import org.dive4elements.river.artifacts.resources.Resources; |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 public class BedDiffHeightSubFilterFacet |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 extends DataFacet |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 private static Logger logger = Logger.getLogger(BedDiffHeightSubFilterFacet.class); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 public BedDiffHeightSubFilterFacet() { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 public BedDiffHeightSubFilterFacet(int idx, String name, String description, |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 ComputeType type, String stateId, String hash) { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 super(idx, name, description, type, hash, stateId); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); |
8007
5fc56103952a
Fixed i18n strings.
Raimund Renkert <rrenkert@intevation.de>
parents:
7998
diff
changeset
|
39 this.metaData.put("Y", "chart.beddifference.yaxis.label.diff"); |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 public Object getData(Artifact artifact, CallContext context) { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 logger.debug("Get data for bed density at index: " + index); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 D4EArtifact flys = (D4EArtifact) artifact; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 CalculationResult res = (CalculationResult) flys.compute(context, hash, |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 stateId, type, false); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 BedDiffYearResult[] data = |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 (BedDiffYearResult[]) res.getData(); // TODO CAST TO SPECIFIC CLASS |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 Double start = (Double)context.getContextValue("startkm"); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 Double end = (Double)context.getContextValue("endkm"); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 if(start != null && end != null) { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 RiverContext fc = (RiverContext)context.globalContext(); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 // Adaptive smoothing, based on zoom factor/diagram extents. |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 ZoomScale scales = (ZoomScale)fc.get("zoomscale"); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 RiverAccess access = new RiverAccess((D4EArtifact)artifact); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 String river = access.getRiverName(); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 double radius = scales.getRadius(river, start, end); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 BedDiffYearResult oldData = data[index]; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 double[][] heights = MovingAverage.weighted(oldData.getHeights2Data(), radius); |
7997
9f42d161886b
Add river elevation model to bed diff chart export.
Raimund Renkert <rrenkert@intevation.de>
parents:
7985
diff
changeset
|
64 this.metaData.put( |
9f42d161886b
Add river elevation model to bed diff chart export.
Raimund Renkert <rrenkert@intevation.de>
parents:
7985
diff
changeset
|
65 Resources.getMsg(context.getMeta(), |
9f42d161886b
Add river elevation model to bed diff chart export.
Raimund Renkert <rrenkert@intevation.de>
parents:
7985
diff
changeset
|
66 "chart.subtitle.radius", new Object[] { radius }), ""); |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 return heights; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 return null; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 /** Copy deeply. */ |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 @Override |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 public Facet deepCopy() { |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 BedDiffHeightSubFilterFacet copy = new BedDiffHeightSubFilterFacet(); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 copy.set(this); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 copy.type = type; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 copy.hash = hash; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 copy.stateId = stateId; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 return copy; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |