Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java @ 3784:9f9d5ada96ca
Merged revisions 5498-5499 via svnmerge from
file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-artifacts/trunk
........
r5498 | rrenkert | 2012-09-17 16:38:47 +0200 (Mo, 17 Sep 2012) | 3 lines
Refactor MINFO bed quality resultsets and facets.
........
r5499 | rrenkert | 2012-09-17 16:47:05 +0200 (Mo, 17 Sep 2012) | 2 lines
Fixed date range in minfo bed quality result.
........
flys-artifacts/tags/2.9.1@5530 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 19 Sep 2012 14:56:13 +0000 |
parents | 7fa38f8bcd8d |
children | a5f65e8983be |
comparison
equal
deleted
inserted
replaced
3783:4a973fa25125 | 3784:9f9d5ada96ca |
---|---|
97 river, | 97 river, |
98 from, | 98 from, |
99 to, | 99 to, |
100 dr.getFrom(), | 100 dr.getFrom(), |
101 dr.getTo()); | 101 dr.getTo()); |
102 BedQualityResult result = new BedQualityResult(); | |
103 result.setDateRange(dr); | |
102 if (bedDiameter != null) { | 104 if (bedDiameter != null) { |
105 result.add(calculateBedParameter(bedMeasurements, dr)); | |
103 for (String bd : bedDiameter) { | 106 for (String bd : bedDiameter) { |
104 BedQualityResult bedResult = | 107 BedDiameterResult bedResult = |
105 calculateBed(bedMeasurements, bd, dr); | 108 calculateBed(bedMeasurements, bd, dr); |
106 | 109 |
107 // Avoid adding empty result sets. | 110 // Avoid adding empty result sets. |
108 if (!bedResult.isEmpty()) { | 111 if (!bedResult.isEmpty()) { |
109 results.add(bedResult); | 112 result.add(bedResult); |
110 } | 113 } |
111 } | 114 } |
112 } | 115 } |
113 if (bedloadDiameter != null) { | 116 if (bedloadDiameter != null) { |
114 for (String bld : bedloadDiameter) { | 117 for (String bld : bedloadDiameter) { |
115 BedQualityResult loadResult = | 118 BedloadDiameterResult loadResult = |
116 calculateBedload(loadMeasurements, bld, dr); | 119 calculateBedload(loadMeasurements, bld, dr); |
117 results.add(loadResult); | 120 result.add(loadResult); |
118 } | 121 } |
119 } | 122 } |
123 results.add(result); | |
120 } | 124 } |
121 | 125 |
122 return new CalculationResult( | 126 return new CalculationResult( |
123 results.toArray(new BedQualityResult[results.size()]), this); | 127 results.toArray(new BedQualityResult[results.size()]), this); |
124 } | 128 } |
125 | 129 |
126 protected BedQualityResult calculateBed( | 130 private BedParametersResult calculateBedParameter( |
127 QualityMeasurements qm, | 131 QualityMeasurements qm, |
128 String diameter, | 132 DateRange dr |
129 DateRange range | |
130 ) { | 133 ) { |
131 List<Double> kms = qm.getKms(); | 134 List<Double> kms = qm.getKms(); |
135 QualityMeasurements capFiltered = filterCapMeasurements(qm); | |
136 QualityMeasurements subFiltered = filterSubMeasurements(qm); | |
132 TDoubleArrayList location = new TDoubleArrayList(); | 137 TDoubleArrayList location = new TDoubleArrayList(); |
133 TDoubleArrayList avDiameterCap = new TDoubleArrayList(); | |
134 TDoubleArrayList avDiameterSub = new TDoubleArrayList(); | |
135 TDoubleArrayList porosityCap = new TDoubleArrayList(); | 138 TDoubleArrayList porosityCap = new TDoubleArrayList(); |
136 TDoubleArrayList porositySub = new TDoubleArrayList(); | 139 TDoubleArrayList porositySub = new TDoubleArrayList(); |
137 TDoubleArrayList densityCap = new TDoubleArrayList(); | 140 TDoubleArrayList densityCap = new TDoubleArrayList(); |
138 TDoubleArrayList densitySub = new TDoubleArrayList(); | 141 TDoubleArrayList densitySub = new TDoubleArrayList(); |
139 for (double km : kms) { | 142 |
140 //Filter cap and sub measurements. | 143 for(double km : kms) { |
141 QualityMeasurements capFiltered = filterCapMeasurements(qm); | 144 double[] pCap = calculatePorosity(capFiltered, km); |
142 QualityMeasurements subFiltered = filterSubMeasurements(qm); | 145 double[] pSub = calculatePorosity(subFiltered, km); |
143 | |
144 List<QualityMeasurement> cm = capFiltered.getMeasurements(km); | |
145 List<QualityMeasurement> sm = subFiltered.getMeasurements(km); | |
146 | |
147 double avCap = calculateAverage(cm, diameter); | |
148 double avSub = calculateAverage(sm, diameter); | |
149 double[] pCap = calculatePorosity(capFiltered, km, diameter); | |
150 double[] pSub = calculatePorosity(subFiltered, km, diameter); | |
151 double[] dCap = calculateDensity(capFiltered, pCap); | 146 double[] dCap = calculateDensity(capFiltered, pCap); |
152 double[] dSub = calculateDensity(subFiltered, pSub); | 147 double[] dSub = calculateDensity(subFiltered, pSub); |
153 | 148 |
154 double pCapRes = 0d; | 149 double pCapRes = 0d; |
155 double pSubRes = 0d; | 150 double pSubRes = 0d; |
162 for (int i = 0; i < pSub.length; i++) { | 157 for (int i = 0; i < pSub.length; i++) { |
163 pSubRes += pSub[i]; | 158 pSubRes += pSub[i]; |
164 dSubRes += dSub[i]; | 159 dSubRes += dSub[i]; |
165 } | 160 } |
166 location.add(km); | 161 location.add(km); |
167 avDiameterCap.add(avCap); | |
168 avDiameterSub.add(avSub); | |
169 porosityCap.add((pCapRes / pCap.length) * 100 ); | 162 porosityCap.add((pCapRes / pCap.length) * 100 ); |
170 porositySub.add((pSubRes / pSub.length) * 100); | 163 porositySub.add((pSubRes / pSub.length) * 100); |
171 densityCap.add((dCapRes / dCap.length) / 1000); | 164 densityCap.add((dCapRes / dCap.length) / 1000); |
172 densitySub.add((dSubRes / dSub.length) / 1000); | 165 densitySub.add((dSubRes / dSub.length) / 1000); |
173 } | 166 |
174 return new BedBedQualityResult( | 167 } |
175 diameter, | 168 |
176 avDiameterCap, | 169 return new BedParametersResult( |
177 avDiameterSub, | |
178 location, | 170 location, |
179 range, | |
180 porosityCap, | 171 porosityCap, |
181 porositySub, | 172 porositySub, |
182 densityCap, | 173 densityCap, |
183 densitySub); | 174 densitySub); |
184 } | 175 } |
185 | 176 |
177 protected BedDiameterResult calculateBed( | |
178 QualityMeasurements qm, | |
179 String diameter, | |
180 DateRange range | |
181 ) { | |
182 List<Double> kms = qm.getKms(); | |
183 TDoubleArrayList location = new TDoubleArrayList(); | |
184 TDoubleArrayList avDiameterCap = new TDoubleArrayList(); | |
185 TDoubleArrayList avDiameterSub = new TDoubleArrayList(); | |
186 for (double km : kms) { | |
187 //Filter cap and sub measurements. | |
188 QualityMeasurements capFiltered = filterCapMeasurements(qm); | |
189 QualityMeasurements subFiltered = filterSubMeasurements(qm); | |
190 | |
191 List<QualityMeasurement> cm = capFiltered.getMeasurements(km); | |
192 List<QualityMeasurement> sm = subFiltered.getMeasurements(km); | |
193 | |
194 double avCap = calculateAverage(cm, diameter); | |
195 double avSub = calculateAverage(sm, diameter); | |
196 location.add(km); | |
197 avDiameterCap.add(avCap); | |
198 avDiameterSub.add(avSub); | |
199 } | |
200 return new BedDiameterResult( | |
201 diameter, | |
202 avDiameterCap, | |
203 avDiameterSub, | |
204 location); | |
205 } | |
206 | |
186 private double[] calculateDensity( | 207 private double[] calculateDensity( |
187 QualityMeasurements capFiltered, | 208 QualityMeasurements capFiltered, |
188 double[] porosity | 209 double[] porosity |
189 ) { | 210 ) { |
190 double[] density = new double[porosity.length]; | 211 double[] density = new double[porosity.length]; |
194 return density; | 215 return density; |
195 } | 216 } |
196 | 217 |
197 private double[] calculatePorosity( | 218 private double[] calculatePorosity( |
198 QualityMeasurements capFiltered, | 219 QualityMeasurements capFiltered, |
199 double km, | 220 double km |
200 String diameter | |
201 ) { | 221 ) { |
202 List<QualityMeasurement> list = capFiltered.getMeasurements(km); | 222 List<QualityMeasurement> list = capFiltered.getMeasurements(km); |
203 double[] results = new double[list.size()]; | 223 double[] results = new double[list.size()]; |
204 int i = 0; | 224 int i = 0; |
205 for (QualityMeasurement qm : list) { | 225 for (QualityMeasurement qm : list) { |
211 } | 231 } |
212 | 232 |
213 return results; | 233 return results; |
214 } | 234 } |
215 | 235 |
216 protected BedQualityResult calculateBedload( | 236 protected BedloadDiameterResult calculateBedload( |
217 QualityMeasurements qm, | 237 QualityMeasurements qm, |
218 String diameter, | 238 String diameter, |
219 DateRange range | 239 DateRange range |
220 ) { | 240 ) { |
221 List<Double> kms = qm.getKms(); | 241 List<Double> kms = qm.getKms(); |
225 List<QualityMeasurement> measurements = qm.getMeasurements(km); | 245 List<QualityMeasurement> measurements = qm.getMeasurements(km); |
226 double mid = calculateAverage(measurements, diameter); | 246 double mid = calculateAverage(measurements, diameter); |
227 location.add(km); | 247 location.add(km); |
228 avDiameter.add(mid); | 248 avDiameter.add(mid); |
229 } | 249 } |
230 return new BedLoadBedQualityResult( | 250 return new BedloadDiameterResult( |
231 diameter, | 251 diameter, |
232 avDiameter, | 252 avDiameter, |
233 location, | 253 location, |
234 range); | 254 range); |
235 } | 255 } |