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;

http://dive4elements.wald.intevation.org