Mercurial > hg > nsaunier > traffic-intelligence
comparison python/moving.py @ 526:21bdeb29f855
corrected bug in initialization of lists and loading trajectories from vissim files
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Fri, 20 Jun 2014 17:45:32 -0400 |
| parents | 1dced8932b08 |
| children | 37830a831818 |
comparison
equal
deleted
inserted
replaced
| 525:7124c7d2a663 | 526:21bdeb29f855 |
|---|---|
| 98 def fromInterval(inter): | 98 def fromInterval(inter): |
| 99 return TimeInterval(inter.first, inter.last) | 99 return TimeInterval(inter.first, inter.last) |
| 100 | 100 |
| 101 def __getitem__(self, i): | 101 def __getitem__(self, i): |
| 102 if not self.empty(): | 102 if not self.empty(): |
| 103 return self.first+i | 103 if isinstance(i, int): |
| 104 return self.first+i | |
| 105 else: | |
| 106 raise TypeError, "Invalid argument type." | |
| 107 #elif isinstance( key, slice ): | |
| 104 | 108 |
| 105 def __iter__(self): | 109 def __iter__(self): |
| 106 self.iterInstantNum = -1 | 110 self.iterInstantNum = -1 |
| 107 return self | 111 return self |
| 108 | 112 |
| 432 return len(self.positions[0]) | 436 return len(self.positions[0]) |
| 433 | 437 |
| 434 def length(self): | 438 def length(self): |
| 435 return self.__len__() | 439 return self.__len__() |
| 436 | 440 |
| 441 def __getitem__(self, i): | |
| 442 if isinstance(i, int): | |
| 443 return Point(self.positions[0][i], self.positions[1][i]) | |
| 444 else: | |
| 445 raise TypeError, "Invalid argument type." | |
| 446 #elif isinstance( key, slice ): | |
| 447 | |
| 437 def __str__(self): | 448 def __str__(self): |
| 438 return ' '.join([self.__getitem__(i).__str__() for i in xrange(self.length())]) | 449 return ' '.join([self.__getitem__(i).__str__() for i in xrange(self.length())]) |
| 439 | 450 |
| 440 def __repr__(self): | 451 def __repr__(self): |
| 441 return str(self) | 452 return self.__str__() |
| 442 | |
| 443 def __getitem__(self, i): | |
| 444 return Point(self.positions[0][i], self.positions[1][i]) | |
| 445 | 453 |
| 446 def __iter__(self): | 454 def __iter__(self): |
| 447 self.iterInstantNum = 0 | 455 self.iterInstantNum = 0 |
| 448 return self | 456 return self |
| 449 | 457 |
| 564 if p.similarOrientation(refDirection, cosineThreshold): | 572 if p.similarOrientation(refDirection, cosineThreshold): |
| 565 count += 1 | 573 count += 1 |
| 566 if count > lengthThreshold: | 574 if count > lengthThreshold: |
| 567 return True | 575 return True |
| 568 return False | 576 return False |
| 569 | |
| 570 | 577 |
| 571 def wiggliness(self): | 578 def wiggliness(self): |
| 572 return self.cumulatedDisplacement()/float(Point.distanceNorm2(self.__getitem__(0),self.__getitem__(self.length()-1))) | 579 return self.cumulatedDisplacement()/float(Point.distanceNorm2(self.__getitem__(0),self.__getitem__(self.length()-1))) |
| 573 | 580 |
| 574 def getIntersections(self, p1, p2): | 581 def getIntersections(self, p1, p2): |
| 623 class CurvilinearTrajectory(Trajectory): | 630 class CurvilinearTrajectory(Trajectory): |
| 624 '''Sub class of trajectory for trajectories with curvilinear coordinates and lane assignements | 631 '''Sub class of trajectory for trajectories with curvilinear coordinates and lane assignements |
| 625 longitudinal coordinate is stored as first coordinate (exterior name S) | 632 longitudinal coordinate is stored as first coordinate (exterior name S) |
| 626 lateral coordiante is stored as second coordinate''' | 633 lateral coordiante is stored as second coordinate''' |
| 627 | 634 |
| 628 def __init__(self, S = [], Y = [], lanes = []): | 635 def __init__(self, S = None, Y = None, lanes = None): |
| 629 self.positions = [S,Y] | 636 if S == None or Y == None: |
| 630 self.lanes = lanes | 637 self.positions = [[],[]] |
| 638 else: | |
| 639 self.positions = [S,Y] | |
| 640 if lanes == None: | |
| 641 self.lanes = [] | |
| 642 else: | |
| 643 self.lanes = lanes | |
| 631 | 644 |
| 632 def __getitem__(self,i): | 645 def __getitem__(self,i): |
| 633 return [self.positions[0][i], self.positions[1][i], self.lanes[i]] | 646 if isinstance(i, int): |
| 647 return [self.positions[0][i], self.positions[1][i], self.lanes[i]] | |
| 648 else: | |
| 649 raise TypeError, "Invalid argument type." | |
| 650 #elif isinstance( key, slice ): | |
| 634 | 651 |
| 635 def getSCoordinates(self): | 652 def getSCoordinates(self): |
| 636 return self.getXCoordinates() | 653 return self.getXCoordinates() |
| 637 | 654 |
| 638 def getLanes(self): | 655 def getLanes(self): |
