comparison trafficintelligence/moving.py @ 1076:108c5dc4e34a

Correcting loaders
author Wendlasida
date Fri, 20 Jul 2018 13:50:43 -0400
parents 67144f26609e
children 3939ae415be0
comparison
equal deleted inserted replaced
1075:67144f26609e 1076:108c5dc4e34a
69 self.last += offset 69 self.last += offset
70 70
71 @classmethod 71 @classmethod
72 def union(cls, interval1, interval2): 72 def union(cls, interval1, interval2):
73 '''Smallest interval comprising self and interval2''' 73 '''Smallest interval comprising self and interval2'''
74 return cls(min(interval1.first, interval2.first), max(interval2.last, interval2.last)) 74 return cls(min(interval1.first, interval2.first), max(interval1.last, interval2.last))
75 75
76 @classmethod 76 @classmethod
77 def intersection(cls, interval1, interval2): 77 def intersection(cls, interval1, interval2):
78 '''Largest interval comprised in both self and interval2''' 78 '''Largest interval comprised in both self and interval2'''
79 return cls(max(interval1.first, interval2.first), min(interval1.last, interval2.last)) 79 return cls(max(interval1.first, interval2.first), min(interval1.last, interval2.last))
1213 else: 1213 else:
1214 newNum = num 1214 newNum = num
1215 commonTimeInterval = obj1.commonTimeInterval(obj2) 1215 commonTimeInterval = obj1.commonTimeInterval(obj2)
1216 if commonTimeInterval.empty(): 1216 if commonTimeInterval.empty():
1217 #print('The two objects\' time intervals do not overlap: obj1 {} and obj2 {}'.format(obj1.getTimeInterval(), obj2.getTimeInterval())) 1217 #print('The two objects\' time intervals do not overlap: obj1 {} and obj2 {}'.format(obj1.getTimeInterval(), obj2.getTimeInterval()))
1218 emptyInterval = TimeInterval(min(obj1.getLastInstant(),obj2.getLastInstant()), max(obj1.getFirstInstant(),obj2.getFirstInstant())) 1218 emptyInterval = TimeInterval(min(obj1.getLastInstant(),obj2.getLastInstant()), max(obj1.getFirstInstant(),obj2.getFirstInstant())+1)
1219 if obj1.existsAtInstant(emptyInterval.last): 1219 if obj1.existsAtInstant(emptyInterval.last):
1220 firstObject = obj2 1220 firstObject = obj2
1221 secondObject = obj1 1221 secondObject = obj1
1222 else: 1222 else:
1223 firstObject = obj1 1223 firstObject = obj1
1226 positions = copy.deepcopy(firstObject.getPositions()) 1226 positions = copy.deepcopy(firstObject.getPositions())
1227 velocities = copy.deepcopy(firstObject.getPositions()) 1227 velocities = copy.deepcopy(firstObject.getPositions())
1228 featurePositions = Trajectory() 1228 featurePositions = Trajectory()
1229 featureVelocities = Trajectory() 1229 featureVelocities = Trajectory()
1230 p = firstObject.getPositionAtInstant(emptyInterval.first)+v 1230 p = firstObject.getPositionAtInstant(emptyInterval.first)+v
1231 for t in range(emptyInterval.first+1, emptyInterval.last): 1231 for t in range(emptyInterval.first+1, emptyInterval.last+1):
1232 positions.addPosition(p) 1232 positions.addPosition(p)
1233 velocities.addPosition(v) 1233 velocities.addPosition(v)
1234 featurePositions.addPosition(p) 1234 featurePositions.addPosition(p)
1235 featureVelocities.addPosition(v) 1235 featureVelocities.addPosition(v)
1236 p=p+v 1236 p=p+v
1243 newObject.featureNumbers = obj1.featureNumbers+obj2.featureNumbers+[newFeatureNum] 1243 newObject.featureNumbers = obj1.featureNumbers+obj2.featureNumbers+[newFeatureNum]
1244 else: 1244 else:
1245 print('Issue, new created feature has no num id') 1245 print('Issue, new created feature has no num id')
1246 if obj1.hasFeatures() and obj2.hasFeatures(): 1246 if obj1.hasFeatures() and obj2.hasFeatures():
1247 newObject.features = obj1.getFeatures()+obj2.getFeatures()+[MovingObject(newFeatureNum, TimeInterval(emptyInterval.first+1, emptyInterval.last-1), featurePositions, featureVelocities)] 1247 newObject.features = obj1.getFeatures()+obj2.getFeatures()+[MovingObject(newFeatureNum, TimeInterval(emptyInterval.first+1, emptyInterval.last-1), featurePositions, featureVelocities)]
1248 newObject.updatePositions()
1248 else: # time intervals overlap 1249 else: # time intervals overlap
1249 newTimeInterval = TimeInterval.union(obj1.getTimeInterval(), obj2.getTimeInterval()) 1250 newTimeInterval = TimeInterval.union(obj1.getTimeInterval(), obj2.getTimeInterval())
1250 newObject = MovingObject(newNum, newTimeInterval, nObjects = 1) # hypothesis is that it's the same object being reunited 1251 newObject = MovingObject(newNum, newTimeInterval, nObjects = 1) # hypothesis is that it's the same object being reunited
1251 if hasattr(obj1, 'featureNumbers') and hasattr(obj2, 'featureNumbers'): 1252 if hasattr(obj1, 'featureNumbers') and hasattr(obj2, 'featureNumbers'):
1252 newObject.featureNumbers = obj1.featureNumbers+obj2.featureNumbers 1253 newObject.featureNumbers = obj1.featureNumbers+obj2.featureNumbers