comparison artifacts/src/main/java/org/dive4elements/river/artifacts/WINFOArtifact.java @ 8728:f51b9305d338

(issue1801) Reference gauge for waterlevel calculation depends on direction of calculation or flow direction.
author Tom Gottfried <tom@intevation.de>
date Wed, 29 Apr 2015 18:20:23 +0200
parents 93a31cfb18c0
children 1d46e388fe2b
comparison
equal deleted inserted replaced
8727:20b543616e6d 8728:f51b9305d338
256 if (isFreeQ() || isFreeW()) { 256 if (isFreeQ() || isFreeW()) {
257 refKm = range[0]; 257 refKm = range[0];
258 log.debug("'free' calculation (km " + refKm + ")"); 258 log.debug("'free' calculation (km " + refKm + ")");
259 } 259 }
260 else { 260 else {
261 Gauge gauge = river.determineGaugeByPosition(range[0]); 261 Gauge gauge = determineRefGauge(range, river);
262
262 if (gauge == null) { 263 if (gauge == null) {
263 return error( 264 return error(
264 new WQKms[0], "no.gauge.found.for.km", range[0]); 265 new WQKms[0], "no.gauge.found.for.km", range[0]);
265 } 266 }
266 267
652 return Lines.createWaterLines(points, last_w); 653 return Lines.createWaterLines(points, last_w);
653 } 654 }
654 655
655 656
656 /** 657 /**
657 * Returns the Qs for a number of Ws. This method makes use of 658 * Returns the Qs for a number of Ws.
658 * DischargeTables.getQForW().
659 * 659 *
660 * @param ws An array of W values. 660 * @param ws An array of W values.
661 * 661 *
662 * @return an array of Q values. 662 * @return an array of Q values.
663 */ 663 */
728 728
729 if (debug) { 729 if (debug) {
730 log.debug("range: " + Arrays.toString(range)); 730 log.debug("range: " + Arrays.toString(range));
731 } 731 }
732 732
733 Gauge g = r.determineGaugeByPosition(range[0]); 733 Gauge g = determineRefGauge(range, rangeAccess.getRiver());
734 if (g == null) { 734 if (g == null) {
735 log.warn("no gauge found for km: " + range[0]); 735 log.warn("no gauge found for km: " + range[0]);
736 return null; 736 return null;
737 } 737 }
738 738
778 qsOut.toNativeArray(), 778 qsOut.toNativeArray(),
779 generatedWs ? wsOut.toNativeArray() : null 779 generatedWs ? wsOut.toNativeArray() : null
780 }; 780 };
781 } 781 }
782 782
783
784 /**
785 * Determine reference gauge dependent on direction of calculation
786 * for a range calculation, otherwise dependent on flow direction.
787 */
788 public Gauge determineRefGauge(double[] range, River river) {
789 if (isRange()) {
790 return river.determineGaugeByPosition(
791 range[0],
792 range[0] > range[1]);
793 }
794 else {
795 return river.determineGaugeByPosition(range[0]);
796 }
797 }
783 798
784 /** 799 /**
785 * Determines the selected mode of distance/range input. 800 * Determines the selected mode of distance/range input.
786 * 801 *
787 * @return true, if the range mode is selected otherwise false. 802 * @return true, if the range mode is selected otherwise false.

http://dive4elements.wald.intevation.org