def run(self, config, year, *args, **kwargs): """Runs the travel model, using appropriate info from config. """ tm_config = config["travel_model_configuration"] self.prepare_for_run(tm_config, year) project_year_dir = get_project_year_dir(tm_config, year) # year_dir = tm_config[year] #'CoreEA0511202006\\urbansim\\2001' # dir_part1,dir_part2 = os.path.split(year_dir) # while dir_part1: # dir_part1, dir_part2 = os.path.split(dir_part1) # project_year_dir = os.path.join(tm_data_dir, dir_part2) #C:/SEMCOG_baseline/CoreEA0511202006 logger.log_status('Start travel model from directory %s for year %d' % (project_year_dir, year)) #for macroname, ui_db_file in tm_config['macro']['run_semcog_travel_model'].iteritems(): #pass macroname, ui_db_file = tm_config['macro']['run_semcog_travel_model'], tm_config['ui_file'] loops = 1 logger.log_status('Running travel model ...') tcwcmd = win32api.GetShortPathName(tm_config['transcad_binary']) os.system('start /B "start TransCAD" %s' % tcwcmd) #start TransCAD in background time.sleep(1) #os.system("%s -a %s -ai '%s'" % (tcwcmd, ui_db_file, macroname)) run_transcad_macro(macroname, ui_db_file, loops) try: pass ##win32process.TerminateProcess(self.hProcess, 0) except: logger.log_warning("The code has problem to terminate the TransCAD it started.")
def create_travel_model_input_file(self, config, year, zone_set, datasets, tm_input_file_name="tm_input.txt", delimiter = '\t'): """Writes to file tm_input.txt in [travel_model_data_directory]/urbansim/[year]. """ tm_config = config['travel_model_configuration'] project_year_dir = get_project_year_dir(tm_config, year) urbansim_to_tm = tm_config['urbansim_to_tm_variable_mapping'] if 'DataTable' in urbansim_to_tm: datatable = urbansim_to_tm['DataTable'] else: datatable = "TAZ Data Table" if 'JoinField' in urbansim_to_tm: joinfield = urbansim_to_tm['JoinField'] else: joinfield = 'ID' variable_mapping = urbansim_to_tm['variable_mapping'] variable_list = [] column_name = [] for variable_pair in variable_mapping: urbansim_var, transcad_var = variable_pair variable_list.append(urbansim_var) column_name.append(transcad_var) zone_set.compute_variables(variable_list) variable_short_name = [VariableName(x).get_alias() for x in variable_list] tm_input_data_dir = os.path.join(tm_config['directory'], tm_config[year]) if not os.path.exists(tm_input_data_dir): os.makedirs(tm_input_data_dir) input_file = os.path.join(tm_input_data_dir, tm_input_file_name) logger.log_status('write travel model input file to directory: %s' % tm_input_data_dir) rows = zone_set.size() cols = len(variable_short_name) data = zeros(shape=(rows,cols)) for i in range(cols): this_column=zone_set.get_attribute(variable_short_name[i]) data[:,i] = this_column header = column_name self._update_travel_model_data_file(tm_config, data, header, input_file, datatable, joinfield, delimiter)