Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java @ 3401:086326be721c
FixA: Overview: classify Q ranges by intersecting gauges.
flys-artifacts/trunk@5042 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 18 Jul 2012 14:44:29 +0000 |
parents | 29022c93027d |
children | c44ff50f4970 |
comparison
equal
deleted
inserted
replaced
3400:2eea676ba48f | 3401:086326be721c |
---|---|
103 start = other.start; | 103 start = other.start; |
104 end = other.end; | 104 end = other.end; |
105 sector = other.sector; | 105 sector = other.sector; |
106 } | 106 } |
107 | 107 |
108 public SectorRange(Range range) { | |
109 super(range); | |
110 } | |
111 | |
108 public SectorRange(double start, double end, int sector) { | 112 public SectorRange(double start, double end, int sector) { |
109 super(start, end); | 113 super(start, end); |
110 this.sector = sector; | 114 this.sector = sector; |
111 } | 115 } |
112 | 116 |
113 public int getSector() { | 117 public int getSector() { |
114 return sector; | 118 return sector; |
119 } | |
120 | |
121 public void setSector(int sector) { | |
122 this.sector = sector; | |
115 } | 123 } |
116 | 124 |
117 public boolean enlarge(SectorRange other) { | 125 public boolean enlarge(SectorRange other) { |
118 if (sector == other.sector | 126 if (sector == other.sector |
119 && Math.abs(end-other.start) < EPSILON) { | 127 && Math.abs(end-other.start) < EPSILON) { |
205 } | 213 } |
206 } | 214 } |
207 return -1; | 215 return -1; |
208 } | 216 } |
209 | 217 |
210 public void buildSectors(GaugeRange gauge, List<QRange> qRanges) { | 218 public void buildSectors( |
211 | 219 GaugeFinder gaugeFinder, |
220 List<QRange> qRanges | |
221 ) { | |
212 for (QRange qRange: qRanges) { | 222 for (QRange qRange: qRanges) { |
213 SectorRange sector = new SectorRange( | 223 for (GaugeRange gRange: gaugeFinder.getGauges()) { |
214 qRange.start, qRange.end, | 224 SectorRange sector = new SectorRange(qRange); |
215 gauge.classify(qRange.q)); | 225 if (!sector.clip(gRange)) { |
216 if (sectors.isEmpty() | 226 continue; |
217 || !sectors.get(sectors.size()-1).enlarge(sector)) { | 227 } |
218 sectors.add(sector); | 228 sector.setSector(gRange.classify(qRange.q)); |
219 } | 229 |
220 } | 230 if (sectors.isEmpty() |
231 || !sectors.get(sectors.size()-1).enlarge(sector)) { | |
232 sectors.add(sector); | |
233 } | |
234 } // for all gauges | |
235 } // for all Q ranges | |
221 } | 236 } |
222 | 237 |
223 public void loadKmRange(SQLQuery query) { | 238 public void loadKmRange(SQLQuery query) { |
224 query.setInteger("column_id", columnId); | 239 query.setInteger("column_id", columnId); |
225 | 240 |
252 if (qRange.clip(this)) { | 267 if (qRange.clip(this)) { |
253 qRanges.add(qRange); | 268 qRanges.add(qRange); |
254 } | 269 } |
255 } | 270 } |
256 | 271 |
257 GaugeRange gauge = gaugeFinder.find(this); | 272 buildSectors(gaugeFinder, qRanges); |
258 | |
259 if (gauge != null) { | |
260 buildSectors(gauge, qRanges); | |
261 } | |
262 else { | |
263 log.warn("No gauge found for column " + columnId + "."); | |
264 } | |
265 } | 273 } |
266 } // class Column | 274 } // class Column |
267 | 275 |
268 protected int wstId; | 276 protected int wstId; |
269 protected String description; | 277 protected String description; |