Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhcalculation/FlowVelocityModelKmValueFinder.java @ 9096:9bd4505a20dc
Fixed removing duplicates
author | mschaefer |
---|---|
date | Sat, 26 May 2018 15:41:47 +0200 |
parents | 1b24fdbf7fe2 |
children | 5be112fba832 |
comparison
equal
deleted
inserted
replaced
9095:1b24fdbf7fe2 | 9096:9bd4505a20dc |
---|---|
50 /** | 50 /** |
51 * Query for a range of stations of a river with all their q, main-v and tau values.<br /> | 51 * Query for a range of stations of a river with all their q, main-v and tau values.<br /> |
52 * (Might be several 10000 rows if many stations and large q range) | 52 * (Might be several 10000 rows if many stations and large q range) |
53 */ | 53 */ |
54 private static final String SQL_SELECT_ALL = // | 54 private static final String SQL_SELECT_ALL = // |
55 "SELECT DISTINCT fvmv.station AS station, fvmv.q AS q, fvmv.main_channel AS vmain, fvmv.shear_stress AS tau" | 55 "SELECT fvmv.station AS station, fvmv.q AS q, fvmv.main_channel AS vmain, fvmv.shear_stress AS tau" |
56 + " FROM (discharge_zone dz INNER JOIN flow_velocity_model fvm ON dz.id = fvm.discharge_zone_id)" | 56 + " FROM (discharge_zone dz INNER JOIN flow_velocity_model fvm ON dz.id = fvm.discharge_zone_id)" |
57 + " INNER JOIN flow_velocity_model_values fvmv ON fvm.id = fvmv.flow_velocity_model_id" | 57 + " INNER JOIN flow_velocity_model_values fvmv ON fvm.id = fvmv.flow_velocity_model_id" |
58 + " WHERE (dz.river_id = :river_id) AND (fvmv.station BETWEEN :kmfrom - 0.0001 AND :kmto + 0.0001)" | 58 + " WHERE (dz.river_id = :river_id) AND (fvmv.station BETWEEN :kmfrom - 0.0001 AND :kmto + 0.0001)" |
59 /* + " WHERE (dz.river_id = :river_id) AND (fvmv.q BETWEEN :qmin AND :qmax)" */ | 59 /* + " WHERE (dz.river_id = :river_id) AND (fvmv.q BETWEEN :qmin AND :qmax)" */ |
60 + " ORDER BY fvmv.station ASC, fvmv.q ASC"; | 60 + " ORDER BY fvmv.station ASC, fvmv.q ASC"; |
61 | 61 |
62 /** | 62 /** |
63 * Query for a river's max km below a limit with all its q, main-v and tau values. | 63 * Query for a river's max km below a limit with all its q, main-v and tau values. |
64 */ | 64 */ |
65 private static final String SQL_SELECT_KMLOWER = // | 65 private static final String SQL_SELECT_KMLOWER = // |
66 "SELECT DISTINCT fvmv.station AS station, fvmv.q AS q, fvmv.main_channel AS vmain, fvmv.shear_stress AS tau" | 66 "SELECT fvmv.station AS station, fvmv.q AS q, fvmv.main_channel AS vmain, fvmv.shear_stress AS tau" |
67 + " FROM flow_velocity_model_values fvmv" | 67 + " FROM flow_velocity_model_values fvmv" |
68 + " INNER JOIN (SELECT MAX(fvmvi.station) AS kmmax" | 68 + " INNER JOIN (SELECT MAX(fvmvi.station) AS kmmax" |
69 + " FROM discharge_zone dz INNER JOIN flow_velocity_model fvm ON dz.id = fvm.discharge_zone_id" | 69 + " FROM discharge_zone dz INNER JOIN flow_velocity_model fvm ON dz.id = fvm.discharge_zone_id" |
70 + " INNER JOIN flow_velocity_model_values fvmvi ON fvm.id = fvmvi.flow_velocity_model_id" | 70 + " INNER JOIN flow_velocity_model_values fvmvi ON fvm.id = fvmvi.flow_velocity_model_id" |
71 + " WHERE (dz.river_id = :river_id) AND (fvmvi.station < :kmfrom - 0.0001)) finf ON fvmv.station = finf.kmmax" | 71 + " WHERE (dz.river_id = :river_id) AND (fvmvi.station < :kmfrom - 0.0001)) finf ON fvmv.station = finf.kmmax" |
72 + " ORDER BY fvmv.q ASC"; | 72 + " ORDER BY fvmv.q ASC"; |
73 | 73 |
74 /** | 74 /** |
75 * Query for a river's min km above a limit with all its q, main-v and tau values. | 75 * Query for a river's min km above a limit with all its q, main-v and tau values. |
76 */ | 76 */ |
77 private static final String SQL_SELECT_KMUPPER = // | 77 private static final String SQL_SELECT_KMUPPER = // |
78 "SELECT DISTINCT fvmv.station AS station, fvmv.q AS q, fvmv.main_channel AS vmain, fvmv.shear_stress AS tau" | 78 "SELECT fvmv.station AS station, fvmv.q AS q, fvmv.main_channel AS vmain, fvmv.shear_stress AS tau" |
79 + " FROM flow_velocity_model_values fvmv" | 79 + " FROM flow_velocity_model_values fvmv" |
80 + " INNER JOIN (SELECT MIN(fvmvi.station) AS kmmin" | 80 + " INNER JOIN (SELECT MIN(fvmvi.station) AS kmmin" |
81 + " FROM discharge_zone dz INNER JOIN flow_velocity_model fvm ON dz.id = fvm.discharge_zone_id" | 81 + " FROM discharge_zone dz INNER JOIN flow_velocity_model fvm ON dz.id = fvm.discharge_zone_id" |
82 + " INNER JOIN flow_velocity_model_values fvmvi ON fvm.id = fvmvi.flow_velocity_model_id" | 82 + " INNER JOIN flow_velocity_model_values fvmvi ON fvm.id = fvmvi.flow_velocity_model_id" |
83 + " WHERE (dz.river_id = :river_id) AND (fvmvi.station > :kmto + 0.0001)) fsup ON fvmv.station = fsup.kmmin" | 83 + " WHERE (dz.river_id = :river_id) AND (fvmvi.station > :kmto + 0.0001)) fsup ON fvmv.station = fsup.kmmin" |
84 + " ORDER BY fvmv.q ASC"; | 84 + " ORDER BY fvmv.q ASC"; |
85 | 85 |
86 // /** | 86 // /** |
275 * Adds the km-q-v-tau values of a query result row to the last km of the list, or a new one resp. | 275 * Adds the km-q-v-tau values of a query result row to the last km of the list, or a new one resp. |
276 * | 276 * |
277 * @return Number of rows | 277 * @return Number of rows |
278 */ | 278 */ |
279 private int addKms(final List<Object[]> rows, final boolean isDemoValuesCorrection) { | 279 private int addKms(final List<Object[]> rows, final boolean isDemoValuesCorrection) { |
280 log.trace("addKms i km j q v tau"); | |
280 for (final Object[] row : rows) { | 281 for (final Object[] row : rows) { |
281 if ((this.kms.size() == 0) || !Utils.epsilonEquals(this.kms.get(this.kms.size() - 1), (double) row[0], 0.0001)) { | 282 if ((this.kms.size() == 0) || !Utils.epsilonEquals(this.kms.get(this.kms.size() - 1), (double) row[0], 0.0001)) { |
282 this.kms.add((double) row[0]); | 283 this.kms.add((double) row[0]); |
283 this.values.add(new FlowVelocityKmModelValues(this.kms.get(this.kms.size() - 1))); | 284 this.values.add(new FlowVelocityKmModelValues(this.kms.get(this.kms.size() - 1))); |
284 } | 285 } |
286 // "Verfremdung" der v-Werte etwas korrigieren (Originalwerte wurden mit Zufallswert zwischen 10 und 20 multipliziert) | 287 // "Verfremdung" der v-Werte etwas korrigieren (Originalwerte wurden mit Zufallswert zwischen 10 und 20 multipliziert) |
287 this.values.get(this.values.size() - 1).addValues((double) row[1], ((double) row[2]) / 10, (double) row[3]); | 288 this.values.get(this.values.size() - 1).addValues((double) row[1], ((double) row[2]) / 10, (double) row[3]); |
288 else | 289 else |
289 this.values.get(this.values.size() - 1).addValues((double) row[1], (double) row[2], (double) row[3]); | 290 this.values.get(this.values.size() - 1).addValues((double) row[1], (double) row[2], (double) row[3]); |
290 final int j = this.values.size() - 1; | 291 final int j = this.values.size() - 1; |
291 log.trace(String.format("addKms %d km %.3f q %.0f v %.2f tau %.2f", this.values.size() - 1, this.values.get(j).getKm(), (double) row[1], | 292 log.trace(String.format("addKms %d %.3f %d %.0f %.2f %.2f", this.values.size() - 1, this.values.get(j).getKm(), |
292 (double) row[2], (double) row[3])); | 293 this.values.get(j).size() - 1, (double) row[1], (double) row[2], (double) row[3])); |
293 } | 294 } |
294 return rows.size(); | 295 return rows.size(); |
295 } | 296 } |
296 | 297 |
297 /** | 298 /** |