Beispiel #1
0
 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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
 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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
 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)
Beispiel #8
0
    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)
Beispiel #9
0
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))
Beispiel #10
0
 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)
Beispiel #11
0
 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)
Beispiel #12
0
 def test_fail_too_many_parallels(self):
     emsg = "parallels"
     with self.assertRaisesRegex(ValueError, emsg):
         AlbersEqualArea(standard_parallels=(1, 2, 3))
Beispiel #13
0
 def test_no_optional_args(self):
     # Check expected defaults with no optional args.
     crs = AlbersEqualArea()
     self._check_crs_defaults(crs)