changeset 143:436b87d4b992

wrote the code to load positions from sqlite database
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 24 Aug 2011 19:43:44 -0400
parents a3532db00c28
children b32947b002da
files python/storage.py
diffstat 1 files changed, 35 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/python/storage.py	Wed Aug 24 02:12:06 2011 -0400
+++ b/python/storage.py	Wed Aug 24 19:43:44 2011 -0400
@@ -11,7 +11,42 @@
               'car':2,
               'truck':3}
 
+def loadSqlite(filename, objectNumbers = -1):
+    '''Loads nObjects or the indices in objectNumbers from the database 
+    TODO: load velocities'''
+    import sqlite3
 
+    connection = sqlite3.connect(filename) # add test if it open
+    cursor = connection.cursor()
+    
+    if type(objectNumbers) == int:
+        if objectNumbers == -1:
+            cursor.execute('SELECT * from positions order by trajectory_id, frame_number')
+        else:
+            cursor.execute('SELECT * from positions where trajectory_id between 0 and {0} order by trajectory_id, frame_number'.format(objectNumbers))
+    elif type(objectNumbers) == list:
+        cursor.execute('SELECT * from positions where trajectory_id in ('
+                       +', '.join([str(n) for n in objectNumbers])
+                       +') order by trajectory_id, frame_number')
+
+    objId = -1
+    obj = None
+    objects = []
+    for row in cursor:
+        if row[0] != objId:
+            objId = row[0]
+            if obj:
+                objects.append(obj)
+            obj = moving.MovingObject(row[0], timeInterval = moving.TimeInterval(row[1], row[1]), positions = moving.Trajectory([[row[2]],[row[3]]]))
+        else:
+            obj.timeInterval.last = row[1]
+            obj.positions.addPositionXY(row[2],row[3])
+
+    if obj:
+        objects.append(obj)
+
+    connection.close()
+    return objects
 
 def loadNgsimFile(filename, nObjects = -1, sequenceNum = -1):
     '''Reads data from the trajectory data provided by NGSIM project