changeset 7829:1aba75321441 minfo-opt

Added morph. active width to bed height difference calculation.
author Raimund Renkert <rrenkert@intevation.de>
date Fri, 28 Mar 2014 11:20:49 +0100
parents 8faa8cfd2385
children d9791fa3c8ad
files artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffCalculation.java artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearFilterFacet.java artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearResult.java artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightFactory.java artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightSingleData.java
diffstat 5 files changed, 82 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffCalculation.java	Thu Mar 27 14:56:34 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffCalculation.java	Fri Mar 28 11:20:49 2014 +0100
@@ -140,6 +140,8 @@
         TDoubleArrayList gap       = new TDoubleArrayList(size);
         TDoubleArrayList heights1  = new TDoubleArrayList(size);
         TDoubleArrayList heights2  = new TDoubleArrayList(size);
+        TDoubleArrayList morphs1   = new TDoubleArrayList(size);
+        TDoubleArrayList morphs2   = new TDoubleArrayList(size);
 
         int range = Math.abs(s1.getYear() - s2.getYear());
 
@@ -147,6 +149,8 @@
             double station = stations.getQuick(i);
             double h1      = s1.getHeight(station);
             double h2      = s2.getHeight(station);
+            double m1      = s1.getWidth(station);
+            double m2      = s2.getWidth(station);
             double hDiff   = h1 - h2;
 
             if (!Double.isNaN(hDiff)) {
@@ -164,6 +168,8 @@
                 absolute.add((hDiff / range) * 100d);
                 heights1.add(h1);
                 heights2.add(h2);
+                morphs1.add(m1);
+                morphs2.add(m2);
             }
         }
         return new BedDiffYearResult(
@@ -171,6 +177,8 @@
             diffRes,
             heights1,
             heights2,
+            morphs1,
+            morphs2,
             soundings,
             absolute,
             gap,
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearFilterFacet.java	Thu Mar 27 14:56:34 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearFilterFacet.java	Fri Mar 28 11:20:49 2014 +0100
@@ -63,12 +63,16 @@
             double[][] diffs = MovingAverage.weighted(oldData.getDifferencesData(), radius);
             double[][] heights1 = MovingAverage.weighted(oldData.getHeights1Data(), radius);
             double[][] heights2 = MovingAverage.weighted(oldData.getHeights2Data(), radius);
-            double[][] morph = oldData.getMorphWidthData();
+            double[][] morph1 = oldData.getMorphWidth1Data();
+            double[][] morph2 = oldData.getMorphWidth2Data();
+            double[][] sounding = oldData.getSoundingWidthData();
             double[][] year = MovingAverage.weighted(oldData.getHeightPerYearData(), radius);
             for(int j = 0; j < diffs[0].length; j++) {
                 newData.addKm(diffs[0][j]);
                 newData.addBedHeights(year[1][j]);
-                newData.addMorphWidth(morph[1][j]);
+                newData.addMorphWidth1(morph1[1][j]);
+                newData.addMorphWidth2(morph2[1][j]);
+                newData.addSoundingWidth(sounding[1][j]);
                 newData.addDifference(diffs[1][j]);
                 newData.addHeight1(heights1[1][j]);
                 newData.addHeight2(heights2[1][j]);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearResult.java	Thu Mar 27 14:56:34 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearResult.java	Fri Mar 28 11:20:49 2014 +0100
@@ -17,7 +17,9 @@
 {
     protected TDoubleArrayList bedHeights;
     protected TDoubleArrayList dataGap;
-    protected TDoubleArrayList morphWidth;
+    protected TDoubleArrayList soundingWidth;
+    protected TDoubleArrayList morphWidth1;
+    protected TDoubleArrayList morphWidth2;
     protected int start;
     protected int end;
     protected String nameFirst;
@@ -27,7 +29,9 @@
         super();
         this.bedHeights = new TDoubleArrayList();
         this.dataGap = new TDoubleArrayList();
-        this.morphWidth = new TDoubleArrayList();
+        this.soundingWidth = new TDoubleArrayList();
+        this.morphWidth1 = new TDoubleArrayList();
+        this.morphWidth2 = new TDoubleArrayList();
         this.start = -1;
         this.end = -1;
     }
@@ -44,7 +48,9 @@
         TDoubleArrayList differences,
         TDoubleArrayList heights1,
         TDoubleArrayList heights2,
-        TDoubleArrayList morphWidth,
+        TDoubleArrayList morphWidth1,
+        TDoubleArrayList morphWidth2,
+        TDoubleArrayList soundingWidth,
         TDoubleArrayList bedHeights,
         TDoubleArrayList dataGap,
         int start,
@@ -55,7 +61,9 @@
         super(kms, differences, heights1, heights2);
         this.bedHeights = bedHeights;
         this.dataGap = dataGap;
-        this.morphWidth = morphWidth;
+        this.soundingWidth = soundingWidth;
+        this.morphWidth1 = morphWidth1;
+        this.morphWidth2 = morphWidth2;
         this.start = start;
         this.end = end;
         this.nameFirst = nameFirst;
@@ -70,8 +78,16 @@
         return this.dataGap;
     }
 
-    public TDoubleArrayList getMorphWidth() {
-        return this.morphWidth;
+    public TDoubleArrayList getMorphWidth1() {
+        return this.morphWidth1;
+    }
+
+    public TDoubleArrayList getMorphWidth2() {
+        return this.morphWidth2;
+    }
+
+    public TDoubleArrayList getSoundingWidth() {
+        return this.soundingWidth;
     }
 
     public int getStart() {
@@ -100,18 +116,40 @@
         return this.nameSecond;
     }
 
-    public void addMorphWidth(double value) {
-        this.morphWidth.add(value);
+    public void addMorphWidth1(double value) {
+        this.morphWidth1.add(value);
+    }
+
+    public void addMorphWidth2(double value) {
+        this.morphWidth2.add(value);
+    }
+
+    public void addSoundingWidth(double value) {
+        this.soundingWidth.add(value);
     }
 
     public void addBedHeights(double value) {
         this.bedHeights.add(value);
     }
 
-    public double[][] getMorphWidthData() {
+    public double[][] getMorphWidth1Data() {
         return new double[][] {
             kms.toNativeArray(),
-            morphWidth.toNativeArray()
+            morphWidth1.toNativeArray()
+        };
+    }
+
+    public double[][] getMorphWidth2Data() {
+        return new double[][] {
+            kms.toNativeArray(),
+            morphWidth2.toNativeArray()
+        };
+    }
+
+    public double[][] getSoundingWidthData() {
+        return new double[][] {
+            kms.toNativeArray(),
+            soundingWidth.toNativeArray()
         };
     }
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightFactory.java	Thu Mar 27 14:56:34 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightFactory.java	Fri Mar 28 11:20:49 2014 +0100
@@ -32,7 +32,8 @@
 
     /** Query to get km and ws for wst_id and column_pos. */
     public static final String SQL_SELECT_SINGLE =
-        "SELECT bhsv.height, bhsv.station, bhsv.data_gap, bhsv.sounding_width, bhs.year " +
+        "SELECT bhsv.height, bhsv.station, bhsv.data_gap, bhsv.sounding_width," +
+        "       bhs.year, bhsv.width" +
         "   FROM bed_height_single bhs" +
         "       JOIN bed_height_single_values bhsv on bhsv.bed_height_single_id = bhs.id" +
         "   WHERE bhs.id = :height_id" +
@@ -148,6 +149,7 @@
                 .addScalar("station", StandardBasicTypes.DOUBLE)
                 .addScalar("data_gap", StandardBasicTypes.DOUBLE)
                 .addScalar("sounding_width", StandardBasicTypes.DOUBLE)
+                .addScalar("width", StandardBasicTypes.DOUBLE)
                 .addScalar("year", StandardBasicTypes.INTEGER);
             sqlQuery.setInteger("height_id", height_id);
             List<Object []> results = sqlQuery.list();
@@ -158,7 +160,8 @@
                 Double row1 = row[1] != null ? (Double)row[1] : Double.NaN;
                 Double row2 = row[2] != null ? (Double)row[2] : Double.NaN;
                 Double row3 = row[3] != null ? (Double)row[3] : Double.NaN;
-                height.add(row0, row1, row2, row3, (Integer) row[4]);
+                Double row4 = row[4] != null ? (Double)row[4] : Double.NaN;
+                height.add(row0, row1, row2, row3, row4, (Integer) row[5]);
             }
             return height;
         }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightSingleData.java	Thu Mar 27 14:56:34 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightSingleData.java	Fri Mar 28 11:20:49 2014 +0100
@@ -17,12 +17,14 @@
     protected int year;
     protected TDoubleArrayList data_gap;
     protected TDoubleArrayList soundingWidth;
+    protected TDoubleArrayList width;
 
     public BedHeightSingleData() {
         super();
         this.year = -1;
         data_gap = new TDoubleArrayList();
         soundingWidth = new TDoubleArrayList();
+        width = new TDoubleArrayList();
     }
 
     public BedHeightSingleData(String name) {
@@ -30,19 +32,22 @@
         this.year = -1;
         data_gap = new TDoubleArrayList();
         soundingWidth = new TDoubleArrayList();
+        width = new TDoubleArrayList();
     }
 
     public void add(
         double value,
         double station,
         double gap,
+        double sounding,
         double width,
         int year
     ) {
         super.add(value, station);
         this.year = year;
         this.data_gap.add(gap);
-        this.soundingWidth.add(width);
+        this.soundingWidth.add(sounding);
+        this.width.add(width);
     }
 
     public int getYear() {
@@ -70,4 +75,13 @@
     public double[] getSoundingWidths() {
         return this.soundingWidth.toNativeArray();
     }
+
+    public double getWidth(int ndx) {
+        return width.getQuick(ndx);
+    }
+
+    public double getWidth(double station) {
+        int ndx = this.station.indexOf(station);
+        return width.get(ndx);
+    }
 }

http://dive4elements.wald.intevation.org