changeset 1040:20799ac9524e

integrating code of learn-motion-patterns in storage.py
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 04 Jul 2018 15:37:04 -0400
parents 5621e4ad2428
children fc7c0f38e8a6
files trafficintelligence/storage.py
diffstat 1 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/trafficintelligence/storage.py	Wed Jul 04 12:24:37 2018 -0400
+++ b/trafficintelligence/storage.py	Wed Jul 04 15:37:04 2018 -0400
@@ -240,15 +240,24 @@
         userTypes[row[0]] = row[1]
     return userTypes
 
-def loadTrajectoriesFromSqlite(filename, trajectoryType, objectNumbers = None, withFeatures = False, timeStep = None):
+def loadTrajectoriesFromSqlite(filename, trajectoryType, objectNumbers = None, withFeatures = False, timeStep = None, maxNObjectFeatures = 1):
     '''Loads the trajectories (in the general sense, 
-    either features, objects (feature groups) or bounding box series) 
+    either features, objects (feature groups), longest features per object, or bounding box series) 
+
     The number loaded is either the first objectNumbers objects,
     or the indices in objectNumbers from the database'''
     objects = []
     with sqlite3.connect(filename) as connection:
-        objects = loadTrajectoriesFromTable(connection, 'positions', trajectoryType, objectNumbers, timeStep)
-        objectVelocities = loadTrajectoriesFromTable(connection, 'velocities', trajectoryType, objectNumbers, timeStep)
+        if trajectoryType == 'objectfeature':
+            objectFeatureNumbers = loadObjectFeatureFrameNumbers(filename, objectNumbers)
+            featureNumbers = []
+            for numbers in objectFeatureNumbers.values():
+                featureNumbers += numbers[:min(len(numbers), maxNObjectFeatures)]
+            objects = loadTrajectoriesFromTable(connection, 'positions', 'feature', featureNumbers, timeStep)
+            objectVelocities = loadTrajectoriesFromTable(connection, 'velocities', 'feature', featureNumbers, timeStep)
+        else:
+            objects = loadTrajectoriesFromTable(connection, 'positions', trajectoryType, objectNumbers, timeStep)
+            objectVelocities = loadTrajectoriesFromTable(connection, 'velocities', trajectoryType, objectNumbers, timeStep)
 
         if len(objectVelocities) > 0:
             for o,v in zip(objects, objectVelocities):
@@ -419,7 +428,7 @@
 
     with sqlite3.connect(outputFilename) as connection:
         try:
-            saveTrajectoriesToTable(connection, objects, trajectoryType, None)
+            saveTrajectoriesToTable(connection, objects, trajectoryType)
         except sqlite3.OperationalError as error:
             printDBError(error)