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