# HG changeset patch # User Sascha L. Teichmann # Date 1342622669 0 # Node ID 086326be721c521286ca18e4e8d677692c5ffb92 # Parent 2eea676ba48f75bf742af4f10de8d4a8926944bb FixA: Overview: classify Q ranges by intersecting gauges. flys-artifacts/trunk@5042 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 2eea676ba48f -r 086326be721c flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed Jul 18 13:11:41 2012 +0000 +++ b/flys-artifacts/ChangeLog Wed Jul 18 14:44:29 2012 +0000 @@ -1,3 +1,14 @@ +2012-07-18 Sascha L. Teichmann + + * src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java: + Classify each discharge range by the gauges which intersect it. + + * src/main/java/de/intevation/flys/artifacts/model/Range.java: + Added convinience constructor. + + * src/main/java/de/intevation/flys/artifacts/model/GaugeFinder.java: + Added method to return all gauges. + 2012-07-18 Felix Wolfsteller * src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java: diff -r 2eea676ba48f -r 086326be721c flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java Wed Jul 18 13:11:41 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java Wed Jul 18 14:44:29 2012 +0000 @@ -105,6 +105,10 @@ sector = other.sector; } + public SectorRange(Range range) { + super(range); + } + public SectorRange(double start, double end, int sector) { super(start, end); this.sector = sector; @@ -114,6 +118,10 @@ return sector; } + public void setSector(int sector) { + this.sector = sector; + } + public boolean enlarge(SectorRange other) { if (sector == other.sector && Math.abs(end-other.start) < EPSILON) { @@ -207,17 +215,24 @@ return -1; } - public void buildSectors(GaugeRange gauge, List qRanges) { - + public void buildSectors( + GaugeFinder gaugeFinder, + List qRanges + ) { for (QRange qRange: qRanges) { - SectorRange sector = new SectorRange( - qRange.start, qRange.end, - gauge.classify(qRange.q)); - if (sectors.isEmpty() - || !sectors.get(sectors.size()-1).enlarge(sector)) { - sectors.add(sector); - } - } + for (GaugeRange gRange: gaugeFinder.getGauges()) { + SectorRange sector = new SectorRange(qRange); + if (!sector.clip(gRange)) { + continue; + } + sector.setSector(gRange.classify(qRange.q)); + + if (sectors.isEmpty() + || !sectors.get(sectors.size()-1).enlarge(sector)) { + sectors.add(sector); + } + } // for all gauges + } // for all Q ranges } public void loadKmRange(SQLQuery query) { @@ -254,14 +269,7 @@ } } - GaugeRange gauge = gaugeFinder.find(this); - - if (gauge != null) { - buildSectors(gauge, qRanges); - } - else { - log.warn("No gauge found for column " + columnId + "."); - } + buildSectors(gaugeFinder, qRanges); } } // class Column diff -r 2eea676ba48f -r 086326be721c flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/GaugeFinder.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/GaugeFinder.java Wed Jul 18 13:11:41 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/GaugeFinder.java Wed Jul 18 14:44:29 2012 +0000 @@ -84,6 +84,10 @@ return null; } + public List getGauges() { + return gauges; + } + public boolean loadDischargeSectors(Session session, int riverId) { SQLQuery query = session.createSQLQuery(SQL_DISCHARGE_SECTORS) diff -r 2eea676ba48f -r 086326be721c flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Range.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Range.java Wed Jul 18 13:11:41 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Range.java Wed Jul 18 14:44:29 2012 +0000 @@ -12,6 +12,11 @@ public Range() { } + public Range(Range other) { + start = other.start; + end = other.end; + } + public Range(double start, double end) { this.start = start; this.end = end;