Mercurial Hosting > traffic-intelligence
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