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()]);
     }
 
 

http://dive4elements.wald.intevation.org