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'])
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)