def setUp(self): self.latitude_of_projection_origin = 0.0 self.longitude_of_central_meridian = 0.0 self.semi_major_axis = 6377563.396 self.semi_minor_axis = 6356256.909 self.false_easting = 0.0 self.false_northing = 0.0 self.standard_parallels = (-18., -36.) self.ellipsoid = GeogCS(self.semi_major_axis, self.semi_minor_axis) self.aea_cs = AlbersEqualArea(self.latitude_of_projection_origin, self.longitude_of_central_meridian, self.false_easting, self.false_northing, self.standard_parallels, ellipsoid=self.ellipsoid)
class Test_as_cartopy_projection(tests.IrisTest): def setUp(self): self.latitude_of_projection_origin = 0.0 self.longitude_of_central_meridian = 0.0 self.semi_major_axis = 6377563.396 self.semi_minor_axis = 6356256.909 self.false_easting = 0.0 self.false_northing = 0.0 self.standard_parallels = (-18., -36.) self.ellipsoid = GeogCS(self.semi_major_axis, self.semi_minor_axis) self.aea_cs = AlbersEqualArea(self.latitude_of_projection_origin, self.longitude_of_central_meridian, self.false_easting, self.false_northing, self.standard_parallels, ellipsoid=self.ellipsoid) def test_projection_creation(self): res = self.aea_cs.as_cartopy_projection() globe = ccrs.Globe(semimajor_axis=self.semi_major_axis, semiminor_axis=self.semi_minor_axis, ellipse=None) expected = ccrs.AlbersEqualArea(self.latitude_of_projection_origin, self.longitude_of_central_meridian, self.false_easting, self.false_northing, self.standard_parallels, globe=globe) self.assertEqual(res, expected)
class Test_as_cartopy_projection(tests.IrisTest): def setUp(self): self.latitude_of_projection_origin = 0.0 self.longitude_of_central_meridian = 0.0 self.semi_major_axis = 6377563.396 self.semi_minor_axis = 6356256.909 self.false_easting = 0.0 self.false_northing = 0.0 self.standard_parallels = (-18., -36.) self.ellipsoid = GeogCS(self.semi_major_axis, self.semi_minor_axis) self.aea_cs = AlbersEqualArea( self.latitude_of_projection_origin, self.longitude_of_central_meridian, self.false_easting, self.false_northing, self.standard_parallels, ellipsoid=self.ellipsoid) def test_projection_creation(self): res = self.aea_cs.as_cartopy_projection() globe = ccrs.Globe(semimajor_axis=self.semi_major_axis, semiminor_axis=self.semi_minor_axis, ellipse=None) expected = ccrs.AlbersEqualArea( self.latitude_of_projection_origin, self.longitude_of_central_meridian, self.false_easting, self.false_northing, self.standard_parallels, globe=globe) self.assertEqual(res, expected)
def test_optional_args_None(self): # Check expected defaults with optional args=None. crs = AlbersEqualArea( longitude_of_central_meridian=None, latitude_of_projection_origin=None, standard_parallels=None, false_easting=None, false_northing=None, ) self._check_crs_defaults(crs)
def test_coord_system_not_supported(self): # Test an unsupported grid - let's choose Albers Equal Area. x_points = np.arange(3) y_points = np.arange(3) coord_units = '1' cs = AlbersEqualArea(ellipsoid=self.ellipsoid) test_cube = self._make_test_cube(cs, x_points, y_points, coord_units) exp_name = cs.grid_mapping_name.replace('_', ' ').title() exp_emsg = 'not supported for coordinate system {!r}'.format(exp_name) with self.assertRaisesRegexp(ValueError, exp_emsg): grid_definition_section(test_cube, self.mock_grib)
def _test(self, inverse_flattening=False, no_optionals=False): if no_optionals: # Most properties are optional for this system. gridvar_props = {} # Setup all the expected default values test_lat = 0 test_lon = 0 test_easting = 0 test_northing = 0 test_parallels = (20, 50) else: # Choose test values and setup corresponding named properties. test_lat = -35 test_lon = 175 test_easting = -100 test_northing = 200 test_parallels = (-27, 3) gridvar_props = dict( latitude_of_projection_origin=test_lat, longitude_of_central_meridian=test_lon, false_easting=test_easting, false_northing=test_northing, standard_parallel=test_parallels, ) # Add ellipsoid args. gridvar_props["semi_major_axis"] = 6377563.396 if inverse_flattening: gridvar_props["inverse_flattening"] = 299.3249646 expected_ellipsoid = iris.coord_systems.GeogCS( 6377563.396, inverse_flattening=299.3249646) else: gridvar_props["semi_minor_axis"] = 6356256.909 expected_ellipsoid = iris.coord_systems.GeogCS( 6377563.396, 6356256.909) cf_grid_var = mock.Mock(spec=[], **gridvar_props) cs = build_albers_equal_area_coordinate_system(None, cf_grid_var) expected = AlbersEqualArea( latitude_of_projection_origin=test_lat, longitude_of_central_meridian=test_lon, false_easting=test_easting, false_northing=test_northing, standard_parallels=test_parallels, ellipsoid=expected_ellipsoid, ) self.assertEqual(cs, expected)
def setUp(self): self.latitude_of_projection_origin = 0.0 self.longitude_of_central_meridian = 0.0 self.semi_major_axis = 6377563.396 self.semi_minor_axis = 6356256.909 self.false_easting = 0.0 self.false_northing = 0.0 self.standard_parallels = (-18., -36.) self.ellipsoid = GeogCS(self.semi_major_axis, self.semi_minor_axis) self.aea_cs = AlbersEqualArea( self.latitude_of_projection_origin, self.longitude_of_central_meridian, self.false_easting, self.false_northing, self.standard_parallels, ellipsoid=self.ellipsoid)
def test_set_optional_args(self): # Check that setting optional arguments works as expected. crs = AlbersEqualArea( longitude_of_central_meridian=123, latitude_of_projection_origin=-17, false_easting=100, false_northing=-200, standard_parallels=(-37, 21.4), ) self.assertEqualAndKind(crs.longitude_of_central_meridian, 123.0) self.assertEqualAndKind(crs.latitude_of_projection_origin, -17.0) self.assertEqualAndKind(crs.false_easting, 100.0) self.assertEqualAndKind(crs.false_northing, -200.0) self.assertEqual(len(crs.standard_parallels), 2) self.assertEqualAndKind(crs.standard_parallels[0], -37.0) self.assertEqualAndKind(crs.standard_parallels[1], 21.4)
class Test_as_cartopy_crs(tests.IrisTest): def setUp(self): self.latitude_of_projection_origin = 0.0 self.longitude_of_central_meridian = 0.0 self.semi_major_axis = 6377563.396 self.semi_minor_axis = 6356256.909 self.false_easting = 0.0 self.false_northing = 0.0 self.standard_parallels = (-18.0, -36.0) self.ellipsoid = GeogCS(self.semi_major_axis, self.semi_minor_axis) self.aea_cs = AlbersEqualArea( self.latitude_of_projection_origin, self.longitude_of_central_meridian, self.false_easting, self.false_northing, self.standard_parallels, ellipsoid=self.ellipsoid, ) def test_crs_creation(self): res = self.aea_cs.as_cartopy_crs() globe = ccrs.Globe( semimajor_axis=self.semi_major_axis, semiminor_axis=self.semi_minor_axis, ellipse=None, ) expected = ccrs.AlbersEqualArea( self.longitude_of_central_meridian, self.latitude_of_projection_origin, self.false_easting, self.false_northing, self.standard_parallels, globe=globe, ) self.assertEqual(res, expected) def test_fail_too_few_parallels(self): emsg = "parallels" with self.assertRaisesRegex(ValueError, emsg): AlbersEqualArea(standard_parallels=()) def test_fail_too_many_parallels(self): emsg = "parallels" with self.assertRaisesRegex(ValueError, emsg): AlbersEqualArea(standard_parallels=(1, 2, 3))
def test_aea_cs(self): coord_system = AlbersEqualArea(latitude_of_projection_origin=52, longitude_of_central_meridian=10, false_easting=100, false_northing=200, standard_parallels=(38, 50), ellipsoid=GeogCS( 6377563.396, 6356256.909)) expected = { 'grid_mapping_name': b'albers_conical_equal_area', 'latitude_of_projection_origin': 52, 'longitude_of_central_meridian': 10, 'false_easting': 100, 'false_northing': 200, 'standard_parallel': (38, 50), 'semi_major_axis': 6377563.396, 'semi_minor_axis': 6356256.909, 'longitude_of_prime_meridian': 0, } self._test(coord_system, expected)
def test_aea_cs(self): coord_system = AlbersEqualArea( latitude_of_projection_origin=52, longitude_of_central_meridian=10, false_easting=100, false_northing=200, standard_parallels=(38, 50), ellipsoid=GeogCS(6377563.396, 6356256.909), ) expected = { "grid_mapping_name": b"albers_conical_equal_area", "latitude_of_projection_origin": 52, "longitude_of_central_meridian": 10, "false_easting": 100, "false_northing": 200, "standard_parallel": (38, 50), "semi_major_axis": 6377563.396, "semi_minor_axis": 6356256.909, "longitude_of_prime_meridian": 0, } self._test(coord_system, expected)
def test_fail_too_many_parallels(self): emsg = "parallels" with self.assertRaisesRegex(ValueError, emsg): AlbersEqualArea(standard_parallels=(1, 2, 3))
def test_no_optional_args(self): # Check expected defaults with no optional args. crs = AlbersEqualArea() self._check_crs_defaults(crs)