comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifact.java @ 4508:03b8d10a99c0

FixationArtifact: implement WaterLineArtifact, deliver lines for cross-sections.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 14 Nov 2012 13:46:50 +0100
parents e0a355d0c771
children b195fede1c3b
comparison
equal deleted inserted replaced
4507:976ff4b74b96 4508:03b8d10a99c0
1 package de.intevation.flys.artifacts; 1 package de.intevation.flys.artifacts;
2
3 import de.intevation.artifacts.CallContext;
4
5 import de.intevation.flys.artifacts.geom.Lines;
6 import de.intevation.flys.artifacts.StaticWKmsArtifact;
7
8 import de.intevation.flys.artifacts.model.CalculationResult;
9 import de.intevation.flys.artifacts.model.WKms;
10 import de.intevation.flys.artifacts.model.fixings.FixRealizingResult;
11
12 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
13
14 import de.intevation.flys.model.FastCrossSectionLine;
2 15
3 import org.apache.log4j.Logger; 16 import org.apache.log4j.Logger;
4 17
5 /** 18 /**
6 * The default fixation analysis artifact. 19 * The default fixation analysis artifact.
7 * 20 *
8 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> 21 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
9 */ 22 */
10 public class FixationArtifact 23 public class FixationArtifact
11 extends FLYSArtifact 24 extends FLYSArtifact
25 implements WaterLineArtifact
12 { 26 {
13 /** The logger for this class. */ 27 /** The logger for this class. */
14 private static Logger logger = Logger.getLogger(FixationArtifact.class); 28 private static Logger logger = Logger.getLogger(FixationArtifact.class);
15 29
16 /** The name of the artifact. */ 30 /** The name of the artifact. */
32 */ 46 */
33 @Override 47 @Override
34 public String getName() { 48 public String getName() {
35 return ARTIFACT_NAME; 49 return ARTIFACT_NAME;
36 } 50 }
51
52 @Override
53 public Lines.LineData getWaterLines(
54 int facetIdx,
55 FastCrossSectionLine csl,
56 double d,
57 double w,
58 CallContext context
59 ) {
60 FixRealizingResult result = (FixRealizingResult)
61 ((CalculationResult)this.compute(context, ComputeType.ADVANCE, false)).getData();
62
63 WKms wkms = result.getWQKms()[facetIdx];
64
65 double km = csl.getKm();
66
67 // Find W at km.
68 double wAtKm;
69
70 wAtKm = StaticWKmsArtifact.getWAtKm(wkms, km);
71
72 if (wAtKm == -1 || Double.isNaN(wAtKm)) {
73 logger.warn("Waterlevel at km " + km + " unknown.");
74 return new Lines.LineData(new double[][] {{}}, 0d, 0d);
75 }
76
77 // This should be FixRealizationResult, which can be getWQKms()ed
78 return Lines.createWaterLines(csl.getPoints(), wAtKm);
79 }
37 } 80 }
38 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 81 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org