Пример #1
0
    def test_create_tripgen_travel_model_input_file(self):

        in_storage = StorageFactory().get_storage(
            'sql_storage', storage_location=self.database)

        sc = SessionConfiguration(new_instance=True,
                                  package_order=['urbansim', 'psrc'],
                                  in_storage=in_storage)
        dataset_pool = sc.get_dataset_pool()
        #zone_set = dataset_pool.get_dataset('zone')
        #hh_set = dataset_pool.get_dataset('household')
        #job_set = dataset_pool.get_dataset('job')
        #taz_col_set = dataset_pool.get_dataset('constant_taz_column')

        TravelModelInputFileWriter().run(self.tempdir_path, 2000, dataset_pool)

        logger.log_status('tazdata path: ', self.tempdir_path)
        # expected values - data format: {zone:{column_value:value}}
        expected_tazdata = {
            1: {
                101: 19.9,
                102: 2.,
                103: 0.,
                104: 1.,
                105: 0.,
                106: 3.,
                107: 11.,
                109: 1.,
                110: 0.,
                111: 0.,
                112: 0.,
                113: 0.,
                114: 0.,
                115: 0.,
                116: 0.,
                117: 0.,
                118: 0.,
                119: 0.,
                120: 2.,
                121: 42.,
                122: 0.,
                123: 0.,
                124: 11.
            },
            2: {
                101: 29.9,
                102: 0.,
                103: 2.,
                104: 1.,
                105: 3.,
                106: 1.,
                107: 3.,
                109: 0.,
                110: 0.,
                111: 0.,
                112: 0.,
                113: 3.,
                114: 0.,
                115: 0.,
                116: 0.,
                117: 0.,
                118: 1.,
                119: 1.,
                120: 0.,
                121: 241.,
                122: 0.,
                123: 0.,
                124: 3.
            }
        }

        # get real data from file
        real_tazdata = {1: {}, 2: {}}
        tazdata_file = open(
            os.path.join(self.tempdir_path, 'tripgen', 'inputtg',
                         'tazdata.ma2'), 'r')
        for a_line in tazdata_file.readlines():
            if a_line[0].isspace():
                numbers = a_line.replace(
                    ':', ' ').split()  # data line format:  1   101:  15.5
                zone_id = int(numbers[0])
                column_var = int(numbers[1])
                value = float(numbers[2])
                if value != -1:
                    real_tazdata[zone_id][column_var] = value

        for zone in expected_tazdata.keys():
            for col_var in expected_tazdata[zone].keys():
                self.assertAlmostEqual(real_tazdata[zone][col_var], expected_tazdata[zone][col_var], 3,\
                                       "zone %d, column variable %d did not match up."%(zone, col_var))