Mercurial > hg > nsaunier > 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 |
