[Dive4elements-commits] [PATCH 09 of 11] Add start and end km of current chart zoomlevel to the context and use these
Wald Commits
scm-commit at wald.intevation.org
Mon Dec 3 17:27:29 CET 2012
# HG changeset patch
# User Raimund Renkert <rrenkert at intevation.de>
# Date 1354551008 -3600
# Node ID 5b551e3a58d53b60ccb4b1422908bd61d44842cd
# Parent d6d16b5ab2f07cb63651ee2fe3f1b4e1c2d454fb
Add start and end km of current chart zoomlevel to the context and use these
values to calculate the moving average.
diff -r d6d16b5ab2f0 -r 5b551e3a58d5 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFacet.java
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFacet.java Mon Dec 03 17:08:39 2012 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FlowVelocityFacet.java Mon Dec 03 17:10:08 2012 +0100
@@ -7,6 +7,8 @@
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.states.DefaultState.ComputeType;
import org.apache.log4j.Logger;
@@ -39,13 +41,36 @@
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];
}
diff -r d6d16b5ab2f0 -r 5b551e3a58d5 flys-artifacts/src/main/java/de/intevation/flys/exports/FlowVelocityGenerator.java
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/FlowVelocityGenerator.java Mon Dec 03 17:08:39 2012 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/FlowVelocityGenerator.java Mon Dec 03 17:10:08 2012 +0100
@@ -1,5 +1,7 @@
package de.intevation.flys.exports;
+import java.util.Arrays;
+
import org.apache.log4j.Logger;
import org.jfree.data.xy.XYSeries;
@@ -11,10 +13,13 @@
import de.intevation.flys.artifacts.FLYSArtifact;
+import de.intevation.flys.artifacts.access.FlowVelocityAccess;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.FlowVelocityData;
import de.intevation.flys.model.FlowVelocityMeasurementValue;
+import de.intevation.flys.jfree.Bounds;
+import de.intevation.flys.jfree.DoubleBounds;
import de.intevation.flys.jfree.FLYSAnnotation;
import de.intevation.flys.jfree.StyledXYSeries;
@@ -201,6 +206,32 @@
return;
}
+ if (getXBounds(0) != null && getDomainAxisRange() != null) {
+ logger.debug(Arrays.toString(getDomainAxisRangeFromRequest()));
+ Bounds bounds =
+ calculateZoom(getXBounds(0), getDomainAxisRange());
+ context.putContextValue("startkm", bounds.getLower());
+ context.putContextValue("endkm", bounds.getUpper());
+ }
+ else if (getXBounds(0) != null && getDomainAxisRange() == null) {
+ context.putContextValue("startkm", getXBounds(0).getLower());
+ context.putContextValue("endkm", getXBounds(0).getUpper());
+ }
+ else if (getXBounds(0) == null && getDomainAxisRange() == null) {
+ FLYSArtifact artifact = (FLYSArtifact)artifactAndFacet.getArtifact();
+ FlowVelocityAccess access = new FlowVelocityAccess(artifact);
+ context.putContextValue("startkm", access.getLowerKM());
+ context.putContextValue("endkm", access.getUpperKM());
+ }
+ else if (getXBounds(0) == null && getDomainAxisRange() != null){
+ FLYSArtifact artifact = (FLYSArtifact)artifactAndFacet.getArtifact();
+ FlowVelocityAccess access = new FlowVelocityAccess(artifact);
+ Bounds b = new DoubleBounds(access.getLowerKM(), access.getUpperKM());
+ Bounds bounds =
+ calculateZoom(b, getDomainAxisRange());
+ context.putContextValue("startkm", bounds.getLower());
+ context.putContextValue("endkm", bounds.getUpper());
+ }
if (name.equals(FLOW_VELOCITY_MAINCHANNEL)) {
doMainChannelOut(
(FlowVelocityData) artifactAndFacet.getData(context),
More information about the Dive4elements-commits
mailing list