package me.drton.flightplot.export; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Locale; /** * Created by ada on 16.02.14. */ public class GPXTrackExporter extends AbstractTrackExporter { private final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); protected void writeStart() throws IOException { writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); writer.write("<gpx xmlns=\"http://www.topografix.com/GPX/1/1\" version=\"1.1\" creator=\"FlightPlot\" \n" + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n" + " xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">\n"); writer.write("<metadata>\n"); writer.write(String.format("<name>%s</name>\n", this.title)); writer.write("</metadata>\n"); writer.write("<trk>\n"); } @Override protected void writeTrackPartStart(String trackPartName) throws IOException { writer.write("<trkseg>\n"); } @Override protected void writePoint(TrackPoint point) throws IOException { writer.write(String.format(Locale.ROOT, "<trkpt lat=\"%.10f\" lon=\"%.10f\">\n", point.lat, point.lon)); writer.write(String.format(Locale.ROOT, "<ele>%.2f</ele>\n", point.alt)); writer.write(String.format("<time>%s</time>\n", dateFormatter.format(point.time / 1000))); writer.write("</trkpt>\n"); } protected void writeTrackPartEnd() throws IOException { writer.write("</trkseg>\n"); } protected void writeEnd() throws IOException { writer.write("</trk>\n"); writer.write("</gpx>\n"); } @Override public String getName() { return "GPX"; } @Override public String getDescription() { return "GPS Exchange Format (GPX)"; } @Override public String getFileExtension() { return "gpx"; } }