From e30d8167652be1e21734ae0fc075e9380819c5af Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Wed, 10 Jul 2013 12:37:14 -0700 Subject: [PATCH] Export altitude only when it is defined --- .../apps/mytracks/io/file/CsvTrackWriter.java | 34 ++++++++++++++----- .../apps/mytracks/io/file/GpxTrackWriter.java | 8 +++-- .../apps/mytracks/io/file/KmlTrackWriter.java | 15 +++++--- .../apps/mytracks/io/file/TcxTrackWriter.java | 4 ++- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java index 5f44604ed..7a95a7aaa 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java @@ -123,10 +123,10 @@ public class CsvTrackWriter implements TrackFormatWriter { waypoint.getDescription(), Double.toString(location.getLatitude()), Double.toString(location.getLongitude()), - Double.toString(location.getAltitude()), - Double.toString(location.getBearing()), - SHORT_FORMAT.format(location.getAccuracy()), - SHORT_FORMAT.format(location.getSpeed()), + getAltitude(location), + getBearing(location), + getAccuracy(location), + getSpeed(location), StringUtils.formatDateTimeIso8601(location.getTime())); } @@ -196,16 +196,32 @@ public class CsvTrackWriter implements TrackFormatWriter { Integer.toString(pointIndex), Double.toString(location.getLatitude()), Double.toString(location.getLongitude()), - Double.toString(location.getAltitude()), - Double.toString(location.getBearing()), - SHORT_FORMAT.format(location.getAccuracy()), - SHORT_FORMAT.format(location.getSpeed()), + getAltitude(location), + getBearing(location), + getAccuracy(location), + getSpeed(location), StringUtils.formatDateTimeIso8601(location.getTime()), power, cadence, heartRate); } - + + private String getAltitude(Location location) { + return location.hasAltitude() ? Double.toString(location.getAltitude()) : null; + } + + private String getBearing(Location location) { + return location.hasBearing() ? Double.toString(location.getBearing()) : null; + } + + private String getAccuracy(Location location) { + return location.hasAccuracy() ? SHORT_FORMAT.format(location.getAccuracy()) : null; + } + + private String getSpeed(Location location) { + return location.hasSpeed() ? SHORT_FORMAT.format(location.getSpeed()) : null; + } + /** * Writes a single line of a CSV file. * diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java index 7161f77e2..75d45dad5 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java @@ -138,7 +138,9 @@ public class GpxTrackWriter implements TrackFormatWriter { public void writeLocation(Location location) { if (printWriter != null) { printWriter.println(""); - printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + ""); + if (location.hasAltitude()) { + printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + ""); + } printWriter.println( ""); printWriter.println(""); @@ -161,7 +163,9 @@ public class GpxTrackWriter implements TrackFormatWriter { Location location = waypoint.getLocation(); if (location != null) { printWriter.println(""); - printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + ""); + if (location.hasAltitude()) { + printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + ""); + } printWriter.println( ""); printWriter.println("" + StringUtils.formatCData(waypoint.getName()) + ""); diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java index 7c7f275e1..a7640edbe 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java @@ -229,8 +229,7 @@ public class KmlTrackWriter implements TrackFormatWriter { if (printWriter != null) { printWriter.println( "" + StringUtils.formatDateTimeIso8601(location.getTime()) + ""); - printWriter.println("" + location.getLongitude() + " " + location.getLatitude() - + " " + location.getAltitude() + ""); + printWriter.println("" + getCoordinates(location, " ") + ""); if (location instanceof MyTracksLocation) { SensorDataSet sensorDataSet = ((MyTracksLocation) location).getSensorDataSet(); int power = -1; @@ -302,12 +301,20 @@ public class KmlTrackWriter implements TrackFormatWriter { printWriter.println("#" + styleName + ""); writeCategory(category); printWriter.println(""); - printWriter.println("" + location.getLongitude() + "," + location.getLatitude() - + "," + location.getAltitude() + ""); + printWriter.println("" + getCoordinates(location, ",") + ""); printWriter.println(""); printWriter.println(""); } } + + private String getCoordinates(Location location, String separator) { + StringBuffer buffer = new StringBuffer(); + buffer.append(location.getLongitude() + separator + location.getLatitude()); + if (location.hasAltitude()) { + buffer.append(separator + location.getAltitude()); + } + return buffer.toString(); + } /** * Writes the category. diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java index 27dfa8b60..827b2a3b1 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java @@ -204,7 +204,9 @@ public class TcxTrackWriter implements TrackFormatWriter { printWriter.println("" + location.getLatitude() + ""); printWriter.println("" + location.getLongitude() + ""); printWriter.println(""); - printWriter.println("" + location.getAltitude() + ""); + if (location.hasAltitude()) { + printWriter.println("" + location.getAltitude() + ""); + } if (location instanceof MyTracksLocation) { SensorDataSet sensorDataSet = ((MyTracksLocation) location).getSensorDataSet();