Files
OpenUxAS-SoI/resources/AutomationDiagramDataService/ProcessEntityStates.py

65 lines
2.1 KiB
Python

#! /usr/bin/env python
import xml.dom.minidom
from xml.dom.minidom import Node
import pandas as pd
import glob
import sys
# import the conversion module
import LocalCoords
def ProcessEntityStateFile(filename):
isGoodMessage = True
entityState = []
doc2 = xml.dom.minidom.parse(filename)
if doc2.hasChildNodes():
try:
entityId = 0
elements = doc2.getElementsByTagName('ID')
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
entityId = int(elements[0].firstChild.data)
latitude = 0.0
longitude = 0.0
altitude = 0.0
elements = doc2.getElementsByTagName('Location')
if len(elements):
locationNode = elements[0].getElementsByTagName('Location3D')
if len(locationNode):
elements = locationNode[0].getElementsByTagName('Latitude')
if elements:
latitude = float(elements[0].firstChild.data)
elements = locationNode[0].getElementsByTagName('Longitude')
if elements:
longitude = float(elements[0].firstChild.data)
elements = locationNode[0].getElementsByTagName('Altitude')
if elements:
altitude = float(elements[0].firstChild.data)
heading = 0
elements = doc2.getElementsByTagName('Heading')
if len(elements):
heading = float(elements[0].firstChild.data)
except Exception:
print('### Error encountered while processing the EntityState ###')
isGoodMessage = False
except:
print('### Error encountered while processing the EntityState ###Unexpected error:', sys.exc_info()[0])
isGoodMessage = False
if isGoodMessage:
return [entityId,latitude,longitude,altitude,heading]
return entityState
def main():
vehicleStateArray = []
for entityStateFile in glob.glob('EnityState_Id*'):
print('loading [' + entityStateFile + ']')
vehicleStateArray.append(ProcessEntityStateFile(entityStateFile))
vehicleStatesPd = pd.DataFrame(data = vehicleStateArray,columns=['vehicleID','latitude','longitude','altitude','heading'])
print('saving [VehicleStates.pkl]')
vehicleStatesPd.to_pickle('VehicleStates.pkl')
if __name__ == '__main__':
main()