1 package org
.argeo
.slc
.gpx
;
5 import org
.geotools
.referencing
.GeodeticCalculator
;
7 import com
.vividsolutions
.jts
.geom
.LineString
;
8 import com
.vividsolutions
.jts
.geom
.Point
;
10 public class TrackSpeed
{
12 private String segmentUuid
;
13 private String sensor
;
14 private Date utcTimestamp
;
15 private Point position
;
16 private LineString line
;
17 /** Orthodromic distance */
18 private Double distance
;
19 private Double azimuth
;
20 private Long duration
;
21 // orthodromicDistance(line) in km/(duration in h)
24 private Double acceleration
;
26 private Double azimuthVariation
;
31 public TrackSpeed(TrackPoint ref
, LineString line
, Long duration
,
32 GeodeticCalculator geodeticCalculator
) {
33 segmentUuid
= ref
.getSegmentUuid();
34 sensor
= ref
.getSensor();
35 utcTimestamp
= ref
.getUtcTimestamp();
36 position
= ref
.getLocation();
38 this.duration
= duration
;
40 Point startPoint
= line
.getStartPoint();
41 Point endPoint
= line
.getEndPoint();
42 geodeticCalculator
.setStartingGeographicPoint(startPoint
.getX(),
44 geodeticCalculator
.setDestinationGeographicPoint(endPoint
.getX(),
46 this.distance
= geodeticCalculator
.getOrthodromicDistance();
47 this.azimuth
= geodeticCalculator
.getAzimuth();
49 this.speed
= (this.distance
* 60 * 60) / this.duration
;
52 public Integer
getTid() {
56 public void setTid(Integer tid
) {
60 public String
getSegmentUuid() {
64 public void setSegmentUuid(String segmentUuid
) {
65 this.segmentUuid
= segmentUuid
;
68 public String
getSensor() {
72 public void setSensor(String sensor
) {
76 public Date
getUtcTimestamp() {
80 public void setUtcTimestamp(Date ts
) {
81 this.utcTimestamp
= ts
;
84 public Point
getPosition() {
88 public void setPosition(Point location
) {
89 this.position
= location
;
92 public LineString
getLine() {
96 public void setLine(LineString line
) {
100 public Long
getDuration() {
104 public void setDuration(Long duration
) {
105 this.duration
= duration
;
108 public Double
getSpeed() {
112 public void setSpeed(Double speed
) {
116 public Double
getDistance() {
120 public void setDistance(Double length
) {
121 this.distance
= length
;
124 public Double
getAcceleration() {
128 public void setAcceleration(Double acceleration
) {
129 this.acceleration
= acceleration
;
132 public Double
getAzimuth() {
136 public void setAzimuth(Double azimut
) {
137 this.azimuth
= azimut
;
140 public Double
getAzimuthVariation() {
141 return azimuthVariation
;
144 public void setAzimuthVariation(Double azimuthVariation
) {
145 this.azimuthVariation
= azimuthVariation
;