annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/OfficialLineFinder.java @ 6494:1e97d2e95410

Amtl. Linien: Fixed problem that only a random official line is detect.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 28 Jun 2013 12:52:51 +0200
parents f579e4a80b84
children 1e6bd2831280
rev   line source
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.artifacts.model;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
10
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12 import java.util.Collections;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
13 import java.util.HashMap;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
14 import java.util.List;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 import java.util.Map;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17 import net.sf.ehcache.Cache;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
18 import net.sf.ehcache.Element;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
20 import org.apache.log4j.Logger;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
21 import org.dive4elements.river.artifacts.D4EArtifact;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
22 import org.dive4elements.river.artifacts.cache.CacheFactory;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23 import org.dive4elements.river.model.Gauge;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24 import org.dive4elements.river.model.MainValue;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 import org.dive4elements.river.model.NamedMainValue;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26 import org.dive4elements.river.model.OfficialLine;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27 import org.dive4elements.river.model.River;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28 import org.dive4elements.river.model.Wst;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
29 import org.dive4elements.river.model.WstColumn;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
30
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31 public class OfficialLineFinder
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32 {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
33 public static final String CACHE_NAME = "official-lines";
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
35 private static Logger log = Logger.getLogger(OfficialLineFinder.class);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
36
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
37 // We will only have one entry in this cache.
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
38 public static final String CACHE_KEY = CACHE_NAME;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
39
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
40 public static final double EPSILON = 1e-4;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
41
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
42
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43 public static class ValueRange extends Range {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 private double value;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46 private int wstId;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47 private int columnPos;
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
48 private String name;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50 public ValueRange(
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
51 double start,
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
52 double end,
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 double value,
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 int wstId,
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
55 int columnPos,
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
56 String name
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57 ) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 super(start, end);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59 this.value = value;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 this.wstId = wstId;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
61 this.columnPos = columnPos;
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
62 this.name = name;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
63 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
64
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
65 public boolean sameValue(double value) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
66 return Math.abs(value - this.value) < EPSILON;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
67 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
68
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
69 public int getWstId() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
70 return wstId;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
71 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
72
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
73 public int getColumnPos() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
74 return columnPos;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
75 }
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
76
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
77 public boolean intersectsValueRange(Range r) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
78 return r.inside(value);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
79 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
80
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
81 public String getName() {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
82 return name;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
83 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
84
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
85 @Override
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
86 public boolean equals(Object o) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
87 if (!(o instanceof ValueRange)) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
88 return false;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
89 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
90 ValueRange r = (ValueRange)o;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
91 return wstId == r.wstId && columnPos == r.columnPos;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
92 }
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
93
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
94 @Override
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
95 public String toString() {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
96 return "[" + name +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
97 " value: " + value +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
98 " wstId: " + wstId +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
99 " pos: " + columnPos + "]";
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
100 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
101 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
102
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
103 public OfficialLineFinder() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
104 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
105
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
106 public static Map<String, List<ValueRange>> getAll() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
107 Cache cache = CacheFactory.getCache(CACHE_NAME);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
108
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
109 if (cache == null) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
110 return getAllUncached();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
111 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
112
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
113 Element element = cache.get(CACHE_KEY);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
114
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
115 if (element != null) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
116 return (Map<String, List<ValueRange>>)element.getValue();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
117 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
118
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
119 Map<String, List<ValueRange>> result = getAllUncached();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
120 if (result != null) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
121 cache.put(new Element(CACHE_KEY, result));
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
122 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
123 return result;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
124
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
125 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
126
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
127 public static Map<String, List<ValueRange>> getAllUncached() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
128
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
129 boolean debug = log.isDebugEnabled();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
130
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
131 Map<String, List<ValueRange>> rivers2officialLines =
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
132 new HashMap<String, List<ValueRange>>();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
133
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
134 for (OfficialLine line: OfficialLine.fetchAllOfficalLines()) {
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
135 NamedMainValue nmv = line.getNamedMainValue();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
136 Integer mnvId = nmv.getId();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
137 WstColumn wc = line.getWstColumn();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
138 Wst wst = wc.getWst();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
139
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
140 List<ValueRange> ranges = new ArrayList<ValueRange>();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
141
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
142 River river = wst.getRiver();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
143 List<Gauge> gauges = river.getGauges();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
144 for (Gauge gauge: gauges) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
145 List<MainValue> mainValues = gauge.getMainValues();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
146 for (MainValue mainValue: mainValues) {
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
147 NamedMainValue tnmv = mainValue.getMainValue();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
148 if (tnmv.getId().equals(mnvId)) {
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
149 // found gauge with this main value
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
150
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
151 double from = gauge.getRange().getA().doubleValue();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
152 double to = gauge.getRange().getA().doubleValue();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
153 double value = mainValue.getValue().doubleValue();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
154 int wstId = wst.getId();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
155 int pos = wc.getPosition();
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
156 ValueRange range = new ValueRange(
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
157 from, to, value, wstId, pos, nmv.getName());
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
158
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
159 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
160 log.debug(
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
161 "river: " + river.getName() +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
162 " gauge: " + gauge.getName() +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
163 " ol: " + range);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
164 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
165 ranges.add(range);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
166 break;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
167 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
168 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
169 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
170
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
171 if (!ranges.isEmpty()) {
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
172 String rname = river.getName();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
173 List<ValueRange> old = rivers2officialLines.get(rname);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
174 if (old != null) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
175 old.addAll(ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
176 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
177 else {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
178 rivers2officialLines.put(rname, ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
179 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
180 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
181 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
182
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
183 return rivers2officialLines;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
184 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
185
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
186 public static final Range MAX_RANGE = new Range(-Double.MAX_VALUE, +Double.MAX_VALUE);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
187
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
188 private static final String nn(String s) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
189 return s != null ? s : "";
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
190 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
191
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
192 public static Range extractRange(D4EArtifact artifact) {
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
193
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
194 String mode = nn(artifact.getDataAsString("ld_mode"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
195 String locations = nn(artifact.getDataAsString("ld_locations"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
196 String from = nn(artifact.getDataAsString("ld_from"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
197 String to = nn(artifact.getDataAsString("ld_to"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
198
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
199 if (log.isDebugEnabled()) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
200 log.debug("ld_mode: '" + mode + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
201 log.debug("ld_locations: '" + locations + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
202 log.debug("ld_from: '" + from + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
203 log.debug("ld_to: '" + to + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
204 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
205
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
206 if (mode.equals("location")) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
207 try {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
208 String loc = locations.replace(" ", "");
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
209 String[] split = loc.split(",");
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
210 if (split.length < 1) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
211 return MAX_RANGE;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
212 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
213 double min = Double.parseDouble(split[0]);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
214 double max = min;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
215 for (int i = 1; i < split.length; ++i) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
216 double v = Double.parseDouble(split[i]);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
217 if (v > max) max = v;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
218 if (v < min) min = v;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
219 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
220 return new Range(min, max);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
221 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
222 catch (NumberFormatException nfe) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
223 return MAX_RANGE;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
224 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
225 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
226 try {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
227 return new Range(Double.parseDouble(from), Double.parseDouble(to));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
228 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
229 catch (NumberFormatException nfe) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
230 return MAX_RANGE;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
231 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
232 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
233
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
234 private static List<ValueRange> filterByRange(Range range, List<ValueRange> ranges) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
235 List<ValueRange> list = new ArrayList<ValueRange>(ranges.size());
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
236 for (ValueRange r: ranges) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
237 if (r.intersects(range)) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
238 list.add(r);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
239 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
240 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
241 return list;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
242 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
243
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
244 private static List<ValueRange> filterByQRange(Range range, List<ValueRange> ranges) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
245 List<ValueRange> list = new ArrayList<ValueRange>(ranges.size());
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
246 for (ValueRange r: ranges) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
247 if (r.intersectsValueRange(range) && !list.contains(r)) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
248 list.add(r);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
249 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
250 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
251 return list;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
252 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
253
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
254 private static boolean isQ(D4EArtifact artifact) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
255 Boolean b = artifact.getDataAsBoolean("wq_isq");
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
256 return b != null && b;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
257 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
258
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
259 private static boolean isRange(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
260 Boolean b = artifact.getDataAsBoolean("wq_isrange");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
261 return b != null && b;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
262 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
263
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
264 public static final Range Q_OUT_OF_RANGE = new Range(-10000, -9999);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
265
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
266 private static Range singleQs(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
267 String singleData = nn(artifact.getDataAsString("wq_single"));
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
268 double min = Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
269 double max = -Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
270
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
271 for (String value: singleData.split(" ")) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
272 try {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
273 double x = Double.parseDouble(value);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
274 if (x < min) min = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
275 if (x > max) max = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
276 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
277 catch (NumberFormatException nfe) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
278 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
279 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
280
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
281 return min == Double.MAX_VALUE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
282 ? Q_OUT_OF_RANGE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
283 : new Range(min, max);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
284
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
285 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
286
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
287 private static Range qRange(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
288 try {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
289 Double from = artifact.getDataAsDouble("wq_from");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
290 Double to = artifact.getDataAsDouble("wq_to");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
291
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
292 if (from == null || to == null) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
293 return Q_OUT_OF_RANGE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
294 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
295 double f = from;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
296 double t = to;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
297 return new Range(Math.min(f, t), Math.max(f, t));
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
298 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
299 catch (NumberFormatException nfe) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
300 return Q_OUT_OF_RANGE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
301 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
302 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
303
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
304 private static Range tripleQRange(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
305 String rangesData = nn(artifact.getDataAsString("wq_values"));
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
306
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
307 double min = Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
308 double max = -Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
309
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
310 for (String range: rangesData.split(":")) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
311 String [] parts = range.split(";");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
312 if (parts.length < 3) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
313 continue;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
314 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
315 String [] values = parts[2].split(",");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
316 for (String value: values) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
317 try {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
318 double x = Double.parseDouble(value);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
319 if (x < min) min = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
320 if (x > max) max = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
321 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
322 catch (NumberFormatException nfe) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
323 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
324 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
325 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
326
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
327 return min == Double.MAX_VALUE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
328 ? Q_OUT_OF_RANGE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
329 : new Range(min, max);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
330 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
331
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
332 public static List<ValueRange> findOfficialLines(D4EArtifact artifact) {
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
333
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
334 if (!isQ(artifact)) { // Only handle Q calculations
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
335 return Collections.<ValueRange>emptyList();
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
336 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
337
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
338 Map<String, List<ValueRange>> rivers2officialLines = getAll();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
339
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
340 String riverName = nn(artifact.getDataAsString("river"));
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
341
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
342 List<ValueRange> ranges = rivers2officialLines.get(riverName);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
343
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
344 if (ranges == null) {
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
345 return Collections.<ValueRange>emptyList();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
346 }
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
347 boolean debug = log.isDebugEnabled();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
348
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
349 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
350 log.debug("Before range filter:" + ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
351 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
352
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
353 ranges = filterByRange(extractRange(artifact), ranges);
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
354
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
355 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
356 log.debug("After range filter:" + ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
357 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
358
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
359 if (ranges.isEmpty()) {
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
360 return Collections.<ValueRange>emptyList();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
361 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
362
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
363 Range qRange = isRange(artifact)
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
364 ? qRange(artifact)
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
365 : singleQs(artifact);
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
366
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
367 if (qRange == Q_OUT_OF_RANGE) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
368 qRange = tripleQRange(artifact);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
369 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
370
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
371 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
372 log.debug("Q range filter: " + qRange);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
373 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
374
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
375 ranges = filterByQRange(qRange, ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
376
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
377 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
378 log.debug("After q range filter: " + ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
379 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
380
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
381 return ranges;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
382 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
383 }

http://dive4elements.wald.intevation.org