Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ZoomScale.java @ 4618:e8c6fbed889b
New class storing configuration about zoom dependent filter levels.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Mon, 03 Dec 2012 16:53:22 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
4571:95e23bcf6a50 | 4618:e8c6fbed889b |
---|---|
1 package de.intevation.flys.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 de.intevation.flys.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 } |