Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 362:d79a51fc4f1d
Added necessary methods to start the computation of waterlevel data.
flys-artifacts/trunk@1770 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 29 Apr 2011 07:46:27 +0000 |
parents | d97982627596 |
children | 0ccf7200fc51 |
comparison
equal
deleted
inserted
replaced
361:3e3ec9613883 | 362:d79a51fc4f1d |
---|---|
18 import de.intevation.artifactdatabase.state.StateEngine; | 18 import de.intevation.artifactdatabase.state.StateEngine; |
19 import de.intevation.artifactdatabase.transition.TransitionEngine; | 19 import de.intevation.artifactdatabase.transition.TransitionEngine; |
20 | 20 |
21 import de.intevation.artifacts.common.utils.XMLUtils; | 21 import de.intevation.artifacts.common.utils.XMLUtils; |
22 | 22 |
23 import de.intevation.flys.model.River; | |
24 | |
23 import de.intevation.flys.artifacts.states.DefaultState; | 25 import de.intevation.flys.artifacts.states.DefaultState; |
24 import de.intevation.flys.artifacts.context.FLYSContext; | 26 import de.intevation.flys.artifacts.context.FLYSContext; |
27 import de.intevation.flys.artifacts.model.WQKms; | |
28 import de.intevation.flys.artifacts.model.WstValueTable; | |
25 | 29 |
26 | 30 |
27 /** | 31 /** |
28 * The default WINFO artifact. | 32 * The default WINFO artifact. |
29 * | 33 * |
213 DefaultState state = (DefaultState) engine.getState(stateId); | 217 DefaultState state = (DefaultState) engine.getState(stateId); |
214 state = (DefaultState) fillState(state); | 218 state = (DefaultState) fillState(state); |
215 | 219 |
216 ui.appendChild(state.describeStatic(doc, ui, context, uuid)); | 220 ui.appendChild(state.describeStatic(doc, ui, context, uuid)); |
217 } | 221 } |
218 | 222 } |
223 | |
224 | |
225 // | |
226 // METHODS FOR RETRIEVING COMPUTED DATA FOR DIFFERENT CHART TYPES | |
227 // | |
228 | |
229 /** | |
230 * Returns the data that is computed by a waterlevel computation. | |
231 * | |
232 * @return an array of data triples that consist of W, Q and Kms. | |
233 */ | |
234 public WQKms[] getWaterlevelData() | |
235 throws NullPointerException | |
236 { | |
237 logger.debug("WINFOArtifact.getWaterlevelData"); | |
238 | |
239 River river = getRiver(); | |
240 if (river == null) { | |
241 throw new NullPointerException("No river selected."); | |
242 } | |
243 | |
244 double[] kms = getKms(); | |
245 if (kms == null) { | |
246 throw new NullPointerException("No Kms selected."); | |
247 } | |
248 | |
249 double[] qs = getQs(); | |
250 if (qs == null) { | |
251 // TODO Use DischargeTableValue.getQForW() to compute the Qs. | |
252 } | |
253 | |
254 WstValueTable wst = WstValueTable.getTable(river); | |
255 if (wst == null) { | |
256 throw new NullPointerException("No Wst found for selected river."); | |
257 } | |
258 | |
259 // TODO Introduce a caching mechanism here! | |
260 | |
261 return computeWaterlevelData(kms, qs, wst); | |
262 } | |
263 | |
264 | |
265 /** | |
266 * Computes the data of a waterlevel computation based on the interpolation | |
267 * in WstValueTable. | |
268 * | |
269 * @param kms The kilometer values. | |
270 * @param qa The discharge values. | |
271 * @param wst The WstValueTable used for the interpolation. | |
272 * | |
273 * @return an array of data triples that consist of W, Q and Kms. | |
274 */ | |
275 public static WQKms[] computeWaterlevelData( | |
276 double[] kms, | |
277 double[] qs, | |
278 WstValueTable wst) | |
279 { | |
280 logger.info("WINFOArtifact.computeWaterlevelData"); | |
281 | |
282 WQKms[] wqkms = new WQKms[qs.length]; | |
283 for (int i = 0; i < wqkms.length; i++) { | |
284 wqkms[i] = new WQKms(); | |
285 } | |
286 | |
287 for (double km: kms) { | |
288 double[] interpolatedW = wst.interpolateW(km, qs); | |
289 | |
290 // TODO Modify the interpolation to return a better formed data | |
291 // structure. | |
292 for (int i = 0; i < interpolatedW.length; i++) { | |
293 wqkms[i].add(interpolatedW[i], qs[i], km); | |
294 } | |
295 } | |
296 | |
297 return wqkms; | |
219 } | 298 } |
220 } | 299 } |
221 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 300 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |