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).

http://dive4elements.wald.intevation.org