Ejemplo n.º 1
0
 def calculate_current_cog_and_sog(self):
     point1 = self.traj.get_start_location()
     point2 = self.traj.get_end_location()
     t1 = self.traj.get_start_time()
     t2 = self.traj.get_end_time()
     cog_deg = calculate_initial_compass_bearing(point1, point2)
     dist_meters = measure_distance_spherical(point1, point2)
     meters_per_sec = dist_meters / (t2 - t1).total_seconds()
     return [cog_deg, meters_per_sec]
Ejemplo n.º 2
0
 def _is_moving_sufficiently(self, traj, min_meters_per_sec,
                             past_timedelta):
     line_coords = traj.to_linestring().coords
     covered_distance = measure_distance_spherical(Point(line_coords[0]),
                                                   Point(line_coords[-1]))
     if covered_distance < 0.5 * min_meters_per_sec * past_timedelta.total_seconds(
     ):
         return False
     else:
         return True
 def compute_speed(self, row):
     pt0 = row['prev_pt']
     pt1 = row['geometry']
     if type(pt0) != Point:
         return 0.0
     if pt0 == pt1:
         return 0.0
     if self.crs == '4326':
         dist_meters = measure_distance_spherical(pt0, pt1)
     else:  # The following distance will be in CRS units that might not be meters!
         dist_meters = measure_distance_euclidean(pt0, pt1)
     return dist_meters / row['delta_t'].total_seconds()
Ejemplo n.º 4
0
 def _compute_distance(self, row):
     pt0 = row['prev_pt']
     pt1 = row['geometry']
     if type(pt0) != Point:
         return 0.0
     if pt0 == pt1:
         return 0.0
     if self.is_latlon():
         dist_meters = measure_distance_spherical(pt0, pt1)
     else:  # The following distance will be in CRS units that might not be meters!
         dist_meters = measure_distance_euclidean(pt0, pt1)
     return dist_meters
Ejemplo n.º 5
0
 def _compute_speed(self, row):
     pt0 = row['prev_pt']
     pt1 = row['geometry']
     if type(pt0) != Point:
         return 0.0
     if type(pt1) != Point:
         raise ValueError('Invalid trajectory! Got {} instead of point!'.format(pt1))
     if pt0 == pt1:
         return 0.0
     if self.is_latlon():
         dist_meters = measure_distance_spherical(pt0, pt1)
     else: # The following distance will be in CRS units that might not be meters!
         dist_meters = measure_distance_euclidean(pt0, pt1)
     return dist_meters / row['delta_t'].total_seconds()
 def test_dist_error_latlon(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(0, 10),
         't': datetime(2018, 1, 1, 12, 0, 1)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': 'epsg:4326'})
     true_traj = Trajectory(1, geo_df)
     true_pos = Point(0, 10)
     predicted_pos = Point(0, 9)
     dummy_td = timedelta(seconds=1)
     sample = TrajectorySample(0, dummy_td, dummy_td, dummy_td, None,
                               true_pos, true_traj)
     evaluator = TrajectoryPredictionEvaluator(sample, predicted_pos,
                                               'epsg:25832', 'epsg:4326')
     result = evaluator.get_distance_error()
     expected_result = measure_distance_spherical(true_pos, predicted_pos)
     self.assertAlmostEqual(result, expected_result, 3)
 def get_along_track_error(self):
     return measure_distance_spherical(self.truth, self.projected_prediction)
     
     
     
 def get_cross_track_error(self):
     return measure_distance_spherical(self.prediction, self.projected_prediction)
 def get_distance_error(self):
     return measure_distance_spherical(self.truth, self.prediction)
Ejemplo n.º 10
0
 def get_distance_error(self):
     if self.input_crs.is_latlong():
         return measure_distance_spherical(self.truth, self.prediction)
     else:
         return measure_distance_euclidean(self.truth, self.prediction)