Mercurial > hg > nsaunier > traffic-intelligence
changeset 1290:9012fb72d79a
update isstationary
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Fri, 26 Jul 2024 21:53:03 +0200 |
| parents | 86122f5fe500 |
| children | 46a30ce1a2e4 |
| files | trafficintelligence/moving.py |
| diffstat | 1 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/trafficintelligence/moving.py Sun Jul 21 23:00:06 2024 -0400 +++ b/trafficintelligence/moving.py Fri Jul 26 21:53:03 2024 +0200 @@ -1766,7 +1766,7 @@ self.velocities = self.getPositions().differentiate(True) else: self.velocities = self.getPositions().differentiate().filterMovingWindow(halfWidth) - self.velocities.addPosition(self.velocities[-1]) + self.velocities.addPosition(self.velocities[-1]) def smoothPositions(self, halfWidth, replace = False): 'Returns the smoothed positions (or replaces them)' @@ -1862,7 +1862,7 @@ if len(indices) >= 2: i = 0 j = len(indices)-1 - #incrementI = True + incrementI = True while i<j and (quantile(speeds[indices[i]:indices[j]+1], 0.5) > speedThreshold or Point.distanceNorm2(self.getPositionAt(indices[i]),self.getPositionAt(indices[j])) > distanceThreshold): #if incrementI: i+=1 @@ -1870,6 +1870,15 @@ j-=1 #incrementI = not incrementI if i<j: # we found a smaller subset + # try to grow the subset + i-=1 + while i>=0 and (mean(speeds[indices[i]:indices[j]+1]) <= speedThreshold and Point.distanceNorm2(self.getPositionAt(indices[i]),self.getPositionAt(indices[j])) <= distanceThreshold): + i-=1 # it will go 1 too far + i+=1 + j+=1 + while j<len(indices) and (mean(speeds[indices[i]:indices[j]+1]) <= speedThreshold and Point.distanceNorm2(self.getPositionAt(indices[i]),self.getPositionAt(indices[j])) <= distanceThreshold): + j+=1 # it will go 1 too far + j-=1 firstInstant = self.getFirstInstant() return True, [indices[i]+firstInstant, indices[j]+firstInstant] else:
