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