changeset 580:1262faae12e7

alignments may be stored in metadata
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 29 Aug 2014 01:32:11 -0400
parents 05c927c6d3cf
children 10e8a9f2bd9f
files python/metadata.py
diffstat 1 files changed, 37 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/python/metadata.py	Thu Aug 28 23:50:30 2014 -0400
+++ b/python/metadata.py	Fri Aug 29 01:32:11 2014 -0400
@@ -13,7 +13,7 @@
 
 class Site(Base):
     __tablename__ = 'sites'
-    id = Column(Integer, primary_key=True)
+    idx = Column(Integer, primary_key=True)
     name = Column(String) # same as path, relative to the database position
     description = Column(String) # longer names, eg intersection of road1 and road2
     xcoordinate = Column(Float)  # ideally moving.Point, but needs to be 
@@ -34,13 +34,13 @@
     * changing road configuration, geometry, signalization, etc.
     ex: sunny, rainy, before counter-measure, after counter-measure'''
     __tablename__ = 'environmental_factors'
-    id = Column(Integer, primary_key=True)
+    idx = Column(Integer, primary_key=True)
     startTime = Column(DateTime)
     endTime = Column(DateTime)
     description = Column(String) # eg sunny, before, after
-    siteId = Column(Integer, ForeignKey('sites.id'))
+    siteIdx = Column(Integer, ForeignKey('sites.idx'))
 
-    site = relationship("Site", backref=backref('environmental_factors', order_by = id))
+    site = relationship("Site", backref=backref('environmental_factors', order_by = idx))
 
     def __init__(self, startTime, endTime, description, site):
         'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39'
@@ -51,15 +51,15 @@
 
 class CameraView(Base):
     __tablename__ = 'camera_views'
-    id = Column(Integer, primary_key=True)
+    idx = Column(Integer, primary_key=True)
     frameRate = Column(Float)
     homographyFilename = Column(String) # path to homograph filename, relative to the site name
     cameraCalibrationFilename = Column(String) # path to full camera calibration, relative to the site name
-    siteId = Column(Integer, ForeignKey('sites.id'))
+    siteIdx = Column(Integer, ForeignKey('sites.idx'))
     homographyDistanceUnit = Column(String, default = 'm') # make sure it is default in the database
     configurationFilename = Column(String) # path to configuration .cfg file, relative to site name
 
-    site = relationship("Site", backref=backref('camera_views', order_by = id))
+    site = relationship("Site", backref=backref('camera_views', order_by = idx))
 
     def __init__(self, frameRate, homographyFilename, cameraCalibrationFilename, site, configurationFilename):
         self.frameRate = frameRate
@@ -73,19 +73,44 @@
         else:
             return self.homographyFilename
 
+class Alignment(Base):
+    __tablename__ = 'alignments'
+    idx = Column(Integer, primary_key=True)
+    cameraViewIdx = Column(Integer, ForeignKey('camera_views.idx'))
+    
+    cameraView = relationship("CameraView", backref=backref('alignments', order_by = idx))
+
+    def __init__(self, cameraView):
+        self.cameraView = cameraView
+
+class Point(Base):
+    __tablename__ = 'points'
+    alignmentIdx = Column(Integer, ForeignKey('alignments.idx'), primary_key=True)
+    index = Column(Integer, primary_key=True) # order of points in this alignment
+    x = Column(Float)
+    y = Column(Float)
+
+    alignment = relationship("Alignment", backref=backref('points', order_by = index))
+    
+    def __init__(self, alignmentIdx, index, x, y):
+        self.alignmentIdx = alignmentIdx
+        self.index = index
+        self.x = x
+        self.y = y
+
 class VideoSequence(Base):
     __tablename__ = 'video_sequences'
-    id = Column(Integer, primary_key=True)
+    idx = Column(Integer, primary_key=True)
     name = Column(String) # path relative to the the site name
     startTime = Column(DateTime)
     duration = Column(Float) # video sequence duration
     durationUnit = Column(String, default = 's')
-    siteId = Column(Integer, ForeignKey('sites.id'))
-    cameraViewId = Column(Integer, ForeignKey('camera_views.id'))
+    siteIdx = Column(Integer, ForeignKey('sites.idx'))
+    cameraViewIdx = Column(Integer, ForeignKey('camera_views.idx'))
     configurationFilename = Column(String)
 
-    site = relationship("Site", backref=backref('video_sequences', order_by = id))
-    cameraView = relationship("CameraView", backref=backref('video_sequences', order_by = id))
+    site = relationship("Site", backref=backref('video_sequences', order_by = idx))
+    cameraView = relationship("CameraView", backref=backref('video_sequences', order_by = idx))
 
     def __init__(self, name, startTime, duration, site, cameraView, configurationFilename = None):
         'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39'