comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/extreme/ExtremeCurveFacet.java @ 4336:09993be04c5e

ExtremeCurveFacet: Set suggestedMaxQ in curve to be max value in segment + 5%.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 31 Oct 2012 14:00:28 +0100
parents 8132b1a53539
children 88064d351bcc
comparison
equal deleted inserted replaced
4335:5948de9788d5 4336:09993be04c5e
3 import de.intevation.artifacts.Artifact; 3 import de.intevation.artifacts.Artifact;
4 import de.intevation.artifacts.CallContext; 4 import de.intevation.artifacts.CallContext;
5 5
6 import de.intevation.flys.artifacts.FLYSArtifact; 6 import de.intevation.flys.artifacts.FLYSArtifact;
7 7
8 import de.intevation.flys.artifacts.access.FixAnalysisAccess; 8 import de.intevation.flys.artifacts.access.ExtremeAccess;
9 9
10 import de.intevation.flys.artifacts.model.CalculationResult; 10 import de.intevation.flys.artifacts.model.CalculationResult;
11 import de.intevation.flys.artifacts.model.DataFacet; 11 import de.intevation.flys.artifacts.model.DataFacet;
12 import de.intevation.flys.artifacts.model.FacetTypes; 12 import de.intevation.flys.artifacts.model.FacetTypes;
13 import de.intevation.flys.artifacts.model.Parameters; 13 import de.intevation.flys.artifacts.model.Parameters;
14 14
15 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; 15 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
16 16
17 import de.intevation.flys.utils.KMIndex; 17 import de.intevation.flys.utils.KMIndex;
18 import de.intevation.flys.utils.DoubleUtil;
18 19
19 import org.apache.log4j.Logger; 20 import org.apache.log4j.Logger;
20 21
21 /** 22 /**
22 * Facet to show the W|Q values. 23 * Facet to show the W|Q values.
58 @Override 59 @Override
59 public Object getData(Artifact artifact, CallContext context) { 60 public Object getData(Artifact artifact, CallContext context) {
60 logger.debug("ExtremeCurveFacet.getData"); 61 logger.debug("ExtremeCurveFacet.getData");
61 if (artifact instanceof FLYSArtifact) { 62 if (artifact instanceof FLYSArtifact) {
62 FLYSArtifact flys = (FLYSArtifact)artifact; 63 FLYSArtifact flys = (FLYSArtifact)artifact;
64 ExtremeAccess access = new ExtremeAccess(flys);
63 65
64 CalculationResult res = 66 CalculationResult res =
65 (CalculationResult) flys.compute(context, 67 (CalculationResult) flys.compute(context,
66 ComputeType.ADVANCE, 68 ComputeType.ADVANCE,
67 false); 69 false);
74 76
75 KMIndex.Entry<Curve> curveEntry = curves.search(currentKm); 77 KMIndex.Entry<Curve> curveEntry = curves.search(currentKm);
76 78
77 if (curveEntry != null) { 79 if (curveEntry != null) {
78 logger.debug("A curve at km = " + currentKm); 80 logger.debug("A curve at km = " + currentKm);
79 return curveEntry.getValue(); 81 Curve c = curveEntry.getValue();
82 // Find segment in which the curr. km is located.
83 double[] ds = access.getValuesForRange(currentKm);
84
85 if (ds != null) {
86 double m = DoubleUtil.maxInArray(ds);
87 // Add 5 percent.
88 m *= 1.05d;
89 c.setSuggestedMaxQ(m);
90 }
91
92 return c;
80 } 93 }
81 else { 94 else {
82 logger.debug("No curve at km = " + currentKm); 95 logger.debug("No curve at km = " + currentKm);
83 return null; 96 return null;
84 } 97 }

http://dive4elements.wald.intevation.org