コード例 #1
0
    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.")
コード例 #2
0
    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)