Mercurial Hosting > traffic-intelligence
diff python/objectsmoothing.py @ 661:dc70d9e711f5
some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 18 May 2015 13:53:25 +0200 |
parents | d74e8c175d6b |
children | 15e244d2a1b5 |
line wrap: on
line diff
--- a/python/objectsmoothing.py Fri May 15 23:09:49 2015 +0200 +++ b/python/objectsmoothing.py Mon May 18 13:53:25 2015 +0200 @@ -14,14 +14,14 @@ return min(dist, key=dist.get) # = utils.argmaxDict(dist) def getFeatures(obj, featureID): - first = obj.features[featureID].getFirstInstant() - last = obj.features[featureID].getLastInstant() - featureList=[[obj.features[featureID],first,last,moving.Point(0,0)]] + currentFeature = obj.getFeature(featureID) + first = currentFeature.getFirstInstant() + last = currentFeature.getLastInstant() + featureList=[[currentFeature,first,last,moving.Point(0,0)]] # find the features to fill in the beginning of the object existence - currentFeature = obj.features[featureID] while first != obj.getFirstInstant(): delta=featureList[-1][3] - featureSet = [f for f in obj.features if f.existsAtInstant(first-1)] + featureSet = [f for f in obj.getFeatures() if f.existsAtInstant(first-1)] feat = findNearest(currentFeature,featureSet,first-1,reverse=True) if feat.existsAtInstant(first): featureList.append([feat,feat.getFirstInstant(),first-1,(currentFeature.getPositionAtInstant(first)-feat.getPositionAtInstant(first))+delta]) @@ -31,9 +31,9 @@ first= feat.getFirstInstant() # find the features to fill in the end of the object existence delta=moving.Point(0,0) - currentFeature = obj.features[featureID] + currentFeature = obj.getFeature(featureID) # need to reinitialize while last!= obj.getLastInstant(): - featureSet = [f for f in obj.features if f.existsAtInstant(last+1)] + featureSet = [f for f in obj.getFeatures() if f.existsAtInstant(last+1)] feat = findNearest(currentFeature,featureSet,last+1,reverse=False) if feat.existsAtInstant(last): featureList.append([feat,last+1,feat.getLastInstant(),(currentFeature.getPositionAtInstant(last)-feat.getPositionAtInstant(last))+delta]) @@ -120,7 +120,7 @@ if create: feature = buildFeature(obj, featureID , num=1) # why num=1 else: - feature = obj.features[featureID] + feature = obj.getFeature(featureID) for t in feature.getTimeInterval(): p1= feature.getPositionAtInstant(t) p2= obj.getPositionAtInstant(t) @@ -180,14 +180,14 @@ The object should have its features in obj.features TODO: check whether features are necessary''' - if len(obj.features) == 0: + if not obj.hasFeatures(): print('Object {} has an empty list of features: please load and add them using obj.setFeatures(features)'.format(obj.getNum())) from sys import exit exit() - featureList=[i for i,f in enumerate(obj.features) if f.length() >= minLengthParam*obj.length()] + featureList=[i for i,f in enumerate(obj.getFeatures()) if f.length() >= minLengthParam*obj.length()] if featureList==[]: - featureList.append(utils.argmaxDict({i:f.length() for i,f in enumerate(obj.features)})) + featureList.append(utils.argmaxDict({i:f.length() for i,f in enumerate(obj.getFeatures())})) create = True newObjects = [] for featureID in featureList: # featureID should be the index in the list of obj.features @@ -232,14 +232,14 @@ newObj.velocities= obj.velocities newObj.featureNumbers=obj.featureNumbers - newObj.features=obj.features + newObj.features=obj.getFeatures() newObj.userType=obj.userType if plotResults: plt.figure() plt.title('objects_id = {}'.format(obj.num)) for i in featureList: - obj.features[i].plot('cx-') + obj.getFeature(i).plot('cx-') obj.plot('rx-') newObj.plot('gx-') return newObj