<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/python
import sys
import os.path
import datetime
from slog_util import parse_slog

#===============================================================================

def print_usage_and_exit():
   sys.exit("Usage: slog-to-taml.py  &lt;slog-filename&gt;  &lt;taml-filename&gt;")

#===============================================================================

def convert_time(slog_time_str):
   """ Converts a time string from an slog file into a string DTG string for
   use in TAML.  Have to artificially turn (seconds) into (date), so there's 
   some creativity in the conversion.
   """
   
   base_time = datetime.datetime(2007, 1, 1)
   delta = datetime.timedelta(0, float(slog_time_str))
   
   timestamp = base_time + delta
   taml_dtg = timestamp.strftime('%Y-%m-%dT%H:%M:%S')
   return taml_dtg

#===============================================================================

def emit_file_header(taml_file):
   print &gt;&gt; taml_file, \
"""   
&lt;TAML xmlns="urn:us:gov:dod:don:navy:navsea:usw:2:0"&gt;
      &lt;Operation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udt="urn:us:gov:dod:don:enterprise:udt:1:0" xmlns:usw="urn:us:gov:dod:don:navy:navsea:usw:2:0" xmlns:qdt="urn:us:gov:dod:don:navy:navsea:usw:qdt:1:0"&gt;
               &lt;Event&gt;
                     &lt;StartTime&gt;2006-09-12T10:38:49&lt;/StartTime&gt;
               &lt;/Event&gt;
      &lt;/Operation&gt;
      &lt;Platform xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udt="urn:us:gov:dod:don:enterprise:udt:1:0" xmlns:usw="urn:us:gov:dod:don:navy:navsea:usw:2:0" xmlns:qdt="urn:us:gov:dod:don:navy:navsea:usw:qdt:1:0"&gt;
               &lt;Name&gt;USVField_1_1&lt;/Name&gt;
               &lt;GUID&gt;USVField_1_1&lt;/GUID&gt;
               &lt;ShipClass&gt;USV&lt;/ShipClass&gt;
               &lt;ShipType&gt;USV&lt;/ShipType&gt;
               &lt;HullNumber&gt;hullnum&lt;/HullNumber&gt;
               &lt;Track&gt;"""
               
#===============================================================================

def emit_position_report(taml_file, slog_timestamp, lat, lon, heading):
   
   # TODO: Compute DTG...
   dtg = convert_time(slog_timestamp)
   
   print &gt;&gt; taml_file, \
"""                  &lt;TimePosition&gt;
                           &lt;DateTimeGroup&gt;
                                    &lt;DateTime&gt;%s&lt;/DateTime&gt;
                           &lt;/DateTimeGroup&gt;
                           &lt;Position&gt;
                                    &lt;AbsolutePosition&gt;
                                          &lt;Latitude&gt;%s&lt;/Latitude&gt;
                                          &lt;Longitude&gt;%s&lt;/Longitude&gt;
                                          &lt;Altitude&gt;0&lt;/Altitude&gt;
                                    &lt;/AbsolutePosition&gt;
                           &lt;/Position&gt;
                           &lt;Orientation&gt;
                                    &lt;Heading&gt;%s&lt;/Heading&gt;
                                    &lt;Pitch&gt;0&lt;/Pitch&gt;
                                    &lt;Roll&gt;0&lt;/Roll&gt;
                           &lt;/Orientation&gt;
                           &lt;Speed&gt;0&lt;/Speed&gt;
                  &lt;/TimePosition&gt;""" % (dtg, str(lat), str(lon), str(heading))

#===============================================================================

def emit_file_footer(taml_file):
   print &gt;&gt; taml_file, \
"""		&lt;/Track&gt;
	&lt;/Platform&gt;	
&lt;/TAML&gt;"""

#===============================================================================

def slog_to_taml(slog_file, taml_file):
   slog_lines = parse_slog(slog_file)
   
   emit_file_header(taml_file)
   
   for l in slog_lines:
      t = l['TIME']
      x = l['NAV_X']
      y = l['NAV_Y']
      h = l['META_HEADING']
      
      if 'NaN' not in [t, x, y, h]:
         emit_position_report(taml_file, t, y, x, h)
   
   emit_file_footer(taml_file)

#===============================================================================

def main(argv):
   if len(argv) != 3:
      print_usage_and_exit()
   
   slog_filename, taml_filename = argv[1:]
   
   if not os.path.isfile(slog_filename):
      sys.exit("The file \"" + slog_filename + "\" doesn't exist or isn't a file.")
      
   if os.path.exists(taml_filename):
      sys.exit("The TAML file \"" + taml_filename + "\" already exists.")
   
   slog_file = open(slog_filename, "r")
   taml_file = open(taml_filename, "w")
   
   slog_to_taml(slog_file, taml_file)

#===============================================================================
   
if __name__ == '__main__':
   main(sys.argv)</pre></body></html>