comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 642:2dbbb5be30a1

Re-eanbled the calculation of the backjump correction. flys-artifacts/trunk@2026 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 27 May 2011 16:52:37 +0000
parents f0c1250d1e7b
children a9bde508824a
comparison
equal deleted inserted replaced
641:ab9b6cae0d0d 642:2dbbb5be30a1
495 } 495 }
496 496
497 return wqkms; 497 return wqkms;
498 } 498 }
499 499
500 private static final double [] getBounds(double [][] segments) {
501 boolean down = true;
502 double min = Double.MAX_VALUE;
503 double max = -Double.MAX_VALUE;
504
505 for (double [] segment: segments) {
506 if (down = segment[0] > segment[1]) {
507 if (segment[1] < min) min = segment[1];
508 if (segment[0] > max) max = segment[0];
509 }
510 else {
511 if (segment[0] < min) min = segment[0];
512 if (segment[1] > max) max = segment[1];
513 }
514 }
515
516 return down
517 ? new double [] { max, min }
518 : new double [] { min, max };
519
520 }
521
500 /** 522 /**
501 * Returns the data computed by the discharge longitudinal section 523 * Returns the data computed by the discharge longitudinal section
502 * computation. 524 * computation.
503 * 525 *
504 * @return an array of WQKms object - one object for each given Q value. 526 * @return an array of WQKms object - one object for each given Q value.
552 // more than one segment 574 // more than one segment
553 575
554 double [] boundKms; 576 double [] boundKms;
555 577
556 if (segments.length == 2) { 578 if (segments.length == 2) {
557 boundKms = new double [] { segments[0][0], segments[1][1] }; 579 boundKms = getBounds(segments);
558 } 580 }
559 else { 581 else {
560 TDoubleArrayList bounds = new TDoubleArrayList(); 582 TDoubleArrayList bounds = new TDoubleArrayList();
561 583
562 bounds.add(segments[0][0]); 584 bounds.add(Math.min(segments[0][0], segments[0][1]));
563 585
564 for (int i = 1; i < segments.length-1; ++i) { 586 for (int i = 1; i < segments.length-1; ++i) {
565 double [] segment = segments[i]; 587 double [] segment = segments[i];
566 588
567 Gauge gauge = river.determineGauge(segment[0], segment[1]); 589 Gauge gauge = river.determineGauge(segment[0], segment[1]);
574 else { 596 else {
575 bounds.add(gauge.getStation().doubleValue()); 597 bounds.add(gauge.getStation().doubleValue());
576 } 598 }
577 } 599 }
578 600
579 bounds.add(segments[segments.length-1][1]); 601 bounds.add(Math.max(
602 segments[segments.length-1][0],
603 segments[segments.length-1][1]));
604
580 boundKms = bounds.toNativeArray(); 605 boundKms = bounds.toNativeArray();
581 } 606 }
582 607
583 if (logger.isDebugEnabled()) { 608 if (logger.isDebugEnabled()) {
584 logger.debug("bound kms: " + joinDoubles(boundKms)); 609 logger.debug("bound kms: " + joinDoubles(boundKms));
652 double [] oqs = new double[okms.length]; 677 double [] oqs = new double[okms.length];
653 double [] ows = new double[okms.length]; 678 double [] ows = new double[okms.length];
654 679
655 wst.interpolate(okms, ows, oqs, qPosition, remap); 680 wst.interpolate(okms, ows, oqs, qPosition, remap);
656 681
657 /*
658 BackJumpCorrector bjc = new BackJumpCorrector(); 682 BackJumpCorrector bjc = new BackJumpCorrector();
659 if (bjc.doCorrection(okms, ows)) { 683 if (bjc.doCorrection(okms, ows)) {
660 logger.debug("Discharge longitudinal section has backjumps."); 684 logger.debug("Discharge longitudinal section has backjumps.");
661 results.add(new WQCKms(okms, oqs, ows, bjc.getCorrected())); 685 results.add(new WQCKms(okms, oqs, ows, bjc.getCorrected()));
662 } 686 }
663 else { 687 else {
664 */
665 results.add(new WQKms(okms, oqs, ows)); 688 results.add(new WQKms(okms, oqs, ows));
666 //} 689 }
667 } 690 }
668 691
669 WQKms [] wqkms = results.toArray(new WQKms[results.size()]); 692 WQKms [] wqkms = results.toArray(new WQKms[results.size()]);
670 693
671 setDischargeLongitudinalSectionNames(wqkms, iqs, isQ() ? "Q" : "W"); 694 setDischargeLongitudinalSectionNames(wqkms, iqs, isQ() ? "Q" : "W");

http://dive4elements.wald.intevation.org