Mercurial > hg > nsaunier > traffic-intelligence
comparison python/metadata.py @ 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 | 343cfd185ca6 |
| children | 180b6b0231c0 |
comparison
equal
deleted
inserted
replaced
| 579:05c927c6d3cf | 580:1262faae12e7 |
|---|---|
| 11 | 11 |
| 12 Base = declarative_base() | 12 Base = declarative_base() |
| 13 | 13 |
| 14 class Site(Base): | 14 class Site(Base): |
| 15 __tablename__ = 'sites' | 15 __tablename__ = 'sites' |
| 16 id = Column(Integer, primary_key=True) | 16 idx = Column(Integer, primary_key=True) |
| 17 name = Column(String) # same as path, relative to the database position | 17 name = Column(String) # same as path, relative to the database position |
| 18 description = Column(String) # longer names, eg intersection of road1 and road2 | 18 description = Column(String) # longer names, eg intersection of road1 and road2 |
| 19 xcoordinate = Column(Float) # ideally moving.Point, but needs to be | 19 xcoordinate = Column(Float) # ideally moving.Point, but needs to be |
| 20 ycoordinate = Column(Float) | 20 ycoordinate = Column(Float) |
| 21 | 21 |
| 32 '''Represents any environmental factors that may affect the results, in particular | 32 '''Represents any environmental factors that may affect the results, in particular |
| 33 * changing weather conditions | 33 * changing weather conditions |
| 34 * changing road configuration, geometry, signalization, etc. | 34 * changing road configuration, geometry, signalization, etc. |
| 35 ex: sunny, rainy, before counter-measure, after counter-measure''' | 35 ex: sunny, rainy, before counter-measure, after counter-measure''' |
| 36 __tablename__ = 'environmental_factors' | 36 __tablename__ = 'environmental_factors' |
| 37 id = Column(Integer, primary_key=True) | 37 idx = Column(Integer, primary_key=True) |
| 38 startTime = Column(DateTime) | 38 startTime = Column(DateTime) |
| 39 endTime = Column(DateTime) | 39 endTime = Column(DateTime) |
| 40 description = Column(String) # eg sunny, before, after | 40 description = Column(String) # eg sunny, before, after |
| 41 siteId = Column(Integer, ForeignKey('sites.id')) | 41 siteIdx = Column(Integer, ForeignKey('sites.idx')) |
| 42 | 42 |
| 43 site = relationship("Site", backref=backref('environmental_factors', order_by = id)) | 43 site = relationship("Site", backref=backref('environmental_factors', order_by = idx)) |
| 44 | 44 |
| 45 def __init__(self, startTime, endTime, description, site): | 45 def __init__(self, startTime, endTime, description, site): |
| 46 'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39' | 46 'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39' |
| 47 self.startTime = datetime.strptime(startTime, datetimeFormat) | 47 self.startTime = datetime.strptime(startTime, datetimeFormat) |
| 48 self.endTime = datetime.strptime(endTime, datetimeFormat) | 48 self.endTime = datetime.strptime(endTime, datetimeFormat) |
| 49 self.description = description | 49 self.description = description |
| 50 self.site = site | 50 self.site = site |
| 51 | 51 |
| 52 class CameraView(Base): | 52 class CameraView(Base): |
| 53 __tablename__ = 'camera_views' | 53 __tablename__ = 'camera_views' |
| 54 id = Column(Integer, primary_key=True) | 54 idx = Column(Integer, primary_key=True) |
| 55 frameRate = Column(Float) | 55 frameRate = Column(Float) |
| 56 homographyFilename = Column(String) # path to homograph filename, relative to the site name | 56 homographyFilename = Column(String) # path to homograph filename, relative to the site name |
| 57 cameraCalibrationFilename = Column(String) # path to full camera calibration, relative to the site name | 57 cameraCalibrationFilename = Column(String) # path to full camera calibration, relative to the site name |
| 58 siteId = Column(Integer, ForeignKey('sites.id')) | 58 siteIdx = Column(Integer, ForeignKey('sites.idx')) |
| 59 homographyDistanceUnit = Column(String, default = 'm') # make sure it is default in the database | 59 homographyDistanceUnit = Column(String, default = 'm') # make sure it is default in the database |
| 60 configurationFilename = Column(String) # path to configuration .cfg file, relative to site name | 60 configurationFilename = Column(String) # path to configuration .cfg file, relative to site name |
| 61 | 61 |
| 62 site = relationship("Site", backref=backref('camera_views', order_by = id)) | 62 site = relationship("Site", backref=backref('camera_views', order_by = idx)) |
| 63 | 63 |
| 64 def __init__(self, frameRate, homographyFilename, cameraCalibrationFilename, site, configurationFilename): | 64 def __init__(self, frameRate, homographyFilename, cameraCalibrationFilename, site, configurationFilename): |
| 65 self.frameRate = frameRate | 65 self.frameRate = frameRate |
| 66 self.homographyFilename = homographyFilename | 66 self.homographyFilename = homographyFilename |
| 67 self.site = site | 67 self.site = site |
| 71 if relativeToSiteFilename: | 71 if relativeToSiteFilename: |
| 72 return self.site.getFilename()+path.sep+self.homographyFilename | 72 return self.site.getFilename()+path.sep+self.homographyFilename |
| 73 else: | 73 else: |
| 74 return self.homographyFilename | 74 return self.homographyFilename |
| 75 | 75 |
| 76 class Alignment(Base): | |
| 77 __tablename__ = 'alignments' | |
| 78 idx = Column(Integer, primary_key=True) | |
| 79 cameraViewIdx = Column(Integer, ForeignKey('camera_views.idx')) | |
| 80 | |
| 81 cameraView = relationship("CameraView", backref=backref('alignments', order_by = idx)) | |
| 82 | |
| 83 def __init__(self, cameraView): | |
| 84 self.cameraView = cameraView | |
| 85 | |
| 86 class Point(Base): | |
| 87 __tablename__ = 'points' | |
| 88 alignmentIdx = Column(Integer, ForeignKey('alignments.idx'), primary_key=True) | |
| 89 index = Column(Integer, primary_key=True) # order of points in this alignment | |
| 90 x = Column(Float) | |
| 91 y = Column(Float) | |
| 92 | |
| 93 alignment = relationship("Alignment", backref=backref('points', order_by = index)) | |
| 94 | |
| 95 def __init__(self, alignmentIdx, index, x, y): | |
| 96 self.alignmentIdx = alignmentIdx | |
| 97 self.index = index | |
| 98 self.x = x | |
| 99 self.y = y | |
| 100 | |
| 76 class VideoSequence(Base): | 101 class VideoSequence(Base): |
| 77 __tablename__ = 'video_sequences' | 102 __tablename__ = 'video_sequences' |
| 78 id = Column(Integer, primary_key=True) | 103 idx = Column(Integer, primary_key=True) |
| 79 name = Column(String) # path relative to the the site name | 104 name = Column(String) # path relative to the the site name |
| 80 startTime = Column(DateTime) | 105 startTime = Column(DateTime) |
| 81 duration = Column(Float) # video sequence duration | 106 duration = Column(Float) # video sequence duration |
| 82 durationUnit = Column(String, default = 's') | 107 durationUnit = Column(String, default = 's') |
| 83 siteId = Column(Integer, ForeignKey('sites.id')) | 108 siteIdx = Column(Integer, ForeignKey('sites.idx')) |
| 84 cameraViewId = Column(Integer, ForeignKey('camera_views.id')) | 109 cameraViewIdx = Column(Integer, ForeignKey('camera_views.idx')) |
| 85 configurationFilename = Column(String) | 110 configurationFilename = Column(String) |
| 86 | 111 |
| 87 site = relationship("Site", backref=backref('video_sequences', order_by = id)) | 112 site = relationship("Site", backref=backref('video_sequences', order_by = idx)) |
| 88 cameraView = relationship("CameraView", backref=backref('video_sequences', order_by = id)) | 113 cameraView = relationship("CameraView", backref=backref('video_sequences', order_by = idx)) |
| 89 | 114 |
| 90 def __init__(self, name, startTime, duration, site, cameraView, configurationFilename = None): | 115 def __init__(self, name, startTime, duration, site, cameraView, configurationFilename = None): |
| 91 'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39' | 116 'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39' |
| 92 self.name = name | 117 self.name = name |
| 93 self.startTime = datetime.strptime(startTime, datetimeFormat) | 118 self.startTime = datetime.strptime(startTime, datetimeFormat) |
