Exemplo n.º 1
0
    def tmp_skip_test_gridcell_unrolling_changes_development_type_id(self):
        """Does unrolling update development_type_id?
        """
        # Force one grid cell to be "vacant", so can check that development_type_id changes.
        cache_directory = SimulationState().get_cache_directory()
        flt_directory = os.path.join(cache_directory, str(self.base_year))
        development_event_history = DatasetFactory().get_dataset(
            'development_event_history',
            package='urbansim',
            subdir='datasets',
            arguments={
                'in_storage':
                StorageFactory().get_storage('flt_storage',
                                             storage_location=flt_directory)
            })
        changed_grid_id = 10123
        new_row = {
            'grid_id': array([changed_grid_id]),
            'scheduled_year': array([self.base_year - 1]),
            'residential_units': array([1000]),
            'commercial_sqft': array([10000000]),
            'industrial_sfft': array([10000000]),
            'governmental_sqft': array([10000000]),
            'starting_development_type_id': array([1000]),
        }
        development_event_history.add_elements(new_row,
                                               require_all_attributes=False)
        development_event_history.flush_dataset()

        gridcells = SessionConfiguration().get_dataset_from_pool('gridcell')
        development_event_history = SessionConfiguration(
        ).get_dataset_from_pool('development_event_history')
        unroller = UnrollGridcells()
        unroller.unroll_gridcells_to_cache(gridcells,
                                           development_event_history,
                                           cache_directory, self.base_year)

        cache_directory = SimulationState().get_cache_directory()
        self.assertEqual(self.temp_dir, os.path.split(cache_directory)[0])

        gridcell = {}
        for year in [1978, 1979]:
            flt_directory = os.path.join(cache_directory, str(year))
            gridcell[year] = DatasetFactory().get_dataset(
                'gridcell',
                package='urbansim',
                subdir='datasets',
                arguments={
                    'in_storage':
                    StorageFactory().get_storage(
                        'flt_storage', storage_location=flt_directory)
                })
        self.assertEqual(
            gridcell[1978].get_attribute_by_id('development_type_id',
                                               changed_grid_id), 1000)
        self.assertNotEqual(
            gridcell[1979].get_attribute_by_id('development_type_id',
                                               changed_grid_id),
            gridcell[1978].get_attribute_by_id('development_type_id',
                                               changed_grid_id))
    def prepare_data_before_baseyear(self, cache_directory, base_year,
                                     creating_baseyear_cache_configuration):
        if creating_baseyear_cache_configuration.unroll_gridcells:
            sc = SessionConfiguration()
            gridcells = sc.get_dataset_from_pool('gridcell')
            development_event_history = sc.get_dataset_from_pool(
                'development_event_history')

            UnrollGridcells().unroll_gridcells_to_cache(
                gridcells, development_event_history, cache_directory,
                base_year)
            # If you want to unroll the gridcells using your buildings table, exchange the
            # previous two calls by the two following ones.
            #buildings = sc.get_dataset_from_pool('building')
            #UnrollGridcells().unroll_gridcells_to_cache_from_buildings(gridcells, buildings,
            #                                            cache_directory, base_year)

        attribute_cache = AttributeCache()
        self._initialize_previous_years(attribute_cache, base_year,
                                        creating_baseyear_cache_configuration)
Exemplo n.º 3
0
    def test_gridcell_unrolling(self):
        """Checks that the unrolling of the gridcells by CacheScenarioDatabase worked correctly.
        """
        cache_directory = SimulationState().get_cache_directory()
        gridcells = SessionConfiguration().get_dataset_from_pool('gridcell')
        development_event_history = SessionConfiguration(
        ).get_dataset_from_pool('development_event_history')
        unroller = UnrollGridcells()
        unroller.unroll_gridcells_to_cache(gridcells,
                                           development_event_history,
                                           cache_directory, self.base_year)

        self.assertEqual(self.temp_dir, os.path.split(cache_directory)[0])

        gridcell = {}
        for year in [1976, 1977, 1979, 1980]:
            #current_year = SimulationState().get_current_time()
            #SimulationState().set_current_time(year)
            #gridcell[year] = SessionConfiguration().get_dataset_from_pool('gridcell')
            #SimulationState().set_current_time(current_year)
            flt_directory = os.path.join(cache_directory, str(year))
            gridcell[year] = DatasetFactory().get_dataset(
                'gridcell',
                package='urbansim',
                subdir='datasets',
                arguments={
                    'in_storage':
                    StorageFactory().get_storage(
                        'flt_storage', storage_location=flt_directory)
                })
        diff = gridcell[1980].get_attribute('residential_units') - gridcell[
            1979].get_attribute('residential_units')
        self.assertEqual(1, sum(diff))
        diff = gridcell[1977].get_attribute('commercial_sqft') - gridcell[
            1976].get_attribute('commercial_sqft')
        self.assertEqual(2255 + 199 + 332 + 2785, sum(diff))