annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
420
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
1 # from moving import Point
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
2
421
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
3 from datetime import datetime
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
4
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
5 from sqlalchemy import Column, Integer, Float, DateTime, String, ForeignKey
420
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
6 from sqlalchemy.orm import relationship, backref
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
7 from sqlalchemy.ext.declarative import declarative_base
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
8
421
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
9 from utils import datetimeFormat
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
10
420
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
11 Base = declarative_base()
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
12
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
13 class Site(Base):
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
14 __tablename__ = 'sites'
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
15 id = Column(Integer, primary_key=True)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
16 name = Column(String) # same as path, relative to the database position
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
17 description = Column(String) # longer names, eg intersection of road1 and road2
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
18 xcoordinate = Column(Float) # ideally moving.Point, but needs to be
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
19 ycoordinate = Column(Float)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
20
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
21 def __init__(self, name, description = "", xcoordinate = None, ycoordinate = None):
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
22 self.name = name
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
23 self.description = description
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
24 self.xcoordinate = xcoordinate
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
25 self.ycoordinate = ycoordinate
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
26
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
27 # def __repr__(self):
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
28 # return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
29
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
30 class EnvironementalFactors(Base):
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
31 '''Represents any environmental factors that may affect the results, in particular
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
32 * changing weather conditions
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
33 * changing road configuration, geometry, signalization, etc.
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
34 ex: sunny, rainy, before counter-measure, after counter-measure'''
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
35 __tablename__ = 'environmental_factors'
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
36 id = Column(Integer, primary_key=True)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
37 startTime = Column(DateTime)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
38 endTime = Column(DateTime)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
39 description = Column(String) # eg sunny, before, after
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
40 siteId = Column(Integer, ForeignKey('sites.id'))
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
41
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
42 site = relationship("Site", backref=backref('environmental_factors', order_by = id))
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
43
421
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
44 def __init__(self, startTime, endTime, description, site):
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
45 'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39'
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
46 self.startTime = datetime.strptime(startTime, datetimeFormat)
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
47 self.endTime = datetime.strptime(endTime, datetimeFormat)
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
48 self.description = description
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
49 self.site = site
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
50
420
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
51 class CameraView(Base):
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
52 __tablename__ = 'camera_views'
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
53 id = Column(Integer, primary_key=True)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
54 frameRate = Column(Float)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
55 homographyFilename = Column(String) # path to homograph filename, relative to SiteId
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
56 siteId = Column(Integer, ForeignKey('sites.id'))
421
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
57 # add distanceUnit related to homography?
420
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
58
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
59 site = relationship("Site", backref=backref('camera_views', order_by = id))
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
60
421
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
61 def __init__(self, frameRate, homographyFilename, site):
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
62 self.frameRate = frameRate
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
63 self.homographyFilename = homographyFilename
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
64 self.site = site
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
65
420
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
66 class VideoSequence(Base):
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
67 __tablename__ = 'video_sequences'
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
68 id = Column(Integer, primary_key=True)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
69 name = Column(String) # path that can be composed with the site name
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
70 startTime = Column(DateTime)
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
71 duration = Column(Float) # video sequence duration
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
72 siteId = Column(Integer, ForeignKey('sites.id'))
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
73 cameraViewId = Column(Integer, ForeignKey('camera_views.id'))
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
74
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
75 site = relationship("Site", backref=backref('video_sequences', order_by = id))
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
76 cameraView = relationship("CameraView", backref=backref('video_sequences', order_by = id))
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
77
421
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
78 def __init__(self, name, startTime, duration, site, cameraView):
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
79 'startTime is passed as string in utils.datetimeFormat, eg 2011-06-22 10:00:39'
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
80 self.name = name
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
81 self.startTime = datetime.strptime(startTime, datetimeFormat)
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
82 self.duration = duration
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
83 self.site = site
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
84 self.cameraView = cameraView
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
85
420
def795d1120f first work on video metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
86 # class SiteDescription(Base): # list of lines and polygons describing the site, eg for sidewalks, center lines
421
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
87
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
88 # class Analysis(Base): # parameters necessary for processing the data: free form
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
89 # eg bounding box depends on camera view, tracking configuration depends on camera view
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
90
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
91 def createDatabases(engine):
4fce27946c60 first example of video metadata using sqlalchemy
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 420
diff changeset
92 Base.metadata.create_all(engine)