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
示例#2
0
 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
示例#3
0
    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