comparison trafficintelligence/storage.py @ 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
comparison
equal deleted inserted replaced
1039:5621e4ad2428 1040:20799ac9524e
238 userTypes = {} 238 userTypes = {}
239 for row in cursor: 239 for row in cursor:
240 userTypes[row[0]] = row[1] 240 userTypes[row[0]] = row[1]
241 return userTypes 241 return userTypes
242 242
243 def loadTrajectoriesFromSqlite(filename, trajectoryType, objectNumbers = None, withFeatures = False, timeStep = None): 243 def loadTrajectoriesFromSqlite(filename, trajectoryType, objectNumbers = None, withFeatures = False, timeStep = None, maxNObjectFeatures = 1):
244 '''Loads the trajectories (in the general sense, 244 '''Loads the trajectories (in the general sense,
245 either features, objects (feature groups) or bounding box series) 245 either features, objects (feature groups), longest features per object, or bounding box series)
246
246 The number loaded is either the first objectNumbers objects, 247 The number loaded is either the first objectNumbers objects,
247 or the indices in objectNumbers from the database''' 248 or the indices in objectNumbers from the database'''
248 objects = [] 249 objects = []
249 with sqlite3.connect(filename) as connection: 250 with sqlite3.connect(filename) as connection:
250 objects = loadTrajectoriesFromTable(connection, 'positions', trajectoryType, objectNumbers, timeStep) 251 if trajectoryType == 'objectfeature':
251 objectVelocities = loadTrajectoriesFromTable(connection, 'velocities', trajectoryType, objectNumbers, timeStep) 252 objectFeatureNumbers = loadObjectFeatureFrameNumbers(filename, objectNumbers)
253 featureNumbers = []
254 for numbers in objectFeatureNumbers.values():
255 featureNumbers += numbers[:min(len(numbers), maxNObjectFeatures)]
256 objects = loadTrajectoriesFromTable(connection, 'positions', 'feature', featureNumbers, timeStep)
257 objectVelocities = loadTrajectoriesFromTable(connection, 'velocities', 'feature', featureNumbers, timeStep)
258 else:
259 objects = loadTrajectoriesFromTable(connection, 'positions', trajectoryType, objectNumbers, timeStep)
260 objectVelocities = loadTrajectoriesFromTable(connection, 'velocities', trajectoryType, objectNumbers, timeStep)
252 261
253 if len(objectVelocities) > 0: 262 if len(objectVelocities) > 0:
254 for o,v in zip(objects, objectVelocities): 263 for o,v in zip(objects, objectVelocities):
255 if o.getNum() == v.getNum(): 264 if o.getNum() == v.getNum():
256 o.velocities = v.positions 265 o.velocities = v.positions
417 Either feature positions (and velocities if they exist) 426 Either feature positions (and velocities if they exist)
418 or curvilinear positions will be saved at a time''' 427 or curvilinear positions will be saved at a time'''
419 428
420 with sqlite3.connect(outputFilename) as connection: 429 with sqlite3.connect(outputFilename) as connection:
421 try: 430 try:
422 saveTrajectoriesToTable(connection, objects, trajectoryType, None) 431 saveTrajectoriesToTable(connection, objects, trajectoryType)
423 except sqlite3.OperationalError as error: 432 except sqlite3.OperationalError as error:
424 printDBError(error) 433 printDBError(error)
425 434
426 def setRoadUserTypes(filename, objects): 435 def setRoadUserTypes(filename, objects):
427 '''Saves the user types of the objects in the sqlite database stored in filename 436 '''Saves the user types of the objects in the sqlite database stored in filename