# HG changeset patch # User Felix Wolfsteller # Date 1380554938 -7200 # Node ID 483cae8915f60611f4cb28808a3dd18f5999c814 # Parent baf04164fcc616a365d990626f02ab21296208f6 issue1435: Add methods to get data in StyledSeriesBuilder-friendly format, doc. diff -r baf04164fcc6 -r 483cae8915f6 artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensity.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensity.java Mon Sep 30 09:38:09 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensity.java Mon Sep 30 17:28:58 2013 +0200 @@ -14,10 +14,12 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import org.apache.log4j.Logger; +/** Sediment Densities for multiple years. */ public class SedimentDensity { private static final Logger logger = Logger @@ -67,8 +69,8 @@ /** * Get the density at year. - * measured densities are valid until the next measurement. - * if no measurement was found 1.8 is returned. + * Measured densities are valid until the next measurement. + * If no measurement was found 1.8 is returned. */ public double getDensity(double km, int year) { Collections.sort(this.years); @@ -91,6 +93,45 @@ return 1.8d; } + /** Get (sorted) map of km to density of all years. */ + protected double[][] getAllDensities() + { + TreeMap map = new TreeMap(); + for (int year: years) { + for (SedimentDensityValue sdv: densities.get(year)) { + map.put(sdv.getKm(), sdv.getDensity()); + } + } + double[][] points = new double[2][map.keySet().size()]; + int i = 0; + for (Map.Entry kmDens: map.entrySet()) { + points[0][i] = kmDens.getKey(); + points[2][i] = kmDens.getValue(); + i++; + } + + return points; + } + + /** Get points km,density (sorted by km), for a given year. */ + public double[][] getDensities(int year) + { + TreeMap map = new TreeMap(); + for (SedimentDensityValue sdv: densities.get(year)) { + map.put(sdv.getKm(), sdv.getDensity()); + } + double[][] points = new double[2][map.keySet().size()]; + int i = 0; + for (Map.Entry kmDens: map.entrySet()) { + points[0][i] = kmDens.getKey(); + points[1][i] = kmDens.getValue(); + i++; + } + + return points; + } + + /** Get value at km, interpolated. */ private double getDensityAtKm( List values, double km @@ -111,6 +152,7 @@ return spline(prev, next, km); } + /** Linearly interpolate between density values. */ private static double spline( SedimentDensityValue prev, SedimentDensityValue next,