def is_suit_for_combine_set(self, before_point_set, after_point_set, time_threshold, distance_threshold, trajectory): if len(trajectory.point_set) < 2: return True if not (before_point_set and after_point_set): return False time_gaps = after_point_set[0].utc - before_point_set[-1].utc after_point_center = Utils.get_center_point(after_point_set) before_point_center = Utils.get_center_point(before_point_set) distance = Utils.calculate_distance_between_items( before_point_center[1], after_point_center[1], before_point_center[0], after_point_center[0]) return time_gaps < time_threshold and distance < distance_threshold
def export_route_center(self, rp_point_threshold, rp_acceleration_threshold, rp_avg_heading_threshold): if self.save_route_point_set(rp_point_threshold, rp_acceleration_threshold, rp_avg_heading_threshold): center_position = Utils.get_center_point( [route_point[0] for route_point in self.route_point_set]) center_point = self.route_point_set[0][0] center_point.update_position(center_position[0], center_position[1]) self.route_saver.writerow([self.sp_index - 1, self.route_index] + center_point.export_to_csv()) self.route_index += 1
def export_sp_center(self, sp_area, port_service, distance_threshold): center_point = Utils.get_center_point(sp_area) port = port_service.get_nearest_port( arcpy.PointGeometry(arcpy.Point(center_point[0], center_point[1])), distance_threshold) if not port: self.temp_still_point_info = [] return False temp_still_point_info = self.temp_still_point_info port_point = sp_area[0] avg_draft = Utils.get_most_value(sp_area, 'draft') port_point.update_position(port.get_x(), port.get_y()) port_point.draft = avg_draft self.temp_still_point_info = port_point.export_to_csv() + [port.name] if temp_still_point_info: self.sp_saver.writerow([self.sp_index] + temp_still_point_info) self.sp_saver.writerow([self.sp_index] + self.temp_still_point_info) self.sp_index += 1 return True