Mercurial > dive4elements > river
changeset 6212:128686fa5add
flys/issue863: Create gaps for middlebedheight data if distance > 110 m.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Thu, 06 Jun 2013 11:20:01 +0200 (2013-06-06) |
parents | c40acb6bfe38 |
children | 450bf0017690 |
files | artifacts/src/main/java/org/dive4elements/river/exports/MiddleBedHeightGenerator.java artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java |
diffstat | 2 files changed, 34 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/MiddleBedHeightGenerator.java Thu Jun 06 10:56:05 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/MiddleBedHeightGenerator.java Thu Jun 06 11:20:01 2013 +0200 @@ -249,7 +249,7 @@ XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); - StyledSeriesBuilder.addPoints(series, data.getMiddleHeightsPoints(), false); + StyledSeriesBuilder.addPoints(series, data.getMiddleHeightsPoints(), false, 0.110d); addAxisSeries(series, YAXIS.H.idx, visible); }
--- a/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java Thu Jun 06 10:56:05 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java Thu Jun 06 11:20:01 2013 +0200 @@ -40,6 +40,39 @@ /** + * Add points to series, create gaps if certain distance between points is met. + * + * @param series Series to add points to. + * @param points Points to add to series, points[0] to 1st dim, points[1] + * to 2nd dim. + * @param skipNANs if true, skip NAN values in points parameter. + * @param distance if two consecutive entries in points[0] are more + * than distance apart, create a NaN value to skip in display. + */ + public static void addPoints(XYSeries series, double[][] points, boolean skipNANs, double distance) { + if (points == null || points.length <= 1) { + return; + } + double [] xPoints = points[0]; + double [] yPoints = points[1]; + for (int i = 0; i < xPoints.length; i++) { + if (skipNANs && + (Double.isNaN(xPoints[i]) || Double.isNaN(yPoints[i]))) { + logger.warn ("Skipping NaN in StyledSeriesBuilder."); + continue; + } + // Create gap if distance >= distance. + if (i != 0 && Math.abs(xPoints[i-1] - xPoints[i]) >= distance) { + if (!Double.isNaN(yPoints[i-1]) && !Double.isNaN(yPoints[i])) { + series.add((xPoints[i-1]+xPoints[i])/2.d, Double.NaN, false); + } + logger.warn ("Gap " + xPoints[i-1] + " " + xPoints[i] + "!"); + } + series.add(xPoints[i], yPoints[i], false); + } + } + + /** * Add points to series. * * @param series Series to add points to.