X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fdata%2FDataPoint.java;h=4cf7c827952a8c10c8c46adb5602e4fcbbf3d956;hb=52bf9e8686c916be37a26a0b75340393d4478b05;hp=46c4acd9d1ad562883ed9d8a8830802d1f123c19;hpb=5625a1abadb5f2ca5f017fe7dbda1d5141cb637b;p=GpsPrune.git diff --git a/tim/prune/data/DataPoint.java b/tim/prune/data/DataPoint.java index 46c4acd..4cf7c82 100644 --- a/tim/prune/data/DataPoint.java +++ b/tim/prune/data/DataPoint.java @@ -17,7 +17,7 @@ public class DataPoint private Timestamp _timestamp = null; private Photo _photo = null; private String _waypointName = null; - // private boolean _startOfSegment = false; + private boolean _startOfSegment = false; /** @@ -48,7 +48,9 @@ public class DataPoint _altitude = new Altitude(getFieldValue(Field.ALTITUDE), inAltFormat); _timestamp = new Timestamp(getFieldValue(Field.TIMESTAMP)); _waypointName = getFieldValue(Field.WAYPT_NAME); - // TODO: Parse segment start field (format?) + String segmentStr = getFieldValue(Field.NEW_SEGMENT); + if (segmentStr != null) {segmentStr = segmentStr.trim();} + _startOfSegment = (segmentStr != null && (segmentStr.equals("1") || segmentStr.toUpperCase().equals("Y"))); } @@ -68,8 +70,13 @@ public class DataPoint _fieldValues[0] = inLatitude.output(Coordinate.FORMAT_DEG_MIN_SEC); _longitude = inLongitude; _fieldValues[1] = inLongitude.output(Coordinate.FORMAT_DEG_MIN_SEC); - _altitude = inAltitude; - if (inAltitude != null) {_fieldValues[2] = "" + inAltitude.getValue(Altitude.FORMAT_METRES);} + if (inAltitude == null) { + _altitude = Altitude.NONE; + } + else { + _altitude = inAltitude; + _fieldValues[2] = "" + inAltitude.getValue(Altitude.FORMAT_METRES); // units are ignored + } _timestamp = new Timestamp(null); } @@ -137,36 +144,54 @@ public class DataPoint } } + /** @param inFlag true for start of track segment */ + public void setSegmentStart(boolean inFlag) + { + setFieldValue(Field.NEW_SEGMENT, inFlag?"1":null); + } + /** @return latitude */ public Coordinate getLatitude() { return _latitude; } + /** @return longitude */ public Coordinate getLongitude() { return _longitude; } + /** @return true if point has altitude */ public boolean hasAltitude() { return _altitude.isValid(); } + /** @return altitude */ public Altitude getAltitude() { return _altitude; } + /** @return true if point has timestamp */ public boolean hasTimestamp() { return _timestamp.isValid(); } + /** @return timestamp */ public Timestamp getTimestamp() { return _timestamp; } + /** @return waypoint name, if any */ public String getWaypointName() { return _waypointName; } + /** @return true if start of new track segment */ + public boolean getSegmentStart() + { + return _startOfSegment; + } + /** * @return true if point has a waypoint name */ @@ -202,10 +227,7 @@ public class DataPoint { return !inOther.isWaypoint(); } - else - { - return (inOther._waypointName != null && inOther._waypointName.equals(_waypointName)); - } + return (inOther._waypointName != null && inOther._waypointName.equals(_waypointName)); } @@ -246,21 +268,33 @@ public class DataPoint public DataPoint[] interpolate(DataPoint inEndPoint, int inNumPoints) { DataPoint[] range = new DataPoint[inNumPoints]; - Coordinate endLatitude = inEndPoint.getLatitude(); - Coordinate endLongitude = inEndPoint.getLongitude(); - Altitude endAltitude = inEndPoint.getAltitude(); - // Loop over points for (int i=0; i