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