Mercurial > dive4elements > river
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 } |