示例#1
0
    def test_get_field_without_row_column_vectors(self):
        """Test loading a field object without row and column vectors."""

        path = self.get_netcdf_path_no_row_column()

        rd = RequestDataset(path)
        driver = DriverNetcdf(rd)
        new_field = driver.get_field()
        self.assertIsNotNone(new_field.crs)
        grid = new_field.spatial.grid
        self.assertIsNone(grid.row)
        self.assertIsNone(grid.col)
        self.assertEqual(grid.name_row, 'yc')
        self.assertEqual(grid.name_col, 'xc')
        self.assertIsNone(grid._value)
        actual = np.ma.array([[[4.0, 4.0], [5.0, 5.0]], [[40.0, 50.0], [40.0, 50.0]]])
        self.assertNumpyAll(grid.value, actual)
        var = new_field.variables.first()
        self.assertEqual(var.shape, (1, 2, 1, 2, 2))
        self.assertEqual(var.value.shape, (1, 2, 1, 2, 2))

        new_field = driver.get_field()
        grid = new_field.spatial.grid
        self.assertEqual(grid.shape, (2, 2))
        self.assertIsNone(grid._value)
        sub = new_field[:, :, :, 0, 1]
        sub_grid = sub.spatial.grid
        self.assertIsInstance(sub_grid, NcSpatialGridDimension)
        self.assertEqual(sub.shape, (1, 2, 1, 1, 1))
        self.assertIsNone(sub_grid._value)
        self.assertEqual(sub_grid.shape, (1, 1))
        actual = np.ma.array([[[4.0]], [[50.0]]])
        self.assertNumpyAll(actual, sub_grid.value)
        sub_var = sub.variables.first()
        self.assertEqual(sub_var.shape, (1, 2, 1, 1, 1))
        self.assertEqual(sub_var.value.shape, (1, 2, 1, 1, 1))

        path2 = os.path.join(self.current_dir_output, 'foo2.nc')
        with self.nc_scope(path2, 'w') as ds:
            new_field.write_netcdf(ds)
        self.assertNcEqual(path, path2, ignore_attributes={'foo': ['grid_mapping']},
                           ignore_variables=['latitude_longitude'])
示例#2
0
    def test_get_field(self):
        # test updating of regrid source flag
        rd = self.test_data.get_rd('cancm4_tas')
        driver = DriverNetcdf(rd)
        field = driver.get_field()
        self.assertTrue(field._should_regrid)
        rd.regrid_source = False
        driver = DriverNetcdf(rd)
        field = driver.get_field()
        self.assertFalse(field._should_regrid)

        # test flag with an assigned coordinate system
        rd = self.test_data.get_rd('cancm4_tas')
        driver = DriverNetcdf(rd)
        field = driver.get_field()
        self.assertFalse(field._has_assigned_coordinate_system)
        rd = self.test_data.get_rd('cancm4_tas', kwds={'crs': CFWGS84()})
        driver = DriverNetcdf(rd)
        field = driver.get_field()
        self.assertTrue(field._has_assigned_coordinate_system)