changeset 4668:87c938d082d6

Added facet for filtered flow velocity and removed filter from default facet.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 13 Dec 2012 15:54:49 +0100
parents e6a282844a33
children d0b9b77fff9f
files flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFacet.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFilterFacet.java
diffstat 3 files changed, 99 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java	Wed Dec 12 10:42:38 2012 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java	Thu Dec 13 15:54:49 2012 +0100
@@ -237,12 +237,15 @@
     String REFERENCE_CURVE = "reference_curve";
     String REFERENCE_CURVE_NORMALIZED = "reference_curve_normalized";
 
-    String FLOW_VELOCITY_MAINCHANNEL  = "flow_velocity.mainchannel";
-    String FLOW_VELOCITY_TOTALCHANNEL = "flow_velocity.totalchannel";
-    String FLOW_VELOCITY_TAU          = "flow_velocity.tau";
-    String FLOW_VELOCITY_ANNOTATION   = "flow_velocity.annotation";
-    String FLOW_VELOCITY_MEASUREMENT  = "flow_velocity.measurement";
-    String FLOW_VELOCITY_DISCHARGE    = "flow_velocity.discharge";
+    String FLOW_VELOCITY_MAINCHANNEL           = "flow_velocity.mainchannel";
+    String FLOW_VELOCITY_TOTALCHANNEL          = "flow_velocity.totalchannel";
+    String FLOW_VELOCITY_TAU                   = "flow_velocity.tau";
+    String FLOW_VELOCITY_MAINCHANNEL_FILTERED  = "flow_velocity.mainchannel.filtered";
+    String FLOW_VELOCITY_TOTALCHANNEL_FILTERED = "flow_velocity.totalchannel.filtered";
+    String FLOW_VELOCITY_TAU_FILTERED          = "flow_velocity.tau.filtered";
+    String FLOW_VELOCITY_ANNOTATION            = "flow_velocity.annotation";
+    String FLOW_VELOCITY_MEASUREMENT           = "flow_velocity.measurement";
+    String FLOW_VELOCITY_DISCHARGE             = "flow_velocity.discharge";
 
     String MIDDLE_BED_HEIGHT_SINGLE     = "bedheight_middle.single";
     String MIDDLE_BED_HEIGHT_EPOCH      = "bedheight_middle.epoch";
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFacet.java	Wed Dec 12 10:42:38 2012 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFacet.java	Thu Dec 13 15:54:49 2012 +0100
@@ -42,36 +42,13 @@
     public Object getData(Artifact artifact, CallContext context) {
         logger.debug("Get data for flow velocity at index: " + index);
 
-        Double start = (Double)context.getContextValue("startkm");
-        Double end = (Double)context.getContextValue("endkm");
         FLYSArtifact flys = (FLYSArtifact) artifact;
 
         CalculationResult res = (CalculationResult)
             flys.compute(context, hash, stateId, type, false);
 
         FlowVelocityData[] data = (FlowVelocityData[]) res.getData();
-        if(start != null && end != null) {
-            FLYSContext fc = (FLYSContext)context.globalContext();
-            ZoomScale scales = (ZoomScale)fc.get("zoomscale");
-            RiverAccess access = new RiverAccess((FLYSArtifact)artifact);
-            String river = access.getRiver();
 
-            double radius = scales.getRadius(river, start, end);
-            FlowVelocityData oldData = data[index];
-            FlowVelocityData newData = new FlowVelocityData();
-            double[][] q = oldData.getQPoints();
-            double[][] totalV = MovingAverage.weighted(oldData.getTotalChannelPoints(), radius);
-            double[][] mainV = MovingAverage.weighted(oldData.getMainChannelPoints(), radius);
-            double[][] tau = MovingAverage.weighted(oldData.getTauPoints(), radius);
-            for(int j = 0; j < q[0].length; j++) {
-                newData.addKM(q[0][j]);
-                newData.addQ(q[1][j]);
-                newData.addTauMain(tau[1][j]);
-                newData.addVMain(mainV[1][j]);
-                newData.addVTotal(totalV[1][j]);
-            }
-            return newData;
-        }
         return data[index];
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFilterFacet.java	Thu Dec 13 15:54:49 2012 +0100
@@ -0,0 +1,90 @@
+package de.intevation.flys.artifacts.model;
+
+import de.intevation.artifactdatabase.state.Facet;
+
+import de.intevation.artifacts.Artifact;
+import de.intevation.artifacts.CallContext;
+
+import de.intevation.flys.artifacts.FLYSArtifact;
+
+import de.intevation.flys.artifacts.access.RiverAccess;
+import de.intevation.flys.artifacts.context.FLYSContext;
+
+import de.intevation.flys.artifacts.math.MovingAverage;
+import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Facet of a FlowVelocity curve.
+ */
+public class FlowVelocityFilterFacet extends DataFacet {
+
+    private static Logger logger = Logger.getLogger(FlowVelocityFilterFacet.class);
+
+    public FlowVelocityFilterFacet() {
+        // required for clone operation deepCopy()
+    }
+
+
+    public FlowVelocityFilterFacet(
+        int         idx,
+        String      name,
+        String      description,
+        ComputeType type,
+        String      stateId,
+        String      hash
+    ) {
+        super(idx, name, description, type, hash, stateId);
+    }
+
+
+    public Object getData(Artifact artifact, CallContext context) {
+        logger.debug("Get data for flow velocity at index: " + index);
+
+        Double start = (Double)context.getContextValue("startkm");
+        Double end = (Double)context.getContextValue("endkm");
+        FLYSArtifact flys = (FLYSArtifact) artifact;
+
+        CalculationResult res = (CalculationResult)
+            flys.compute(context, hash, stateId, type, false);
+
+        FlowVelocityData[] data = (FlowVelocityData[]) res.getData();
+        if(start != null && end != null) {
+            FLYSContext fc = (FLYSContext)context.globalContext();
+            ZoomScale scales = (ZoomScale)fc.get("zoomscale");
+            RiverAccess access = new RiverAccess((FLYSArtifact)artifact);
+            String river = access.getRiver();
+
+            double radius = scales.getRadius(river, start, end);
+            FlowVelocityData oldData = data[index];
+            FlowVelocityData newData = new FlowVelocityData();
+            double[][] q = oldData.getQPoints();
+            double[][] totalV = MovingAverage.weighted(oldData.getTotalChannelPoints(), radius);
+            double[][] mainV = MovingAverage.weighted(oldData.getMainChannelPoints(), radius);
+            double[][] tau = MovingAverage.weighted(oldData.getTauPoints(), radius);
+            for(int j = 0; j < q[0].length; j++) {
+                newData.addKM(q[0][j]);
+                newData.addQ(q[1][j]);
+                newData.addTauMain(tau[1][j]);
+                newData.addVMain(mainV[1][j]);
+                newData.addVTotal(totalV[1][j]);
+            }
+            return newData;
+        }
+        return data[index];
+    }
+
+
+    /** Copy deeply. */
+    @Override
+    public Facet deepCopy() {
+        FlowVelocityFilterFacet copy = new FlowVelocityFilterFacet();
+        copy.set(this);
+        copy.type    = type;
+        copy.hash    = hash;
+        copy.stateId = stateId;
+        return copy;
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org