Mercurial > dive4elements > river
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"); |