comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WaterlevelFacet.java @ 3596:6aea625190da

Handle former W calculations in fixA W/Q out. flys-artifacts/trunk@5218 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 16 Aug 2012 09:49:21 +0000
parents 1481322efc02
children deeda39ef01b
comparison
equal deleted inserted replaced
3595:3837a4e6db46 3596:6aea625190da
6 import de.intevation.artifacts.CallContext; 6 import de.intevation.artifacts.CallContext;
7 7
8 import de.intevation.flys.artifacts.FLYSArtifact; 8 import de.intevation.flys.artifacts.FLYSArtifact;
9 9
10 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; 10 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
11 import de.intevation.flys.artifacts.math.Linear;
11 12
12 import org.apache.log4j.Logger; 13 import org.apache.log4j.Logger;
13 14
14 /** 15 /**
15 * Facet of a Waterlevel (WQKms). 16 * Facet of a Waterlevel (WQKms).
65 logger.error("WaterlevelFacet.getData: artifact is null"); 66 logger.error("WaterlevelFacet.getData: artifact is null");
66 return null; 67 return null;
67 } 68 }
68 69
69 WQKms [] wqkms = getWQKms(res); 70 WQKms [] wqkms = getWQKms(res);
71 if (context.getContextValue("currentKm") != null) {
72 logger.debug("interpolate at given km");
73 // TODO handle exact match.
74
75 WQKms wqkmsI = wqkms[index];
76 double km = ((Double)context.getContextValue("currentKm")).doubleValue();
77
78 // TODO employ DataUtils interface to TDoubleArraList
79 int size = wqkmsI.size();
80 boolean kmIncreasing = (wqkmsI.getKm(0) < wqkmsI.getKm(wqkmsI.size()-1))
81 ? true : false;
82 int mod = kmIncreasing ? +1 : -1;
83 int idx = 0;
84 if (!kmIncreasing) {
85 while (idx < size && wqkmsI.getKm(idx) < km) {
86 idx++;
87 }
88 }
89 else {
90 idx = size-1;
91 while (idx > 0 && wqkmsI.getKm(idx) > km) {
92 idx--;
93 }
94 }
95 WQKms resultWQKms = new WQKms();
96 if (idx != -1 && idx < size) {
97 double inW = Linear.linear(km, wqkmsI.getKm(idx), wqkmsI.getKm(idx-mod), wqkmsI.getW(idx), wqkmsI.getW(idx-mod));
98 double inQ = Linear.linear(km, wqkmsI.getKm(idx),wqkmsI.getKm(idx-mod), wqkmsI.getQ(idx), wqkmsI.getQ(idx-mod));
99 resultWQKms.add(inW, inQ, km);
100 }
101 return resultWQKms;
102 }
70 103
71 return wqkms != null ? wqkms[index] : null; 104 return wqkms != null ? wqkms[index] : null;
72 } 105 }
73 106
74 107

http://dive4elements.wald.intevation.org