annotate backend/src/main/java/org/dive4elements/river/model/CrossSectionLine.java @ 6229:3fea9701d58d

Fix gauge determination. If we look upstream ( a > b ) we still have to compare the start value of our range against the gauge and not the end value. The start value is always the relevant value as we handle the direction by checking this against A or B of the gauge. Also: I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again.
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 06 Jun 2013 18:23:17 +0200
parents 939fea2b24a2
children ad57b1938d8a
rev   line source
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
6 * documentation coming with Dive4Elements River for details.
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
9 package org.dive4elements.river.model;
1203
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 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
12
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
13 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
14 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
15 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
16 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
17
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
18 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
19
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.Entity;
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.Id;
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.Table;
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.GeneratedValue;
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 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
25 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
26 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
27 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
28 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
29 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
30
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
31 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
32
1203
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 @Entity
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 @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
35 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
36 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
37 {
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
38 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
39
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
40 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
41
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
42 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
43 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
44
1203
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 private Integer id;
2860
2f874d14ac68 Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2380
diff changeset
46 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
47 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
48
1204
22858e7cca79 Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1203
diff changeset
49 private List<CrossSectionPoint> points;
22858e7cca79 Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1203
diff changeset
50
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
51 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
52 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
53 @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
54 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
55 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
56 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
57 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
58 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
59 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
60 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
61 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
62 }
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
63 };
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
64
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
65
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 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
67 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
68 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
69 }
e237a08acf6e Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2378
diff changeset
70
e237a08acf6e Create fast cross section lines in the backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2378
diff changeset
71 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
72 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
73 }
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
74
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
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 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
77 }
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78
2860
2f874d14ac68 Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2380
diff changeset
79 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
80 this.crossSection = crossSection;
22858e7cca79 Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1203
diff changeset
81 this.km = km;
22858e7cca79 Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1203
diff changeset
82 }
22858e7cca79 Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1203
diff changeset
83
1203
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 @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 @SequenceGenerator(
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
86 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
87 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
88 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
89 @GeneratedValue(
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90 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
91 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
92 @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
93 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
94 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
95 }
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 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
98 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
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
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 @Column(name = "km")
2860
2f874d14ac68 Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2380
diff changeset
102 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
103 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
104 }
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105
2860
2f874d14ac68 Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2380
diff changeset
106 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
107 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
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 @OneToOne
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 @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
112 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
113 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
114 }
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115
6058
939fea2b24a2 in relation to flys1313: fix typo that prevented setting crossSection to c.s.l.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5992
diff changeset
116 public void setCrossSection(CrossSection crossSection) {
1203
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117 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
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 @OneToMany
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
121 @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
122 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
123 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
124 }
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
125
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
126 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
127 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
128 }
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
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 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
132
3334
2ae732e2c65c FLYS backend: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2860
diff changeset
133 List<CrossSectionPoint> linePoints =
2378
c5d83366d0b1 CrossSectionLine: Simplified creation of Point2Ds.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2342
diff changeset
134 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
135
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 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
137
2378
c5d83366d0b1 CrossSectionLine: Simplified creation of Point2Ds.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2342
diff changeset
138 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
139 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
140 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
141 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
142 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
143 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
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
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 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
148 }
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 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
151 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
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
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 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
155
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 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
157
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 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
159 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
160
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 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
162 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
163 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
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 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
166 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
167 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
168 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
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 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
171 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
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
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 xs[i] = x;
3334
2ae732e2c65c FLYS backend: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2860
diff changeset
175 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
176 }
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
177 }
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
178
3efc3942b765 CrossSectionLine: Moved some logic from cross section demo app to this model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1204
diff changeset
179 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
180 }
1203
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
181 }
3c01bef43a98 Querprofile: Added a table to map the points to a given km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
182 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org