Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java @ 1692:5201173c3db5
Bugfixes: #150 #345 Corrected the determination to invert the x axis in longitudinal section charts.
flys-artifacts/trunk@2916 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 10 Oct 2011 08:35:30 +0000 |
parents | 0053a4529f2f |
children | 2a6baa9e1576 |
comparison
equal
deleted
inserted
replaced
1691:17648043429f | 1692:5201173c3db5 |
---|---|
171 * @param xaxis The domain axis. | 171 * @param xaxis The domain axis. |
172 */ | 172 */ |
173 protected void invertXAxis(ValueAxis xaxis) { | 173 protected void invertXAxis(ValueAxis xaxis) { |
174 | 174 |
175 if (inverted) { | 175 if (inverted) { |
176 logger.debug("Invert X-Axis."); | 176 logger.debug("X-Axis.setInverted(true)"); |
177 xaxis.setInverted(true); | 177 xaxis.setInverted(true); |
178 } | 178 } |
179 } | 179 } |
180 | 180 |
181 | 181 |
243 | 243 |
244 XYSeries series = new StyledXYSeries(getSeriesName(wqkms, "W"), theme); | 244 XYSeries series = new StyledXYSeries(getSeriesName(wqkms, "W"), theme); |
245 | 245 |
246 int size = wqkms.size(); | 246 int size = wqkms.size(); |
247 | 247 |
248 for (int i = 0; i < size; i++) { | |
249 series.add(wqkms.getKm(i), wqkms.getW(i)); | |
250 } | |
251 | |
252 addFirstAxisSeries(series, visible); | |
253 | |
254 if (needInvertAxis(wqkms)) { | |
255 setInverted(true); | |
256 } | |
257 } | |
258 | |
259 | |
260 /** | |
261 * Process the output for Q facets in a longitudinal section curve. | |
262 * | |
263 * @param wqkms An array of WQKms values. | |
264 * @param theme The theme that contains styling information. | |
265 */ | |
266 protected void doQOut(WQKms wqkms, Document theme, boolean visible) { | |
267 logger.debug("LongitudinalSectionGenerator.doQOut"); | |
268 | |
269 XYSeries series = new StyledXYSeries(getSeriesName(wqkms, "Q"), theme); | |
270 | |
271 int size = wqkms.size(); | |
272 | |
273 for (int i = 0; i < size; i++) { | |
274 series.add(wqkms.getKm(i), wqkms.getQ(i)); | |
275 } | |
276 | |
277 addSecondAxisSeries(series, visible); | |
278 | |
279 if (needInvertAxis(wqkms)) { | |
280 setInverted(true); | |
281 } | |
282 } | |
283 | |
284 | |
285 /** | |
286 * This method determines - taking JFreeCharts auto x value ordering into | |
287 * account - if the x axis need to be inverted. Waterlines in these charts | |
288 * should decrease. | |
289 * | |
290 * @param wqkms The data object that stores the x and y values used for this | |
291 * chart. | |
292 */ | |
293 public boolean needInvertAxis(WQKms wqkms) { | |
248 boolean wsUp = wqkms.guessWaterIncreasing(); | 294 boolean wsUp = wqkms.guessWaterIncreasing(); |
249 boolean kmUp = DataUtil.guessWaterIncreasing(wqkms.allKms()); | 295 boolean kmUp = DataUtil.guessWaterIncreasing(wqkms.allKms()); |
250 boolean inv = !(kmUp && !wsUp); | 296 boolean inv = (wsUp && kmUp) || (!wsUp && !kmUp); |
297 | |
298 int size = wqkms.size(); | |
251 | 299 |
252 if (logger.isDebugEnabled()) { | 300 if (logger.isDebugEnabled()) { |
253 logger.debug("Generate series: " + series.getKey()); | |
254 logger.debug("Values : " + size); | 301 logger.debug("Values : " + size); |
255 if (size > 0) { | 302 if (size > 0) { |
256 logger.debug("Start km: " + wqkms.getKm(0)); | 303 logger.debug("Start km: " + wqkms.getKm(0)); |
257 logger.debug("End km: " + wqkms.getKm(size-1)); | 304 logger.debug("End km: " + wqkms.getKm(size-1)); |
258 } | 305 } |
259 logger.debug("wsUp: " + wsUp); | 306 logger.debug("wsUp: " + wsUp); |
260 logger.debug("kmUp: " + kmUp); | 307 logger.debug("kmUp: " + kmUp); |
261 logger.debug("inv: " + inv); | 308 logger.debug("inv: " + inv); |
262 } | 309 } |
263 | 310 |
264 for (int i = 0; i < size; i++) { | 311 return inv; |
265 series.add(wqkms.getKm(i), wqkms.getW(i)); | |
266 } | |
267 | |
268 addFirstAxisSeries(series, visible); | |
269 | |
270 if (inv) { | |
271 setInverted(true); | |
272 } | |
273 } | |
274 | |
275 | |
276 /** | |
277 * Process the output for Q facets in a longitudinal section curve. | |
278 * | |
279 * @param wqkms An array of WQKms values. | |
280 * @param theme The theme that contains styling information. | |
281 */ | |
282 protected void doQOut(WQKms wqkms, Document theme, boolean visible) { | |
283 logger.debug("LongitudinalSectionGenerator.doQOut"); | |
284 | |
285 XYSeries series = new StyledXYSeries(getSeriesName(wqkms, "Q"), theme); | |
286 | |
287 int size = wqkms.size(); | |
288 | |
289 if (logger.isDebugEnabled()) { | |
290 if (wqkms.size() > 0) { | |
291 logger.debug("Generate series: " + series.getKey()); | |
292 logger.debug("Start km: " + wqkms.getKm(0)); | |
293 logger.debug("End km: " + wqkms.getKm(size-1)); | |
294 logger.debug("Values : " + size); | |
295 } | |
296 } | |
297 | |
298 for (int i = 0; i < size; i++) { | |
299 series.add(wqkms.getKm(i), wqkms.getQ(i)); | |
300 } | |
301 | |
302 addSecondAxisSeries(series, visible); | |
303 | |
304 //if (wqkms.guessWaterIncreasing()) { | |
305 // setInverted(true); | |
306 //} | |
307 } | 312 } |
308 | 313 |
309 | 314 |
310 /** | 315 /** |
311 * Get name of series (displayed in legend). | 316 * Get name of series (displayed in legend). |