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()
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
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 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)