changeset 865:5afa1d30edd8

minor improvement to path description and path accessors
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Thu, 08 Dec 2016 11:07:14 -0500
parents 8f28b4fcf129
children 8fba46899e74
files python/metadata.py
diffstat 1 files changed, 22 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/python/metadata.py	Wed Nov 09 18:00:39 2016 -0500
+++ b/python/metadata.py	Thu Dec 08 11:07:14 2016 -0500
@@ -19,11 +19,11 @@
 class Site(Base):
     __tablename__ = 'sites'
     idx = Column(Integer, primary_key=True)
-    name = Column(String) # same as path, relative to the database position
+    name = Column(String) # path to directory containing all site information (in subdirectories), 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 
     ycoordinate = Column(Float)
-    mapImageFilename = Column(String) # path to filename, relative to site name, ie sitename/mapImageFilename
+    mapImageFilename = Column(String) # path to map image file, relative to site name, ie sitename/mapImageFilename
     nUnitsPerPixel = Column(Float) # number of units of distance per pixel in map image
     worldDistanceUnit = Column(String, default = 'm') # make sure it is default in the database
     
@@ -36,9 +36,15 @@
         self.nUnitsPerPixel = nUnitsPerPixel
         self.worldDistanceUnit = worldDistanceUnit
 
-    def getFilename(self):
+    def getPath(self):
         return self.name
 
+    def getMapImageFilename(self, relativeToSiteFilename = True):
+        if relativeToSiteFilename:
+            return path.join(self.getPath(), self.mapImageFilename)
+        else:
+            return self.mapImageFilename
+
     @staticmethod
     def getSite(session, siteId):
         'Returns the site(s) matching the index or the name'
@@ -147,7 +153,7 @@
     __tablename__ = 'camera_views'
     idx = Column(Integer, primary_key=True)
     description = Column(String)
-    homographyFilename = Column(String) # path to homograph filename, relative to the site name
+    homographyFilename = Column(String) # path to homograph file, relative to the site name
     siteIdx = Column(Integer, ForeignKey('sites.idx'))
     cameraTypeIdx = Column(Integer, ForeignKey('camera_types.idx'))
     trackingConfigurationFilename = Column(String) # path to configuration .cfg file, relative to site name
@@ -168,19 +174,19 @@
 
     def getHomographyFilename(self, relativeToSiteFilename = True):
         if relativeToSiteFilename:
-            return self.site.getFilename()+path.sep+self.homographyFilename
+            return path.join(self.site.getPath(), self.homographyFilename)
         else:
             return self.homographyFilename
 
     def getTrackingConfigurationFilename(self, relativeToSiteFilename = True):
         if relativeToSiteFilename:
-            return self.site.getFilename()+path.sep+self.trackingConfigurationFilename
+            return path.join(self.site.getPath(), self.trackingConfigurationFilename)
         else:
             return self.trackingConfigurationFilename
 
     def getMaskFilename(self, relativeToSiteFilename = True):
         if relativeToSiteFilename:
-            return self.site.getFilename()+path.sep+self.maskFilename
+            return path.join(self.site.getPath(), self.maskFilename)
         else:
             return self.maskFilename
 
@@ -218,10 +224,10 @@
 class VideoSequence(Base):
     __tablename__ = 'video_sequences'
     idx = Column(Integer, primary_key=True)
-    name = Column(String) # path relative to the the site name
+    name = Column(String) # path to the video file relative to the the site name
     startTime = Column(DateTime)
     duration = Column(Interval) # video sequence duration
-    databaseFilename = Column(String) # path relative to the the site name
+    databaseFilename = Column(String) # path to the database file relative to the the site name
     virtual = Column(Boolean) # indicates it is not a real video sequence (no video file), eg merged
     cameraViewIdx = Column(Integer, ForeignKey('camera_views.idx'))
 
@@ -245,13 +251,13 @@
 
     def getVideoSequenceFilename(self, relativeToSiteFilename = True):
         if relativeToSiteFilename:
-            return self.cameraView.site.getFilename()+path.sep+self.name
+            return path.join(self.cameraView.site.getPath(), self.name)
         else:
             return self.name
 
     def getDatabaseFilename(self, relativeToSiteFilename = True):
         if relativeToSiteFilename:
-            return self.cameraView.site.getFilename()+path.sep+self.databaseFilename
+            return path.join(self.cameraView.site.getPath(), self.databaseFilename)
         else:
             return self.databaseFilename
 
@@ -273,6 +279,11 @@
         else:
             return None
 
+class TrackingAnnotation(Base):
+    __tablename__ = 'tracking_annotations'
+    idx = Column(Integer, primary_key=True)
+    description = Column(String) # description
+
 # add class for Analysis: foreign key VideoSequenceId, dataFilename, configFilename (get the one from camera view by default), mask? (no, can be referenced in the tracking cfg file)
 
 # class SiteDescription(Base): # list of lines and polygons describing the site, eg for sidewalks, center lines