예제 #1
0
def get_use_time(db_name, csv_name):
    db_file = CommonDB(db_name)
    db_file.run_sql("SELECT * FROM china_trajectory_cn WHERE load_state = 1 AND input_or_output = 'Input' AND "
                    "vessel_type_sub = 'Crude Oil Tanker' ORDER BY arrive_Time;")

    with open(csv_name, 'wb') as csv_file:
        csv_writer = csv.writer(csv_file)
        for row in db_file.db_cursor:
            use_time = Utils.convert_str_time_to_utc(str(row[10])) - Utils.convert_str_time_to_utc(str(row[9]))
            csv_writer.writerow(list(row) + [use_time])
 def start_init(self, before_row):
     output_info = None
     if before_row[TrajectoryTime.INPUT_OR_OUTPUT_INDEX] == 'Input':
         mmsi = before_row[TrajectoryTime.MMSI_INDEX]
         arrive_time = Utils.convert_str_time_to_utc(before_row[TrajectoryTime.ARRIVE_TIME_INDEX])
         output_info = [mmsi, arrive_time]
     return output_info
예제 #3
0
 def __init__(self,
              mmsi,
              imo,
              vessel_name,
              vessel_type,
              length,
              width,
              country,
              longitude,
              latitude,
              draft,
              speed,
              str_time,
              mark=0):
     self.mmsi = mmsi
     self.mark = mark
     self.imo = imo
     if vessel_name is not None:
         self.vessel_name = vessel_name.rstrip()
     else:
         self.vessel_name = None
     self.vessel_type = vessel_type
     self.length = length
     self.width = width
     self.country = country
     self.longitude = longitude
     self.latitude = latitude
     self.draft = draft
     self.speed = speed
     self.date = Utils.convert_utc_to_str_time(str(str_time))
     self.utc = Utils.convert_str_time_to_utc(str(str_time))
예제 #4
0
 def output_info_init(self, info):
     mmsi = info[TrajectoryTime.MMSI_INDEX]
     arrive_time = Utils.convert_str_time_to_utc(
         info[TrajectoryTime.ARRIVE_TIME_INDEX])
     deadweight = info[TrajectoryTime.DEADWEIGHT_INDEX]
     ship_static_info = self.fetch_ship_static_info(mmsi)
     return [str(mmsi), arrive_time, deadweight] + ship_static_info
예제 #5
0
    def deal_situation(self, info, output_saver):
        start_time = info[TrajectoryTime.START_TIME_INDEX]
        arrive_time = info[TrajectoryTime.ARRIVE_TIME_INDEX]
        line_index = info[TrajectoryTime.LINE_INDEX]
        mmsi = info[TrajectoryTime.MMSI_INDEX]
        use_time = Utils.convert_str_time_to_utc(
            arrive_time) - Utils.convert_str_time_to_utc(start_time)
        source = info[TrajectoryTime.SOURCE_INDEX]
        load_state = info[TrajectoryTime.LOAD_STATE_INDEX]
        ship_static_info = self.fetch_ship_static_info(mmsi)
        deadweight = info[TrajectoryTime.DEADWEIGHT_INDEX]
        output_saver.writerow([
            line_index, use_time, arrive_time, source, load_state, deadweight
        ] + ship_static_info)

        self.update_ship_level_info(
            str(mmsi) + "-" + str(deadweight), use_time)
    def deal_same_ship_case(self, after_row, output_info, csv_writer):
        if output_info is not None:
            next_start_time = Utils.convert_str_time_to_utc(after_row[TrajectoryTime.START_TIME_INDEX])
            output_info[1] = next_start_time - output_info[1]
            mmsi = output_info[0]
            dead_weight = after_row[TrajectoryTime.MMSI_INDEX]
            csv_writer.writerow(output_info)

            self.update_ship_level_info(mmsi, output_info[1])

        return self.start_init(after_row)
예제 #7
0
    def deal_second_situation(self, output_info, info, output_saver):
        next_arrive_time = Utils.convert_str_time_to_utc(
            info[TrajectoryTime.ARRIVE_TIME_INDEX])
        output_info[1] = next_arrive_time - output_info[1]
        mmsi = output_info[0]
        deadweight = output_info[2]
        output_saver.writerow(output_info)

        self.update_ship_level_info(
            str(mmsi) + "-" + str(deadweight), output_info[1])
        return self.output_info_init(info)