Mercurial > dive4elements > river
annotate flys-backend/src/main/java/de/intevation/flys/model/CrossSectionLine.java @ 4573:b87073a05f9d
flys-client: Patch to render combobox options as clickable links.
The way of passing data arguments to the links and further to
the Artifact feeding service is somewhat hacked and should be
refactored (later...).
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Tue, 27 Nov 2012 12:50:10 +0100 |
parents | 3b001c273f1b |
children |
rev | line source |
---|---|
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.model; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
3 import java.io.Serializable; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
4 |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
5 import java.util.ArrayList; |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 import java.util.List; |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
7 import java.util.Collections; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
8 import java.util.Comparator; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
9 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
10 import java.awt.geom.Point2D; |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 import javax.persistence.Entity; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 import javax.persistence.Id; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 import javax.persistence.Table; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 import javax.persistence.GeneratedValue; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 import javax.persistence.Column; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 import javax.persistence.SequenceGenerator; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 import javax.persistence.GenerationType; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 import javax.persistence.OneToOne; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 import javax.persistence.OneToMany; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 import javax.persistence.JoinColumn; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
23 import org.apache.log4j.Logger; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
24 |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 @Entity |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 @Table(name = "cross_section_lines") |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 public class CrossSectionLine |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 implements Serializable |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 { |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
30 private static Logger logger = Logger.getLogger(CrossSectionLine.class); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
31 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
32 public static final double EPSILON = 1e-4; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
33 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
34 public static final double TOO_SMALL = 0.2; |
3684
3b001c273f1b
issue821 (cross sections beyond 500m).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3334
diff
changeset
|
35 public static final double TOO_BIG = 2500; |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
36 |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 private Integer id; |
2860
2f874d14ac68
Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2380
diff
changeset
|
38 private Double km; |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 private CrossSection crossSection; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
40 |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
41 private List<CrossSectionPoint> points; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
42 |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
43 public static final Comparator<CrossSectionPoint> COL_POS_CMP = |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
44 new Comparator<CrossSectionPoint>() { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
45 @Override |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
46 public int compare(CrossSectionPoint a, CrossSectionPoint b) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
47 double xa = a.getX().doubleValue(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
48 double xb = b.getX().doubleValue(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
49 double d = xa - xb; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
50 if (d < -EPSILON) return -1; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
51 if (d > +EPSILON) return +1; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
52 int diff = a.getColPos() - b.getColPos(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
53 return diff < 0 ? -1 : diff > 0 ? +1 : 0; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
54 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
55 }; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
56 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
57 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
58 public static final boolean isValid(double x) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
59 x = Math.abs(x); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
60 return x > TOO_SMALL && x < TOO_BIG; |
2380
e237a08acf6e
Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2378
diff
changeset
|
61 } |
e237a08acf6e
Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2378
diff
changeset
|
62 |
e237a08acf6e
Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2378
diff
changeset
|
63 public static final boolean isValid(Point2D p) { |
e237a08acf6e
Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2378
diff
changeset
|
64 return isValid(p.getX()) && isValid(p.getY()); |
e237a08acf6e
Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2378
diff
changeset
|
65 } |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
66 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
67 |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
68 public CrossSectionLine() { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
69 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 |
2860
2f874d14ac68
Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2380
diff
changeset
|
71 public CrossSectionLine(CrossSection crossSection, Double km) { |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
72 this.crossSection = crossSection; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
73 this.km = km; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
74 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
75 |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
76 @Id |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
77 @SequenceGenerator( |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 name = "SEQUENCE_CROSS_SECTION_LINES_ID_SEQ", |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
79 sequenceName = "CROSS_SECTION_LINES_ID_SEQ", |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
80 allocationSize = 1) |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
81 @GeneratedValue( |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
82 strategy = GenerationType.SEQUENCE, |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
83 generator = "SEQUENCE_CROSS_SECTION_LINES_ID_SEQ") |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
84 @Column(name = "id") |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
85 public Integer getId() { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
86 return id; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
88 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 public void setId(Integer id) { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 this.id = id; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
92 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
93 @Column(name = "km") |
2860
2f874d14ac68
Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2380
diff
changeset
|
94 public Double getKm() { |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 return km; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
97 |
2860
2f874d14ac68
Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2380
diff
changeset
|
98 public void setKm(Double km) { |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 this.km = km; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 @OneToOne |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 @JoinColumn(name = "cross_section_id") |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 public CrossSection getCrossSection() { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 return crossSection; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
106 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
107 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
108 public void setCrossSection(CrossSection CrossSection) { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 this.crossSection = crossSection; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
111 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
112 @OneToMany |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
113 @JoinColumn(name="cross_section_line_id") |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 public List<CrossSectionPoint> getPoints() { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 return points; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
116 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
118 public void setPoints(List<CrossSectionPoint> points) { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 this.points = points; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
120 } |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
121 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
122 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
123 public List<Point2D> fetchCrossSectionLinesPoints() { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
124 |
3334
2ae732e2c65c
FLYS backend: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2860
diff
changeset
|
125 List<CrossSectionPoint> linePoints = |
2378
c5d83366d0b1
CrossSectionLine: Simplified creation of Point2Ds.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2342
diff
changeset
|
126 new ArrayList<CrossSectionPoint>(getPoints()); |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
127 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
128 Collections.sort(linePoints, COL_POS_CMP); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
129 |
2378
c5d83366d0b1
CrossSectionLine: Simplified creation of Point2Ds.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2342
diff
changeset
|
130 List<Point2D> points = new ArrayList<Point2D>(linePoints.size()); |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
131 for (CrossSectionPoint p: linePoints) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
132 double x = p.getX().doubleValue(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
133 double y = p.getY().doubleValue(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
134 if (isValid(x) && isValid(y)) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
135 points.add(new Point2D.Double(x, y)); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
136 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
137 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
138 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
139 return points; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
140 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
141 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
142 public double [][] fetchCrossSectionProfile() { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
143 return fetchCrossSectionProfile(fetchCrossSectionLinesPoints()); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
144 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
145 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
146 public static double [][] fetchCrossSectionProfile(List<Point2D> points) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
147 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
148 int P = points.size(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
149 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
150 double [] xs = new double[P]; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
151 double [] ys = new double[P]; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
152 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
153 if (P > 0) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
154 xs[0] = points.get(0).getX(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
155 ys[0] = points.get(0).getY(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
156 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
157 for (int i = 1; i < P; i++) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
158 Point2D p = points.get(i); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
159 double x = p.getX(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
160 double y = p.getY(); |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
161 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
162 if (x <= xs[i-1]) { |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
163 x = xs[i-1] + EPSILON; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
164 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
165 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
166 xs[i] = x; |
3334
2ae732e2c65c
FLYS backend: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2860
diff
changeset
|
167 ys[i] = y; |
2342
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
168 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
169 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
170 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
171 return new double [][] { xs, ys }; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
172 } |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
173 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
174 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |