diff options
author | Keith Packard <keithp@keithp.com> | 2014-05-22 18:46:58 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-05-22 18:46:58 -0700 |
commit | b60a3689910731d9bdb8a431a3dcc9e99f961b35 (patch) | |
tree | b40fdb9c02fb4b79ffb76a12f55b93c56f0b4c39 /altosui/AltosKML.java | |
parent | 2625a464417c8475c66101757ca2c30cd6c74e0c (diff) |
altoslib: Move CSV/KML output code to altoslib
It's sharable, so share it
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosui/AltosKML.java')
-rw-r--r-- | altosui/AltosKML.java | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/altosui/AltosKML.java b/altosui/AltosKML.java deleted file mode 100644 index ae1f8259..00000000 --- a/altosui/AltosKML.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright © 2010 Keith Packard <keithp@keithp.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package altosui; - -import java.io.*; -import org.altusmetrum.altoslib_3.*; - -public class AltosKML implements AltosWriter { - - File name; - PrintStream out; - int flight_state = -1; - AltosState prev = null; - double gps_start_altitude; - - static final String[] kml_state_colors = { - "FF000000", - "FF000000", - "FF000000", - "FF0000FF", - "FF4080FF", - "FF00FFFF", - "FFFF0000", - "FF00FF00", - "FF000000", - "FFFFFFFF" - }; - - static final String kml_header_start = - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + - "<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n" + - "<Document>\n" + - " <name>AO Flight#%d S/N: %03d</name>\n" + - " <description>\n"; - static final String kml_header_end = - " </description>\n" + - " <open>0</open>\n"; - - static final String kml_style_start = - " <Style id=\"ao-flightstate-%s\">\n" + - " <LineStyle><color>%s</color><width>4</width></LineStyle>\n" + - " <BalloonStyle>\n" + - " <text>\n"; - - static final String kml_style_end = - " </text>\n" + - " </BalloonStyle>\n" + - " </Style>\n"; - - static final String kml_placemark_start = - " <Placemark>\n" + - " <name>%s</name>\n" + - " <styleUrl>#ao-flightstate-%s</styleUrl>\n" + - " <LineString>\n" + - " <tessellate>1</tessellate>\n" + - " <altitudeMode>absolute</altitudeMode>\n" + - " <coordinates>\n"; - - static final String kml_coord_fmt = - " %.7f,%.7f,%.7f <!-- alt %12.7f time %12.7f sats %d -->\n"; - - static final String kml_placemark_end = - " </coordinates>\n" + - " </LineString>\n" + - " </Placemark>\n"; - - static final String kml_footer = - "</Document>\n" + - "</kml>\n"; - - void start (AltosState record) { - out.printf(kml_header_start, record.flight, record.serial); - out.printf("Date: %04d-%02d-%02d\n", - record.gps.year, record.gps.month, record.gps.day); - out.printf("Time: %2d:%02d:%02d\n", - record.gps.hour, record.gps.minute, record.gps.second); - out.printf("%s", kml_header_end); - } - - boolean started = false; - - void state_start(AltosState state) { - String state_name = Altos.state_name(state.state); - out.printf(kml_style_start, state_name, kml_state_colors[state.state]); - out.printf("\tState: %s\n", state_name); - out.printf("%s", kml_style_end); - out.printf(kml_placemark_start, state_name, state_name); - } - - void state_end(AltosState state) { - out.printf("%s", kml_placemark_end); - } - - void coord(AltosState state) { - AltosGPS gps = state.gps; - double altitude; - - if (state.height() != AltosLib.MISSING) - altitude = state.height() + gps_start_altitude; - else - altitude = gps.alt; - out.printf(kml_coord_fmt, - gps.lon, gps.lat, - altitude, (double) gps.alt, - state.time, gps.nsat); - } - - void end() { - out.printf("%s", kml_footer); - } - - public void close() { - if (prev != null) { - state_end(prev); - end(); - prev = null; - } - } - - public void write(AltosState state) { - AltosGPS gps = state.gps; - - if (gps == null) - return; - - if (gps.lat == AltosLib.MISSING) - return; - if (gps.lon == AltosLib.MISSING) - return; - if (!started) { - start(state); - started = true; - gps_start_altitude = gps.alt; - } - if (prev != null && prev.gps_sequence == state.gps_sequence) - return; - if (state.state != flight_state) { - flight_state = state.state; - if (prev != null) { - coord(state); - state_end(prev); - } - state_start(state); - } - coord(state); - prev = state; - } - - public void write(AltosStateIterable states) { - for (AltosState state : states) { - if ((state.set & AltosState.set_gps) != 0) - write(state); - } - } - - public AltosKML(File in_name) throws FileNotFoundException { - name = in_name; - out = new PrintStream(name); - } - - public AltosKML(String in_string) throws FileNotFoundException { - this(new File(in_string)); - } -} |