comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/ZoomScale.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ZoomScale.java@e8c6fbed889b
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
1 package org.dive4elements.river.artifacts.model;
2
3 import java.util.HashMap;
4 import java.util.Map;
5 import java.util.Set;
6 import java.util.TreeMap;
7
8 import org.apache.log4j.Logger;
9
10 import org.dive4elements.river.artifacts.math.Linear;
11
12
13 public class ZoomScale
14 {
15 private static Logger logger = Logger.getLogger(ZoomScale.class);
16
17 private HashMap<String, TreeMap<Double, Double>> rivers;
18
19 public ZoomScale() {
20 this.rivers = new HashMap<String, TreeMap<Double, Double>>();
21 }
22
23 public ZoomScale(String river) {
24 this();
25 rivers.put(river, new TreeMap<Double, Double>());
26 }
27
28 public double getRadius(String river, double lower, double upper) {
29 double range = Math.abs(upper) - Math.abs(lower);
30 TreeMap<Double, Double> ranges = rivers.get(river);
31 if (ranges == null) {
32 return 0.001;
33 }
34 Map.Entry<Double, Double> next = ranges.higherEntry(range);
35 Map.Entry<Double, Double> prev = ranges.lowerEntry(range);
36 double x0 = 0d;
37 double x1 = 0d;
38 double y0 = 0d;
39 double y1 = 0d;
40 if (prev == null && next != null) {
41 x1 = next.getKey();
42 y1 = next.getValue();
43 }
44 else if (prev != null && next == null) {
45 return prev.getValue();
46 }
47 else {
48 x0 = prev.getKey();
49 x1 = next.getKey();
50 y0 = prev.getValue();
51 y1 = next.getValue();
52 }
53 return Linear.linear(range, x0, x1, y0, y1);
54 }
55
56 public void addRiver(String river) {
57 if (!this.rivers.containsKey(river)) {
58 this.rivers.put(river, new TreeMap<Double, Double>());
59 }
60 }
61
62 public Set<String> getRivers() {
63 return this.rivers.keySet();
64 }
65
66 public void addRange(String river, double range, double radius) {
67 if (this.rivers.containsKey(river)) {
68 this.rivers.get(river).put(range, radius);
69 }
70 else {
71 this.rivers.put(river, new TreeMap<Double, Double>());
72 this.rivers.get(river).put(range, radius);
73 }
74 }
75 }

http://dive4elements.wald.intevation.org