comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 637:f0c1250d1e7b

Make "Berechnungsart 4" work independent of flow direction. Commented out back jump correction temporarily. flys-artifacts/trunk@2013 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 26 May 2011 16:54:16 +0000
parents 58276db49b16
children 2dbbb5be30a1
comparison
equal deleted inserted replaced
636:58276db49b16 637:f0c1250d1e7b
519 if (wst == null) { 519 if (wst == null) {
520 logger.error("No wst found for selected river."); 520 logger.error("No wst found for selected river.");
521 return new WQKms[0]; 521 return new WQKms[0];
522 } 522 }
523 523
524 double [][] segments = getSplittedDistance(); 524 double [][] segments = getRanges();
525
526 if (logger.isDebugEnabled()) {
527 logger.debug("segments ----------------- enter");
528 for (double [] segment: segments) {
529 logger.debug(" " + joinDoubles(segment));
530 }
531 logger.debug("segments ----------------- leave");
532 }
525 533
526 if (segments.length < 1) { 534 if (segments.length < 1) {
527 logger.warn("no segments given"); 535 logger.warn("no segments given");
528 return new WQKms[0]; 536 return new WQKms[0];
529 } 537 }
615 double [] okms = getKms(new double [] { 623 double [] okms = getKms(new double [] {
616 boundKms[0], boundKms[boundKms.length-1] }); 624 boundKms[0], boundKms[boundKms.length-1] });
617 625
618 ArrayList<WQKms> results = new ArrayList<WQKms>(); 626 ArrayList<WQKms> results = new ArrayList<WQKms>();
619 627
628 int referenceIndex = kmUp ? 0 : boundKms.length-1;
629
620 for (int i = 0; i < iqs.length; ++i) { 630 for (int i = 0; i < iqs.length; ++i) {
621 double [] iqsi = iqs[i]; 631 double [] iqsi = iqs[i];
622 632
623 QPosition qPosition = wst.interpolate( 633 QPosition qPosition = wst.interpolate(
624 iqsi[0], 634 iqsi[0],
625 kmUp ? 0 : boundKms.length-1, 635 referenceIndex,
626 boundKms, boundWs, boundQs); 636 boundKms, boundWs, boundQs);
627 637
628 if (qPosition == null) { 638 if (qPosition == null) {
629 logger.warn("interpolation failed for " + iqsi[i]); 639 logger.warn("interpolation failed for " + iqsi[i]);
630 continue; 640 continue;
642 double [] oqs = new double[okms.length]; 652 double [] oqs = new double[okms.length];
643 double [] ows = new double[okms.length]; 653 double [] ows = new double[okms.length];
644 654
645 wst.interpolate(okms, ows, oqs, qPosition, remap); 655 wst.interpolate(okms, ows, oqs, qPosition, remap);
646 656
657 /*
647 BackJumpCorrector bjc = new BackJumpCorrector(); 658 BackJumpCorrector bjc = new BackJumpCorrector();
648 if (bjc.doCorrection(okms, ows)) { 659 if (bjc.doCorrection(okms, ows)) {
649 logger.debug("Discharge longitudinal section has backjumps."); 660 logger.debug("Discharge longitudinal section has backjumps.");
650 results.add(new WQCKms(okms, oqs, ows, bjc.getCorrected())); 661 results.add(new WQCKms(okms, oqs, ows, bjc.getCorrected()));
651 } 662 }
652 else { 663 else {
664 */
653 results.add(new WQKms(okms, oqs, ows)); 665 results.add(new WQKms(okms, oqs, ows));
654 } 666 //}
655 } 667 }
656 668
657 WQKms [] wqkms = results.toArray(new WQKms[results.size()]); 669 WQKms [] wqkms = results.toArray(new WQKms[results.size()]);
658 670
659 setDischargeLongitudinalSectionNames(wqkms, iqs, isQ() ? "Q" : "W"); 671 setDischargeLongitudinalSectionNames(wqkms, iqs, isQ() ? "Q" : "W");

http://dive4elements.wald.intevation.org