Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 449:9814d4808410
flys/issue69: Connected calculation with the UI
flys-artifacts/trunk@1941 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 18 May 2011 09:11:10 +0000 |
parents | 5606ba4139e0 |
children | c8bb38115290 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed May 18 09:02:50 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed May 18 09:11:10 2011 +0000 @@ -2,6 +2,7 @@ import java.util.List; import java.util.Vector; +import java.util.ArrayList; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -311,23 +312,24 @@ logger.info("WINFOArtifact.computeWaterlevelData"); WQKms[] wqkms = new WQKms[qs.length]; - for (int i = 0; i < wqkms.length; i++) { - wqkms[i] = new WQKms(kms.length); - } - - double [] interpolatedW = new double[qs.length]; - for (double km: kms) { - wst.interpolateW(km, qs, interpolatedW); + ArrayList<WQKms> results = new ArrayList<WQKms>(); - // TODO Modify the interpolation to return a better formed data - // structure. - for (int i = 0; i < interpolatedW.length; i++) { - wqkms[i].add(interpolatedW[i], qs[i], km); + for (int i = 0; i < qs.length; i++) { + double [] oqs = new double[kms.length]; + double [] ows = new double[kms.length]; + int referenceIndex = 0; // TODO: Make depend on the flow direction + WstValueTable.QPosition qPosition = + wst.interpolate(qs[i], referenceIndex, kms, ows, oqs); + if (qPosition != null) { + results.add(new WQKms(kms, oqs, ows)); + } + else { + logger.warn("interpolation failed for q = " + qs[i]); } } - return wqkms; + return results.toArray(new WQKms[results.size()]); }