def test__shape_of_earth_spherical(self):
     cs = RotatedGeogCS(grid_north_pole_latitude=90.0,
                        grid_north_pole_longitude=0.0,
                        ellipsoid=GeogCS(52431.0))
     test_cube = self._make_test_cube(cs=cs)
     grid_definition_template_5(test_cube, self.mock_grib)
     self._check_key('shapeOfTheEarth', 1)
     self._check_key('scaleFactorOfRadiusOfSphericalEarth', 0)
     self._check_key('scaledValueOfRadiusOfSphericalEarth', 52431.0)
 def test__rotated_pole(self):
     cs = RotatedGeogCS(grid_north_pole_latitude=75.3,
                        grid_north_pole_longitude=54.321,
                        ellipsoid=self.default_ellipsoid)
     test_cube = self._make_test_cube(cs=cs)
     grid_definition_template_5(test_cube, self.mock_grib)
     self._check_key("latitudeOfSouthernPole", -75300000)
     self._check_key("longitudeOfSouthernPole", 234321000)
     self._check_key("angleOfRotation", 0)
 def test__grid_points(self):
     x_floats = np.array([11.0, 12.0, 167.0])
     # TODO: reduce Y to 2 points, when gribapi nx=ny limitation is gone.
     y_floats = np.array([20.0, 21.0, 22.0])
     test_cube = self._make_test_cube(x_points=x_floats, y_points=y_floats)
     grid_definition_template_5(test_cube, self.mock_grib)
     x_longs = np.array(np.round(1e6 * x_floats), dtype=int)
     y_longs = np.array(np.round(1e6 * y_floats), dtype=int)
     self._check_key("longitudes", x_longs)
     self._check_key("latitudes", y_longs)
 def test__fail_rotated_pole_nonstandard_meridian(self):
     cs = RotatedGeogCS(grid_north_pole_latitude=90.0,
                        grid_north_pole_longitude=0.0,
                        north_pole_grid_longitude=22.5,
                        ellipsoid=self.default_ellipsoid)
     test_cube = self._make_test_cube(cs=cs)
     with self.assertRaisesRegexp(
             TranslationError,
             'not yet support .* rotated prime meridian.'):
         grid_definition_template_5(test_cube, self.mock_grib)
 def test__shape_of_earth_flattened(self):
     ellipsoid = GeogCS(semi_major_axis=1456.0, semi_minor_axis=1123.0)
     cs = RotatedGeogCS(grid_north_pole_latitude=90.0,
                        grid_north_pole_longitude=0.0,
                        ellipsoid=ellipsoid)
     test_cube = self._make_test_cube(cs=cs)
     grid_definition_template_5(test_cube, self.mock_grib)
     self._check_key('shapeOfTheEarth', 7)
     self._check_key('scaleFactorOfEarthMajorAxis', 0)
     self._check_key('scaledValueOfEarthMajorAxis', 1456.0)
     self._check_key('scaleFactorOfEarthMinorAxis', 0)
     self._check_key('scaledValueOfEarthMinorAxis', 1123.0)
 def test__scanmode_reverse(self):
     test_cube = self._make_test_cube(y_points=[5.0, 2.0])
     grid_definition_template_5(test_cube, self.mock_grib)
     self._check_key('iScansPositively', 1)
     self._check_key('jScansPositively', 0)
 def test__scanmode(self):
     grid_definition_template_5(self.test_cube, self.mock_grib)
     self._check_key('iScansPositively', 1)
     self._check_key('jScansPositively', 1)
 def test__grid_shape(self):
     test_cube = self._make_test_cube(x_points=np.arange(13),
                                      y_points=np.arange(6))
     grid_definition_template_5(test_cube, self.mock_grib)
     self._check_key('Ni', 13)
     self._check_key('Nj', 6)
 def test__template_number(self):
     grid_definition_template_5(self.test_cube, self.mock_grib)
     self._check_key('gridDefinitionTemplateNumber', 5)
 def test__grid_winds_orientation(self):
     self.test_cube.rename('x_wind')
     grid_definition_template_5(self.test_cube, self.mock_grib)
     flags = self.mock_grib.keys['resolutionAndComponentFlags'] & 255
     flags_expected = 0b00001000
     self.assertEqual(flags, flags_expected)