Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
for index, row in temp_df.iterrows():
t = row['t']
tdiff = t - prev_t
if tdiff >= tolerance:
keep_rows.append(i)
prev_t = t
i += 1
keep_rows.append(len(traj.df)-1)
new_df = traj.df.iloc[keep_rows]
new_traj = Trajectory(new_df, traj.id)
return new_traj
class MaxDistanceGeneralizer(TrajectoryGeneralizer):
"""
Generalizes based on distance.
Similar to Douglas-Peuker. Single-pass implementation that checks whether the provided distance threshold
is exceed.
tolerance : float
Distance tolerance
Examples
--------
>>> mpd.MaxDistanceGeneralizer(traj).generalize(tolerance=1.0)
"""
def _generalize_traj(self, traj, tolerance):
else:
raise TypeError
def _generalize_traj_collection(self, tolerance):
generalized = []
for traj in self.traj.trajectories:
generalized.append(self._generalize_traj(traj, tolerance))
result = copy(self.traj)
result.trajectories = generalized
return result
def _generalize_traj(self, traj, tolerance):
return traj
class MinDistanceGeneralizer(TrajectoryGeneralizer):
"""
Generalizes based on distance.
This generalization ensures that consecutive locations are at least a certain distance apart.
tolerance : float
Desired minimum distance between consecutive points
Examples
--------
>>> mpd.MinDistanceGeneralizer(traj).generalize(tolerance=1.0)
"""
def _generalize_traj(self, traj, tolerance):
temp_df = traj.df.copy()
if traj.is_latlon:
dist = measure_distance_spherical(pt, prev_pt)
else:
dist = measure_distance_euclidean(pt, prev_pt)
if dist >= tolerance:
keep_rows.append(i)
prev_pt = pt
i += 1
keep_rows.append(len(traj.df)-1)
new_df = traj.df.iloc[keep_rows]
new_traj = Trajectory(new_df, traj.id)
return new_traj
class MinTimeDeltaGeneralizer(TrajectoryGeneralizer):
"""
Generalizes based on time.
This generalization ensures that consecutive rows are at least a certain timedelta apart.
tolerance : datetime.timedelta
Desired minimum time difference between consecutive rows
Examples
--------
>>> mpd.MinTimeDeltaGeneralizer(traj).generalize(tolerance=timedelta(minutes=10))
"""
def _generalize_traj(self, traj, tolerance):
temp_df = traj.df.copy()
for pt in pts:
if line.distance(pt) > tolerance:
prev_pt = current_pt
pts = []
keep_rows.append(i)
continue
pts.append(current_pt)
i += 1
keep_rows.append(i)
new_df = traj.df.iloc[keep_rows]
new_traj = Trajectory(new_df, traj.id)
return new_traj
class DouglasPeuckerGeneralizer(TrajectoryGeneralizer):
"""
Generalizes using Douglas-Peucker algorithm.
tolerance : float
Distance tolerance
Examples
--------
>>> mpd.DouglasPeuckerGeneralizer(traj).generalize(tolerance=1.0)
"""
def _generalize_traj(self, traj, tolerance):
keep_rows = []
i = 0
simplified = traj.to_linestring().simplify(tolerance).coords