Mercurial > dive4elements > river
annotate flys-backend/src/main/java/de/intevation/flys/model/CrossSectionLine.java @ 2381:aa777d1aba38
Added a function Gauge.getGaugeByOfficialNumber() that returns a Gauge based on its official number.
flys-backend/trunk@3702 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 18 Jan 2012 09:26:54 +0000 |
parents | e237a08acf6e |
children | 2f874d14ac68 |
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 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
5 import java.math.BigDecimal; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 |
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.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
|
8 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
|
9 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
|
10 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
|
11 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
12 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
|
13 |
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.Entity; |
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.Id; |
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.Table; |
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.GeneratedValue; |
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.Column; |
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.SequenceGenerator; |
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.GenerationType; |
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.OneToOne; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 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
|
23 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
|
24 |
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
|
25 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
|
26 |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 @Entity |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 @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
|
29 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
|
30 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
|
31 { |
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
|
32 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
|
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 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
|
35 |
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 public static final double TOO_SMALL = 0.2; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
37 public static final double TOO_BIG = 500; |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
38 |
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 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
|
40 private BigDecimal km; |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 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
|
42 |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
43 private List<CrossSectionPoint> points; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
44 |
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
|
45 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
|
46 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
|
47 @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
|
48 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
|
49 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
|
50 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
|
51 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
|
52 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
|
53 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
|
54 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
|
55 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
|
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 |
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 |
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 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
|
61 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
|
62 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
|
63 } |
e237a08acf6e
Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2378
diff
changeset
|
64 |
e237a08acf6e
Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2378
diff
changeset
|
65 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
|
66 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
|
67 } |
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
|
68 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
69 |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 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
|
71 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
73 public CrossSectionLine(CrossSection crossSection, BigDecimal km) { |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
74 this.crossSection = crossSection; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
75 this.km = km; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
76 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1203
diff
changeset
|
77 |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 @Id |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
79 @SequenceGenerator( |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
80 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
|
81 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
|
82 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
|
83 @GeneratedValue( |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
84 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
|
85 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
|
86 @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
|
87 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
|
88 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
|
89 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 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
|
92 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
|
93 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 @Column(name = "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 public BigDecimal getKm() { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
97 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
|
98 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 public void setKm(BigDecimal km) { |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 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
|
102 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 @OneToOne |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 @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
|
106 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
|
107 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
|
108 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 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
|
111 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
|
112 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
113 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 @OneToMany |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 @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
|
116 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
|
117 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
|
118 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
120 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
|
121 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
|
122 } |
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
|
123 |
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 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
125 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
|
126 |
2378
c5d83366d0b1
CrossSectionLine: Simplified creation of Point2Ds.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2342
diff
changeset
|
127 List<CrossSectionPoint> linePoints = |
c5d83366d0b1
CrossSectionLine: Simplified creation of Point2Ds.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2342
diff
changeset
|
128 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
|
129 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
130 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
|
131 |
2378
c5d83366d0b1
CrossSectionLine: Simplified creation of Point2Ds.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2342
diff
changeset
|
132 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
|
133 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
|
134 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
|
135 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
|
136 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
|
137 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
|
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 } |
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 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
|
142 } |
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 |
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 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
|
145 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
|
146 } |
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 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
|
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 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
|
151 |
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 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
|
153 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
|
154 |
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 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
|
156 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
|
157 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
|
158 |
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 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
|
160 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
|
161 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
|
162 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
|
163 |
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 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
|
165 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
|
166 } |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
167 |
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 xs[i] = 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
|
169 ys[i] = 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
|
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 } |
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 |
3efc3942b765
CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
173 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
|
174 } |
1203
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
175 } |
3c01bef43a98
Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
176 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |