Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java @ 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 |
parents | af13ceeba52a |
children | 450bf0017690 |
comparison
equal
deleted
inserted
replaced
6211:c40acb6bfe38 | 6212:128686fa5add |
---|---|
38 private StyledSeriesBuilder() { | 38 private StyledSeriesBuilder() { |
39 } | 39 } |
40 | 40 |
41 | 41 |
42 /** | 42 /** |
43 * Add points to series. | 43 * Add points to series, create gaps if certain distance between points is met. |
44 * | 44 * |
45 * @param series Series to add points to. | 45 * @param series Series to add points to. |
46 * @param points Points to add to series, points[0] to 1st dim, points[1] | 46 * @param points Points to add to series, points[0] to 1st dim, points[1] |
47 * to 2nd dim. | 47 * to 2nd dim. |
48 * @param skipNANs if true, skip NAN values in points parameter. | 48 * @param skipNANs if true, skip NAN values in points parameter. |
49 */ | 49 * @param distance if two consecutive entries in points[0] are more |
50 public static void addPoints(XYSeries series, double[][] points, boolean skipNANs) { | 50 * than distance apart, create a NaN value to skip in display. |
51 */ | |
52 public static void addPoints(XYSeries series, double[][] points, boolean skipNANs, double distance) { | |
51 if (points == null || points.length <= 1) { | 53 if (points == null || points.length <= 1) { |
52 return; | 54 return; |
53 } | 55 } |
54 double [] xPoints = points[0]; | 56 double [] xPoints = points[0]; |
55 double [] yPoints = points[1]; | 57 double [] yPoints = points[1]; |
57 if (skipNANs && | 59 if (skipNANs && |
58 (Double.isNaN(xPoints[i]) || Double.isNaN(yPoints[i]))) { | 60 (Double.isNaN(xPoints[i]) || Double.isNaN(yPoints[i]))) { |
59 logger.warn ("Skipping NaN in StyledSeriesBuilder."); | 61 logger.warn ("Skipping NaN in StyledSeriesBuilder."); |
60 continue; | 62 continue; |
61 } | 63 } |
64 // Create gap if distance >= distance. | |
65 if (i != 0 && Math.abs(xPoints[i-1] - xPoints[i]) >= distance) { | |
66 if (!Double.isNaN(yPoints[i-1]) && !Double.isNaN(yPoints[i])) { | |
67 series.add((xPoints[i-1]+xPoints[i])/2.d, Double.NaN, false); | |
68 } | |
69 logger.warn ("Gap " + xPoints[i-1] + " " + xPoints[i] + "!"); | |
70 } | |
71 series.add(xPoints[i], yPoints[i], false); | |
72 } | |
73 } | |
74 | |
75 /** | |
76 * Add points to series. | |
77 * | |
78 * @param series Series to add points to. | |
79 * @param points Points to add to series, points[0] to 1st dim, points[1] | |
80 * to 2nd dim. | |
81 * @param skipNANs if true, skip NAN values in points parameter. | |
82 */ | |
83 public static void addPoints(XYSeries series, double[][] points, boolean skipNANs) { | |
84 if (points == null || points.length <= 1) { | |
85 return; | |
86 } | |
87 double [] xPoints = points[0]; | |
88 double [] yPoints = points[1]; | |
89 for (int i = 0; i < xPoints.length; i++) { | |
90 if (skipNANs && | |
91 (Double.isNaN(xPoints[i]) || Double.isNaN(yPoints[i]))) { | |
92 logger.warn ("Skipping NaN in StyledSeriesBuilder."); | |
93 continue; | |
94 } | |
62 series.add(xPoints[i], yPoints[i], false); | 95 series.add(xPoints[i], yPoints[i], false); |
63 } | 96 } |
64 } | 97 } |
65 | 98 |
66 | 99 |