# HG changeset patch # User Sascha L. Teichmann # Date 1305709870 0 # Node ID 9814d4808410f547d5ccf5c2dcc42a7b0c982b10 # Parent 88d9e1d75d64ddd1b58833415754c5e8f5844423 flys/issue69: Connected calculation with the UI flys-artifacts/trunk@1941 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 88d9e1d75d64 -r 9814d4808410 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed May 18 09:02:50 2011 +0000 +++ b/flys-artifacts/ChangeLog Wed May 18 09:11:10 2011 +0000 @@ -1,3 +1,13 @@ +2011-05-19 Sascha L. Teichmann + + Work on flys/issue69 + + * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java: + Use new logic to calculate "Wasserstand/Wasserspiegellage". + Compared to desktop FLYS are the results are structurally right + but a bit off in the positions after the decimal points. + Maybe a result of the interpolation? Need to debug this. + 2011-05-18 Ingo Weinzierl * src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java: diff -r 88d9e1d75d64 -r 9814d4808410 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java --- 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 results = new ArrayList(); - // 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()]); }