Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalculation.java @ 9202:b4402594213b
More work on calculations and output for S-Info flood duration workflow (chart types 1 and 2)
author | mschaefer |
---|---|
date | Mon, 02 Jul 2018 07:33:53 +0200 |
parents | 1614cb14308f |
children | 4f411c6ee3ae |
comparison
equal
deleted
inserted
replaced
9201:491e1a434457 | 9202:b4402594213b |
---|---|
22 import org.dive4elements.river.artifacts.model.CalculationResult; | 22 import org.dive4elements.river.artifacts.model.CalculationResult; |
23 import org.dive4elements.river.artifacts.model.DateRange; | 23 import org.dive4elements.river.artifacts.model.DateRange; |
24 import org.dive4elements.river.artifacts.resources.Resources; | 24 import org.dive4elements.river.artifacts.resources.Resources; |
25 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; | 25 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; |
26 import org.dive4elements.river.artifacts.sinfo.common.GaugeDischargeValuesFinder; | 26 import org.dive4elements.river.artifacts.sinfo.common.GaugeDischargeValuesFinder; |
27 import org.dive4elements.river.artifacts.sinfo.common.GaugeMainValueNameFinder; | 27 import org.dive4elements.river.artifacts.sinfo.common.GaugeMainValueFinder; |
28 import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider; | 28 import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider; |
29 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; | 29 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; |
30 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; | 30 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; |
31 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | 31 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; |
32 import org.dive4elements.river.backend.utils.DateUtil; | 32 import org.dive4elements.river.backend.utils.DateUtil; |
78 results.addResult(overviewResult, problems); | 78 results.addResult(overviewResult, problems); |
79 | 79 |
80 // create q-for-w-finders for all gauges of the calculation km range | 80 // create q-for-w-finders for all gauges of the calculation km range |
81 final RiverInfoProvider infoProvider = RiverInfoProvider.forRange(this.context, river, calcRange); | 81 final RiverInfoProvider infoProvider = RiverInfoProvider.forRange(this.context, river, calcRange); |
82 final Map<Gauge, GaugeDischargeValuesFinder> qFinders = new HashMap<>(); | 82 final Map<Gauge, GaugeDischargeValuesFinder> qFinders = new HashMap<>(); |
83 final Map<Gauge, GaugeMainValueNameFinder> zoneFinders = new HashMap<>(); | 83 final Map<Gauge, GaugeMainValueFinder> zoneFinders = new HashMap<>(); |
84 for (final Gauge gauge : river.determineGauges(calcRange.getMinimumDouble(), calcRange.getMaximumDouble())) { | 84 for (final Gauge gauge : river.determineGauges(calcRange.getMinimumDouble(), calcRange.getMaximumDouble())) { |
85 qFinders.put(gauge, GaugeDischargeValuesFinder.loadValues(gauge, problems)); | 85 qFinders.put(gauge, GaugeDischargeValuesFinder.loadValues(gauge, problems)); |
86 zoneFinders.put(gauge, GaugeMainValueNameFinder.loadValues(MainValueTypeKey.Q, gauge, problems)); | 86 zoneFinders.put(gauge, GaugeMainValueFinder.loadValues(MainValueTypeKey.Q, gauge, problems)); |
87 } | 87 } |
88 final Collection<ResultRow> detailsRows = new ArrayList<>(); | 88 final Collection<ResultRow> detailsRows = new ArrayList<>(); |
89 | 89 |
90 // calculate secondary results for each year or epoch | 90 // calculate secondary results for each year or epoch |
91 if (access.getYears() != null) { | 91 if (access.getYears() != null) { |
119 * Calculates the collision details for a km range of a river and a year or year range (epoch), | 119 * Calculates the collision details for a km range of a river and a year or year range (epoch), |
120 * and adds them to a ResultRow collection | 120 * and adds them to a ResultRow collection |
121 */ | 121 */ |
122 private void calculateDetails(final Collection<ResultRow> rows, final RiverInfoProvider riverInfo, final double fromKm, final double toKm, | 122 private void calculateDetails(final Collection<ResultRow> rows, final RiverInfoProvider riverInfo, final double fromKm, final double toKm, |
123 final int fromYear, final int toYear, final Map<Gauge, GaugeDischargeValuesFinder> qFinders, | 123 final int fromYear, final int toYear, final Map<Gauge, GaugeDischargeValuesFinder> qFinders, |
124 final Map<Gauge, GaugeMainValueNameFinder> zoneFinders) { | 124 final Map<Gauge, GaugeMainValueFinder> zoneFinders) { |
125 for (final CollisionValue collision : CollisionValue.getValues(riverInfo.getRiver(), fromKm, toKm, DateUtil.getStartDateFromYear(fromYear), | 125 for (final CollisionValue collision : CollisionValue.getValues(riverInfo.getRiver(), fromKm, toKm, DateUtil.getStartDateFromYear(fromYear), |
126 DateUtil.getEndDateFromYear(toYear))) { | 126 DateUtil.getEndDateFromYear(toYear))) { |
127 final Gauge gauge = riverInfo.getGauge(collision.getStation(), true); | 127 final Gauge gauge = riverInfo.getGauge(collision.getStation(), true); |
128 final double q = qFinders.get(gauge).getDischarge(collision.getGaugeW()); | 128 final double q = qFinders.get(gauge).getDischarge(collision.getGaugeW()); |
129 final double qOut = Double.isInfinite(q) ? Double.NaN : q; | 129 final double qOut = Double.isInfinite(q) ? Double.NaN : q; |
130 rows.add(ResultRow.create().putValue(GeneralResultType.station, collision.getStation()) | 130 rows.add(ResultRow.create().putValue(GeneralResultType.station, collision.getStation()) |
131 .putValue(GeneralResultType.date, collision.getEventDate()) | 131 .putValue(GeneralResultType.date, collision.getEventDate()) |
132 .putValue(SInfoResultType.collisionGaugeW, collision.getGaugeW()) | 132 .putValue(SInfoResultType.collisionGaugeW, collision.getGaugeW()) |
133 .putValue(SInfoResultType.gaugeLabel, collision.getGaugeName()) | 133 .putValue(SInfoResultType.gaugeLabel, collision.getGaugeName()) |
134 .putValue(SInfoResultType.discharge, qOut) | 134 .putValue(SInfoResultType.discharge, qOut) |
135 .putValue(SInfoResultType.dischargeZone, zoneFinders.get(gauge).getZoneName(q))); | 135 .putValue(SInfoResultType.dischargeZone, zoneFinders.get(gauge).findZoneName(q))); |
136 } | 136 } |
137 } | 137 } |
138 } | 138 } |