diff python/metadata.py @ 421:4fce27946c60

first example of video metadata using sqlalchemy
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 09 Oct 2013 23:25:51 -0400
parents def795d1120f
children 67c7ff5d6b26
line wrap: on
line diff
--- a/python/metadata.py	Tue Oct 08 18:26:20 2013 -0400
+++ b/python/metadata.py	Wed Oct 09 23:25:51 2013 -0400
@@ -1,9 +1,13 @@
 # from moving import Point
 
-from sqlalchemy import create_engine, Column, Integer, Float, DateTime, String, ForeignKey
+from datetime import datetime
+
+from sqlalchemy import Column, Integer, Float, DateTime, String, ForeignKey
 from sqlalchemy.orm import relationship, backref
 from sqlalchemy.ext.declarative import declarative_base
 
+from utils import datetimeFormat
+
 Base = declarative_base()
 
 class Site(Base):
@@ -37,19 +41,31 @@
 
     site = relationship("Site", backref=backref('environmental_factors', order_by = id))
 
+    def __init__(self, startTime, endTime, description, site):
+        'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39'
+        self.startTime = datetime.strptime(startTime, datetimeFormat)
+        self.endTime = datetime.strptime(endTime, datetimeFormat)
+        self.description = description
+        self.site = site
+
 class CameraView(Base):
     __tablename__ = 'camera_views'
     id = Column(Integer, primary_key=True)
     frameRate = Column(Float)
     homographyFilename = Column(String) # path to homograph filename, relative to SiteId
     siteId = Column(Integer, ForeignKey('sites.id'))
+    # add distanceUnit related to homography?
 
     site = relationship("Site", backref=backref('camera_views', order_by = id))
 
+    def __init__(self, frameRate, homographyFilename, site):
+        self.frameRate = frameRate
+        self.homographyFilename = homographyFilename
+        self.site = site
+
 class VideoSequence(Base):
     __tablename__ = 'video_sequences'
     id = Column(Integer, primary_key=True)
-    startTime = Column(DateTime)
     name = Column(String) # path that can be composed with the site name
     startTime = Column(DateTime)
     duration = Column(Float) # video sequence duration
@@ -59,4 +75,18 @@
     site = relationship("Site", backref=backref('video_sequences', order_by = id))
     cameraView = relationship("CameraView", backref=backref('video_sequences', order_by = id))
 
+    def __init__(self, name, startTime, duration, site, cameraView):
+        'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39'
+        self.name = name
+        self.startTime = datetime.strptime(startTime, datetimeFormat)
+        self.duration = duration
+        self.site = site
+        self.cameraView = cameraView
+
 # class SiteDescription(Base): # list of lines and polygons describing the site, eg for sidewalks, center lines
+
+# class Analysis(Base): # parameters necessary for processing the data: free form
+# eg bounding box depends on camera view, tracking configuration depends on camera view 
+
+def createDatabases(engine):
+    Base.metadata.create_all(engine)