Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoCalculationResult.java @ 8946:5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
author | gernotbelger |
---|---|
date | Tue, 13 Mar 2018 18:49:33 +0100 |
parents | 82998242ba84 |
children | a4f1ac81f26d |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoCalculationResult.java Tue Mar 13 09:55:53 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoCalculationResult.java Tue Mar 13 18:49:33 2018 +0100 @@ -13,13 +13,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.List; -import org.dive4elements.river.artifacts.sinfo.tkhcalculation.SoilKind; import org.dive4elements.river.artifacts.sinfo.util.WstInfo; -import gnu.trove.TDoubleArrayList; - /** * @author Gernot Belger */ @@ -31,14 +27,11 @@ private final String label; - private final boolean hasTkh; - private final WstInfo wst; - public AbstractSInfoCalculationResult(final String label, final WstInfo wst, final boolean hasTkh, final Collection<ROW> rows) { + public AbstractSInfoCalculationResult(final String label, final WstInfo wst, final Collection<ROW> rows) { this.label = label; this.wst = wst; - this.hasTkh = hasTkh; this.rows = new ArrayList<>(rows); } @@ -46,10 +39,6 @@ return this.label; } - public final boolean hasTkh() { - return this.hasTkh; - } - public final WstInfo getWst() { return this.wst; } @@ -61,139 +50,4 @@ public final Collection<ROW> getRows() { return Collections.unmodifiableCollection(this.rows); } - - public double[][] getFlowDepthPoints() { - - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - - for (final ROW row : this.rows) { - xPoints.add(row.getStation()); - yPoints.add(row.getFlowDepth()); - } - - return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; - } - - public double[][] getFlowDepthTkhPoints() { - - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - - for (final ROW row : this.rows) { - xPoints.add(row.getStation()); - yPoints.add(row.getFlowDepthWithTkh()); - } - - return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; - } - - public final double[][] getTkhUpPoints() { - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - final List<SoilKind> kinds = new ArrayList<>(this.rows.size()); - - for (final ROW row : this.rows) { - xPoints.add(row.getStation()); - yPoints.add(row.getTkhUp()); - kinds.add(row.getTkhKind()); - } - - return adjustTkhVisualization(xPoints, yPoints, kinds); - } - - public final double[][] getTkhDownPoints() { - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - final List<SoilKind> kinds = new ArrayList<>(this.rows.size()); - - for (final ROW row : this.rows) { - xPoints.add(row.getStation()); - yPoints.add(row.getTkhDown()); - kinds.add(row.getTkhKind()); - } - - return adjustTkhVisualization(xPoints, yPoints, kinds); - } - - public double[][] getVelocityPoints() { - - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - - for (final ROW row : this.rows) { - xPoints.add(row.getStation()); - yPoints.add(row.getVelocity()); - } - - return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; - } - - public double[][] getD50Points() { - - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - - for (final ROW row : this.rows) { - xPoints.add(row.getStation()); - yPoints.add(row.getD50()); - } - - return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; - } - - public double[][] getTauPoints() { - - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - - for (final ROW row : this.rows) { - xPoints.add(row.getStation()); - yPoints.add(row.getTau()); - } - - return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; - } - - /** - * the up and down points must be further adjusted for visualization, see Mail Hr. Reiß - * basically we need to introduce extra points when the kind changes, so we get vertical lines in that case - */ - private double[][] adjustTkhVisualization(final TDoubleArrayList xPoints, final TDoubleArrayList yPoints, final List<SoilKind> kinds) { - - final TDoubleArrayList adjustedX = new TDoubleArrayList(xPoints.size()); - final TDoubleArrayList adjustedY = new TDoubleArrayList(yPoints.size()); - - adjustedX.add(xPoints.get(0)); - adjustedY.add(yPoints.get(0)); - - for (int i = 1; i < xPoints.size(); i++) { - - final SoilKind kind1 = kinds.get(i - 1); - final SoilKind kind2 = kinds.get(i); - - if (kind1 != kind2) { - /* introduce two extra points in order to create a vertical line in the middle of the two adjacent points */ - final double x1 = xPoints.get(i - 1); - final double y1 = yPoints.get(i - 1); - final double x2 = xPoints.get(i); - final double y2 = yPoints.get(i); - - final double middleX = (x1 + x2) / 2; - - // REMARK: we can't produce a 100% vertical line, as the area-renderer will not work correctly - adjustedX.add(middleX - 0.0001); - adjustedY.add(y1); - - adjustedX.add(middleX + 0.0001); - adjustedY.add(y2); - } - - /* always add the real point now */ - adjustedX.add(xPoints.get(i)); - adjustedY.add(yPoints.get(i)); - } - - return new double[][] { adjustedX.toNativeArray(), adjustedY.toNativeArray() }; - } } \ No newline at end of file