diff --git a/docs/iris/example_code/graphics/custom_file_loading.py b/docs/iris/example_code/graphics/custom_file_loading.py
index aac3efab23..9e96ed52be 100644
--- a/docs/iris/example_code/graphics/custom_file_loading.py
+++ b/docs/iris/example_code/graphics/custom_file_loading.py
@@ -164,10 +164,7 @@ def NAME_to_cube(filenames, callback):
cube.add_aux_coord(time_coord)
# build a coordinate system which can be referenced by latitude and longitude coordinates
- lat_lon_coord_system = icoord_systems.LatLonCS( icoord_systems.SpheroidDatum("spherical", 6371229.0, flattening=0.0, units='m'),
- icoord_systems.PrimeMeridian(label="Greenwich", value=0.0),
- n_pole=icoord_systems.GeoPosition(90, 0), reference_longitude=0.0
- )
+ lat_lon_coord_system = icoord_systems.GeogCS(6371229)
# build regular latitude and longitude coordinates which have bounds
start = header['X grid origin'] + header['X grid resolution']
diff --git a/docs/iris/src/userguide/cube_statistics.rst b/docs/iris/src/userguide/cube_statistics.rst
index 83668869a1..abcb089db1 100644
--- a/docs/iris/src/userguide/cube_statistics.rst
+++ b/docs/iris/src/userguide/cube_statistics.rst
@@ -108,7 +108,7 @@ These areas can now be passed to the ``collapsed`` method as weights:
Scalar coordinates:
grid_latitude: Cell(point=1.5145501, bound=(0.14430022, 2.8848)) degrees
grid_longitude: Cell(point=358.74948, bound=(357.49399, 360.00497)) degrees
- surface_altitude: Cell(point=399.625, bound=(-14.0, 813.25)) m
+ surface_altitude: Cell(point=399.625, bound=(-14.000001, 813.25)) m
Attributes:
STASH: m01s00i004
history: Mean of air_potential_temperature over grid_longitude, grid_latitude
diff --git a/lib/iris/analysis/calculus.py b/lib/iris/analysis/calculus.py
index 8b4decb843..2fa2efd792 100644
--- a/lib/iris/analysis/calculus.py
+++ b/lib/iris/analysis/calculus.py
@@ -412,7 +412,7 @@ def curl(i_cube, j_cube, k_cube=None, ignore=None, update_history=True):
Return (i_cmpt_curl_cube, j_cmpt_curl_cube, k_cmpt_curl_cube)
- The calculation of curl is dependent on the type of :func:`iris.coord_systems.HorizontalCS` in the cube:
+ The calculation of curl is dependent on the type of :func:`iris.coord_systems.CoordSystem` in the cube:
Cartesian curl
@@ -440,16 +440,6 @@ def curl(i_cube, j_cube, k_cube=None, ignore=None, update_history=True):
ignore = None
warnings.warn('The ignore keyword to iris.analysis.calculus.curl is deprecated, ignoring is now done automatically.')
- # get the radius of the earth
- latlon_cs = i_cube.coord_system(iris.coord_systems.LatLonCS)
- if latlon_cs and latlon_cs.datum.is_spherical():
- r = latlon_cs.datum.semi_major_axis
- r_unit = latlon_cs.datum.units
- else:
- r = iris.analysis.cartography.DEFAULT_SPHERICAL_EARTH_RADIUS
- r_unit = iris.analysis.cartography.DEFAULT_SPHERICAL_EARTH_RADIUS_UNIT
-
-
# Get the vector quantity names (i.e. ['easterly', 'northerly', 'vertical'])
vector_quantity_names, phenomenon_name = spatial_vectors_with_phenom_name(i_cube, j_cube, k_cube)
@@ -478,11 +468,11 @@ def curl(i_cube, j_cube, k_cube=None, ignore=None, update_history=True):
y_dim = i_cube.coord_dims(y_coord)[0]
- horiz_cs = i_cube.coord_system('HorizontalCS')
- if horiz_cs is None:
- raise ValueError('Could not get the horizontal CS of the cubes provided.')
+ horiz_cs = i_cube.coord_system('CoordSystem')
- if horiz_cs.cs_type == iris.coord_systems.CARTESIAN_CS:
+ # Planar (non spherical) coords?
+ ellipsoidal = isinstance(horiz_cs, (iris.coord_systems.GeogCS, iris.coord_systems.RotatedGeogCS))
+ if not ellipsoidal:
# TODO Implement some mechanism for conforming to a common grid
dj_dx = _curl_differentiate(j_cube, x_coord)
@@ -525,17 +515,32 @@ def curl(i_cube, j_cube, k_cube=None, ignore=None, update_history=True):
result = [i_cmpt, j_cmpt, k_cmpt]
- elif horiz_cs.cs_type == iris.coord_systems.SPHERICAL_CS:
+ # Spherical coords (GeogCS or RotatedGeogCS).
+ else:
# A_\phi = i ; A_\theta = j ; A_\r = k
# theta = lat ; phi = long ;
# r_cmpt = 1/ ( r * cos(lat) ) * ( d/dtheta ( i_cube * sin( lat ) ) - d_j_cube_dphi )
# phi_cmpt = 1/r * ( d/dr (r * j_cube) - d_k_cube_dtheta)
# theta_cmpt = 1/r * ( 1/cos(lat) * d_k_cube_dphi - d/dr (r * i_cube)
- if not horiz_cs.datum.is_spherical():
- raise NotImplementedError('Cannot take the curl over a non-spherical datum.')
-
if y_coord.name() != 'latitude' or x_coord.name() != 'longitude':
raise ValueError('Expecting latitude as the y coord and longitude as the x coord for spherical curl.')
+
+ # Get the radius of the earth - and check for sphericity
+ ellipsoid = horiz_cs
+ if isinstance(horiz_cs, iris.coord_systems.RotatedGeogCS):
+ ellipsoid = horiz_cs.ellipsoid
+ if ellipsoid:
+ # TODO: Add a test for this
+ r = ellipsoid.semi_major_axis
+ r_unit = iris.unit.Unit("m")
+ spherical = (ellipsoid.inverse_flattening == 0.0)
+ else:
+ r = iris.analysis.cartography.DEFAULT_SPHERICAL_EARTH_RADIUS
+ r_unit = iris.analysis.cartography.DEFAULT_SPHERICAL_EARTH_RADIUS_UNIT
+ spherical = True
+
+ if not spherical:
+ raise ValueError("Cannot take the curl over a non-spherical ellipsoid.")
lon_coord = x_coord.unit_converted('radians')
lat_coord = y_coord.unit_converted('radians')
@@ -589,11 +594,7 @@ def curl(i_cube, j_cube, k_cube=None, ignore=None, update_history=True):
d_k_cube_dphi = dri_dr = None
result = [phi_cmpt, theta_cmpt, r_cmpt]
-
- else:
- raise ValueError("Horizontal coord system neither cartesian nor spherical spheroid: %s %s (%s)" \
- % (type(horiz_cs), horiz_cs.cs_type, horiz_cs.datum))
-
+
for direction, cube in zip(vector_quantity_names, result):
if cube is not None:
cube.rename('%s curl of %s' % (direction, phenomenon_name))
diff --git a/lib/iris/analysis/cartography.py b/lib/iris/analysis/cartography.py
index 46e909c15c..d4093caa3f 100644
--- a/lib/iris/analysis/cartography.py
+++ b/lib/iris/analysis/cartography.py
@@ -32,9 +32,10 @@
import iris.unit
-#This value is used as a fall-back if the cube does not define the earth
-DEFAULT_SPHERICAL_EARTH_RADIUS = 6367.47
-DEFAULT_SPHERICAL_EARTH_RADIUS_UNIT = iris.unit.Unit('kilometres')
+# This value is used as a fall-back if the cube does not define the earth
+DEFAULT_SPHERICAL_EARTH_RADIUS = 6367470
+# TODO: This should not be necessary, as CF is always in meters
+DEFAULT_SPHERICAL_EARTH_RADIUS_UNIT = iris.unit.Unit('m')
def wrap_lons(lons, base, period):
@@ -108,9 +109,14 @@ def lat_lon_range(cube, mode=None):
used in the min/max calculation. (Must be one of iris.coords.POINT_MODE or iris.coords.BOUND_MODE)
"""
+ # Helpful error if we have an inappropriate CoordSystem
+ cs = cube.coord_system("CoordSystem")
+ if cs is not None and not isinstance(cs, (iris.coord_systems.GeogCS, iris.coord_systems.RotatedGeogCS)):
+ raise ValueError("Latlon coords cannot be found with {0}.".format(type(cs)))
+
# get the lat and lon coords (might have "grid_" at the start of the name, if rotated).
lat_coord, lon_coord = _get_lat_lon_coords(cube)
- cs = cube.coord_system('LatLonCS')
+ cs = cube.coord_system('CoordSystem')
if lon_coord.has_bounds() != lat_coord.has_bounds():
raise ValueError('Cannot get the range of the latitude and longitude coordinates if they do '
@@ -123,7 +129,7 @@ def lat_lon_range(cube, mode=None):
else:
_mode = iris.coords.POINT_MODE
- if cs.has_rotated_pole():
+ if isinstance(cs, iris.coord_systems.RotatedGeogCS):
if _mode == iris.coords.POINT_MODE:
lats, lons = get_lat_lon_grids(cube)
else:
@@ -154,7 +160,7 @@ def get_lat_lon_grids(cube):
"""
# get the lat and lon coords (might have "grid_" at the start of the name, if rotated).
lat_coord, lon_coord = _get_lat_lon_coords(cube)
- cs = cube.coord_system('LatLonCS')
+ cs = cube.coord_system('CoordSystem')
if lon_coord.units != 'degrees':
lon_coord = lon_coord.unit_converted('degrees')
@@ -168,8 +174,8 @@ def get_lat_lon_grids(cube):
lons, lats = numpy.meshgrid(lons, lats)
# if the pole was rotated, then un-rotate it
- if cs.has_rotated_pole():
- lons, lats = unrotate_pole(lons, lats, cs.n_pole.longitude, cs.n_pole.latitude)
+ if isinstance(cs, iris.coord_systems.RotatedGeogCS):
+ lons, lats = unrotate_pole(lons, lats, cs.grid_north_pole_longitude, cs.grid_north_pole_latitude)
return (lats, lons)
@@ -186,7 +192,7 @@ def get_lat_lon_contiguous_bounded_grids(cube):
"""
# get the lat and lon coords (might have "grid_" at the start of the name, if rotated).
lat_coord, lon_coord = _get_lat_lon_coords(cube)
- cs = cube.coord_system('LatLonCS')
+ cs = cube.coord_system('CoordSystem')
if lon_coord.units != 'degrees':
lon_coord = lon_coord.unit_converted('degrees')
@@ -196,8 +202,8 @@ def get_lat_lon_contiguous_bounded_grids(cube):
lons = lon_coord.contiguous_bounds()
lats = lat_coord.contiguous_bounds()
lons, lats = numpy.meshgrid(lons, lats)
- if cs.has_rotated_pole():
- lons, lats = iris.analysis.cartography.unrotate_pole(lons, lats, cs.n_pole.longitude, cs.n_pole.latitude)
+ if isinstance(cs, iris.coord_systems.RotatedGeogCS):
+ lons, lats = iris.analysis.cartography.unrotate_pole(lons, lats, cs.grid_north_pole_longitude, cs.grid_north_pole_latitude)
return (lats, lons)
@@ -254,9 +260,15 @@ def area_weights(cube):
"""
# Get the radius of the earth
- latlon_cs = cube.coord_system(iris.coord_systems.LatLonCS)
- if latlon_cs and latlon_cs.datum.is_spherical():
- radius_of_earth = latlon_cs.datum.semi_major_axis
+ cs = cube.coord_system("CoordSystem")
+ if isinstance(cs, iris.coord_systems.GeogCS):
+ if cs.inverse_flattening != 0.0:
+ warnings.warn("Assuming spherical earth from ellipsoid.")
+ radius_of_earth = cs.semi_major_axis
+ elif isinstance(cs, iris.coord_systems.RotatedGeogCS) and cs.ellipsoid is not None:
+ if cs.ellipsoid.inverse_flattening != 0.0:
+ warnings.warn("Assuming spherical earth from ellipsoid.")
+ radius_of_earth = cs.ellipsoid.semi_major_axis
else:
warnings.warn("Using DEFAULT_SPHERICAL_EARTH_RADIUS.")
radius_of_earth = DEFAULT_SPHERICAL_EARTH_RADIUS
diff --git a/lib/iris/analysis/interpolate.py b/lib/iris/analysis/interpolate.py
index dd8fa62bb8..d8e468f701 100644
--- a/lib/iris/analysis/interpolate.py
+++ b/lib/iris/analysis/interpolate.py
@@ -358,7 +358,7 @@ def regrid(source_cube, grid_cube, mode='bilinear', **kwargs):
by the grid_cube.
Fundamental input requirements:
- 1) Both cubes must have a HorizontalCS.
+ 1) Both cubes must have a CoordSystem.
2) The source 'x' and 'y' coordinates must not share data dimensions with any other coordinates.
In addition, the algorithm currently used requires:
@@ -386,12 +386,12 @@ def regrid(source_cube, grid_cube, mode='bilinear', **kwargs):
"""
# Condition 1
- source_cs = source_cube.coord_system(iris.coord_systems.HorizontalCS)
- grid_cs = grid_cube.coord_system(iris.coord_systems.HorizontalCS)
- if source_cs is None or grid_cs is None:
- raise ValueError("The source and grid cubes must contain a HorizontalCS.")
+ source_cs = source_cube.coord_system(iris.coord_systems.CoordSystem)
+ grid_cs = grid_cube.coord_system(iris.coord_systems.CoordSystem)
+ if (source_cs is None) != (grid_cs is None):
+ raise ValueError("The source and grid cubes must both have a CoordSystem or both have None.")
- # Condition 2: We can only have one x coordinate and one y coordinate with the source HorizontalCS, and those coordinates
+ # Condition 2: We can only have one x coordinate and one y coordinate with the source CoordSystem, and those coordinates
# must be the only ones occupying their respective dimension
source_x = source_cube.coord(axis='x', coord_system=source_cs)
source_y = source_cube.coord(axis='y', coord_system=source_cs)
diff --git a/lib/iris/coord_systems.py b/lib/iris/coord_systems.py
index f5b8993e10..edbee82f44 100644
--- a/lib/iris/coord_systems.py
+++ b/lib/iris/coord_systems.py
@@ -20,157 +20,39 @@
"""
from __future__ import division
-from abc import ABCMeta
import numpy
-import iris.cube
-import iris.exceptions
-import iris.util
-
-
-# Define Horizontal coordinate type constants
-CARTESIAN_CS = 'cartesian'
-SPHERICAL_CS = 'spherical'
-# maintain a tuple of valid CS types
-_VALID_CS_TYPES = (CARTESIAN_CS, SPHERICAL_CS)
-
-
-USE_OLD_XML = True
-
-
-class SpheroidDatum(iris.util._OrderedHashable):
- """Defines the shape of the Earth."""
-
- # Declare the attribute names relevant to the _OrderedHashable behaviour.
- _names = ('label', 'semi_major_axis', 'semi_minor_axis', 'flattening', 'units')
-
- label = None
- """The name of this spheroid definition."""
-
- semi_major_axis = None
- """The length of the semi-major axis, :math:`a`."""
-
- semi_minor_axis = None
- """The length of the semi-minor axis, :math:`b`."""
-
- flattening = None
- """The flattening, :math:`f`, or ellipticity. Defined as :math:`f = 1-\\frac{b}{a}`."""
-
- units = None
- """The unit of measure for the axes."""
-
- def __init__(self, label='undefined spheroid', semi_major_axis=None, semi_minor_axis=None,
- flattening=None, units='no unit'):
- """
- If all three of semi_major_axis, semi_minor_axis, and flattening are None then
- it defaults to a perfect sphere using the radius 6371229m.
-
- Otherwise, at least two of semi_major_axis, semi_minor_axis, and flattening
- must be given.
-
- """
- #if radius/flattening are not specified, use defaults.
- if (semi_major_axis is None) and (semi_minor_axis is None) and (flattening is None):
- #Use the UM radius from http://fcm2/projects/UM/browser/UM/trunk/src/constants/earth_constants_mod.F90
- semi_major_axis = 6371229.0
- semi_minor_axis = 6371229.0
- flattening = 0.0
- units = iris.unit.Unit('m')
-
- #calculate the missing element (if any) from the major/minor/flattening triplet
- else:
- if semi_major_axis is None:
- if semi_minor_axis is None or flattening is None:
- raise ValueError("Must have at least two of the major/minor/flattening triplet")
- semi_major_axis = semi_minor_axis / (1.0-flattening)
-
- elif semi_minor_axis is None:
- if semi_major_axis is None or flattening is None:
- raise ValueError("Must have at least two of the major/minor/flattening triplet")
- semi_minor_axis = (1.0-flattening) * semi_major_axis
-
- elif flattening is None:
- if semi_major_axis is None or semi_minor_axis is None:
- raise ValueError("Must have at least two of the major/minor/flattening triplet")
- flattening = 1.0 - (semi_minor_axis/semi_major_axis)
-
- self._init(label, semi_major_axis, semi_minor_axis, flattening, units)
-
- def is_spherical(self):
- """Returns whether this datum describes a perfect sphere."""
- return self.flattening == 0.0
-
-
-class PrimeMeridian(iris.util._OrderedHashable):
- """Defines the origin of the coordinate system."""
-
- # Declare the attribute names relevant to the _OrderedHashable behaviour.
- _names = ('label', 'value')
-
- label = None
- """The name of the specific location which defines the reference point."""
-
- value = None
- """The longitude of the reference point."""
-
- def __init__(self, label="Greenwich", value=0.0):
- """ """
- self._init(label, value)
-
-
-class GeoPosition(iris.util._OrderedHashable):
- """Defines a geographic coordinate latitude/longitude pair."""
-
- # Declare the attribute names relevant to the _OrderedHashable behaviour.
- _names = ('latitude', 'longitude')
-
- latitude = None
- """The latitude of the position in degrees."""
-
- longitude = None
- """The longitude of the position in degrees."""
+import iris
+import iris.unit
class CoordSystem(object):
- """Abstract base class for coordinate systems.
-
- A Coord holds an optional CoordSystem, which can be used to indicate
- several Coords are defined to be 'in the same system'.
- E.g lat and lon coords will hold a shared or identical LatLonCS.
"""
- __metaclass__ = ABCMeta
+ Abstract base class for coordinate systems.
+
+ """
+ grid_mapping_name = None
def __eq__(self, other):
return self.__class__ == other.__class__ and self.__dict__ == other.__dict__
-
+
def __ne__(self, other):
# Must supply __ne__, Python does not defer to __eq__ for negative equality
return not (self == other)
- def assert_valid(self):
- """Check the CS is in a valid state (else raises error)."""
- pass
-
- def xml_element(self, doc):
+ def xml_element(self, doc, attrs=None):
"""Default behaviour for coord systems."""
+ # attrs - optional list of (k,v) items, used for alternate output
+
xml_element_name = type(self).__name__
# lower case the first char
xml_element_name = xml_element_name.replace(xml_element_name[0], xml_element_name[0].lower(), 1)
coord_system_xml_element = doc.createElement(xml_element_name)
- attrs = []
- for k, v in self.__dict__.iteritems():
- if isinstance(v, iris.cube.Cube):
- attrs.append([k, 'defined'])
- else:
- if USE_OLD_XML:
- v = str(v).replace("units", "unit")
- attrs.append([k, v])
- else:
- attrs.append([k, v])
-
+ if attrs is None:
+ attrs = self.__dict__.items()
attrs.sort(key=lambda attr: attr[0])
for name, value in attrs:
@@ -178,179 +60,248 @@ def xml_element(self, doc):
return coord_system_xml_element
+
+class GeogCS(CoordSystem):
+ """A geographic (ellipsoidal) coordinate system, defined by the shape of the Earth and a prime meridian."""
-class HorizontalCS(CoordSystem):
- """Abstract CoordSystem for holding horizontal grid information."""
+ grid_mapping_name = "latitude_longitude"
+
+ def __init__(self, semi_major_axis=None, semi_minor_axis=None, inverse_flattening=None,
+ longitude_of_prime_meridian=0):
+ """
+ Creates a new GeogCS.
+
+ Kwargs:
+
+ * semi_major_axis - of ellipsoid in meters
+ * semi_minor_axis - of ellipsoid in meters
+ * inverse_flattening - of ellipsoid
+ * longitude_of_prime_meridian - Can be used to specify the prime meridian on the ellipsoid
+ in degrees. Default = 0.
+
+ If just semi_major_axis is set, with no semi_minor_axis or inverse_flattening, then
+ a perfect sphere is created from the given radius.
+
+ If just two of semi_major_axis, semi_minor_axis, and inverse_flattening are given
+ the missing element is calulated from the formula:
+ :math:`flattening = (major - minor) / major`
+
+ Currently, Iris will not allow over-specification (all three ellipsoid paramaters).
+
+ Examples::
+
+ cs = GeogCS(6371229)
+ pp_cs = GeogCS(iris.fileformats.pp.EARTH_RADIUS)
+ airy1830 = GeogCS(semi_major_axis=6377563.396, semi_minor_axis=6356256.909)
+ airy1830 = GeogCS(semi_major_axis=6377563.396, inverse_flattening=299.3249646)
+ custom_cs = GeogCS(6400000, 6300000)
+
+ """
+ # No ellipsoid specified?
+ if (semi_major_axis is None) and (semi_minor_axis is None) and (inverse_flattening is None): # 0 0 0
+ raise ValueError("No ellipsoid specified")
+
+ # Ellipsoid over-specified?
+ if (semi_major_axis is not None) and (semi_minor_axis is not None) and (inverse_flattening is not None): # 1 1 1
+ raise ValueError("Ellipsoid is overspecified")
+
+ # Perfect sphere (semi_major_axis only)?
+ elif semi_major_axis is not None and (semi_minor_axis is None and inverse_flattening is None): # 1 0 0
+ semi_minor_axis = semi_major_axis
+ inverse_flattening = 0.0
+
+ # Calculate semi_major_axis?
+ elif semi_major_axis is None and (semi_minor_axis is not None and inverse_flattening is not None): # 0 1 1
+ semi_major_axis = -semi_minor_axis / ((1.0 - inverse_flattening) / inverse_flattening)
+
+ # Calculate semi_minor_axis?
+ elif semi_minor_axis is None and (semi_major_axis is not None and inverse_flattening is not None): # 1 0 1
+ semi_minor_axis = semi_major_axis - (1.0 / inverse_flattening) * semi_major_axis
+
+ # Calculate inverse_flattening?
+ elif inverse_flattening is None and (semi_major_axis is not None and semi_minor_axis is not None): # 1 1 0
+ if semi_major_axis == semi_minor_axis:
+ inverse_flattening = 0.0
+ else:
+ inverse_flattening = 1.0 / ((semi_major_axis - semi_minor_axis) / semi_major_axis)
- def __init__(self, datum):
- """ """
- CoordSystem.__init__(self)
+ # We didn't get enough to specify an ellipse.
+ else:
+ raise ValueError("Insufficient ellipsoid specification")
- self.datum = datum
- self.cs_type = CARTESIAN_CS
+ self.semi_major_axis = float(semi_major_axis)
+ """Major radius of the ellipsoid in meters."""
+
+ self.semi_minor_axis = float(semi_minor_axis)
+ """Minor radius of the ellipsoid in meters."""
+
+ self.inverse_flattening = float(inverse_flattening)
+ """:math:`1/f` where :math:`f = (a-b)/a`"""
+
+ self.longitude_of_prime_meridian = float(longitude_of_prime_meridian)
+ """Describes 'zero' on the ellipsoid in degrees."""
+
+ def _pretty_attrs(self):
+ attrs = [("semi_major_axis", self.semi_major_axis)]
+ if self.semi_major_axis != self.semi_minor_axis:
+ attrs.append(("semi_minor_axis", self.semi_minor_axis))
+ if self.longitude_of_prime_meridian != 0.0:
+ attrs.append(("longitude_of_prime_meridian", self.longitude_of_prime_meridian))
+ return attrs
def __repr__(self):
- return "HorizontalCS(%r, %r)" % (self.datum, self.cs_type)
+ attrs = self._pretty_attrs()
+ # Special case for 1 pretty attr
+ if len(attrs) == 1 and attrs[0][0] == "semi_major_axis":
+ return "GeogCS(%r)" % self.semi_major_axis
+ else:
+ return "GeogCS(%s)" % ", ".join(["%s=%r" % (k,v) for k,v in attrs])
- def assert_valid(self):
- if self.cs_type not in _VALID_CS_TYPES:
- raise iris.exceptions.InvalidCubeError('"%s" is not a valid coordinate system type.' % self.cs_type)
- CoordSystem.assert_valid(self)
+ def __str__(self):
+ attrs = self._pretty_attrs()
+ # Special case for 1 pretty attr
+ if len(attrs) == 1 and attrs[0][0] == "semi_major_axis":
+ return "GeogCS(%s)" % self.semi_major_axis
+ else:
+ return "GeogCS(%s)" % ", ".join(["%s=%s" % (k,v) for k,v in attrs])
+ def xml_element(self, doc):
+ # Special output for spheres
+ attrs = self._pretty_attrs()
+ if len(attrs) == 1 and attrs[0][0] == "semi_major_axis":
+ attrs = [("earth_radius", self.semi_major_axis)]
-class LatLonCS(HorizontalCS):
- """Holds latitude/longitude grid information for both regular and rotated coordinates."""
+ return CoordSystem.xml_element(self, doc, attrs)
+
- def __init__(self, datum, prime_meridian, n_pole, reference_longitude):
+class RotatedGeogCS(CoordSystem):
+ """A coordinate system with rotated pole, on an optional :class:`GeogCS`."""
+
+ grid_mapping_name = "rotated_latitude_longitude"
+
+ def __init__(self, grid_north_pole_latitude, grid_north_pole_longitude,
+ north_pole_grid_longitude=0, ellipsoid=None):
"""
+ Constructs a coordinate system with rotated pole, on an optional :class:`GeogCS`.
+
Args:
- * datum:
- An instance of :class:`iris.coord_systems.SpheroidDatum`.
- * prime_meridian:
- An instance of :class:`iris.coord_systems.PrimeMeridian`.
- * n_pole:
- An instance of :class:`iris.coord_systems.GeoPosition` containing the geographic
- location of the, possibly rotated, North pole.
- * reference_longitude:
- The longitude of the standard North pole within the possibly rotated
- coordinate system.
+ * grid_north_pole_latitude - The true latitude of the rotated pole in degrees.
+ * grid_north_pole_longitude - The true longitude of the rotated pole in degrees.
- Example creation::
+ Kwargs:
+
+ * north_pole_grid_longitude - Longitude of true north pole in rotated grid
+ in degrees. Default = 0.
+ * ellipsoid - Optional :class:`GeogCS` defining the ellipsoid.
+
+ Examples::
- cs = LatLonCS(datum=SpheroidDatum(),
- prime_meridian=PrimeMeridian(label="Greenwich", value=0.0),
- n_pole=GeoPosition(90, 0),
- reference_longitude=0.0
- )
+ rotated_cs = RotatedGeogCS(30, 30)
+ another_cs = RotatedGeogCS(30, 30, ellipsoid=GeogCS(6400000, 6300000))
+
+ """
+ self.grid_north_pole_latitude = float(grid_north_pole_latitude)
+ """The true latitude of the rotated pole in degrees."""
+
+ self.grid_north_pole_longitude = float(grid_north_pole_longitude)
+ """The true longitude of the rotated pole in degrees."""
- """
- if n_pole is not None and not isinstance(n_pole, GeoPosition):
- raise TypeError("n_pole must be an instance of GeoPosition")
+ self.north_pole_grid_longitude = float(north_pole_grid_longitude)
+ """Longitude of true north pole in rotated grid in degrees."""
- HorizontalCS.__init__(self, datum)
+ self.ellipsoid = ellipsoid
+ """Ellipsoid definition."""
- self.datum = datum
- self.prime_meridian = prime_meridian
- self.n_pole = n_pole
- self.reference_longitude = reference_longitude
- self.cs_type = SPHERICAL_CS
+ def _pretty_attrs(self):
+ attrs = [("grid_north_pole_latitude", self.grid_north_pole_latitude),
+ ("grid_north_pole_longitude", self.grid_north_pole_longitude)]
+ if self.north_pole_grid_longitude != 0.0:
+ attrs.append(("north_pole_grid_longitude", self.north_pole_grid_longitude))
+ if self.ellipsoid is not None:
+ attrs.append(("ellipsoid", self.ellipsoid))
+ return attrs
def __repr__(self):
- return "LatLonCS(%r, %r, %r, %r)" % (self.datum, self.prime_meridian, self.n_pole, self.reference_longitude)
+ attrs = self._pretty_attrs()
+ result = "RotatedGeogCS(%s)" % ", ".join(["%s=%r" % (k,v) for k,v in attrs])
+ # Extra prettiness
+ result = result.replace("grid_north_pole_latitude=", "").replace("grid_north_pole_longitude=", "")
+ return result
+
+ def __str__(self):
+ attrs = self._pretty_attrs()
+ result = "RotatedGeogCS(%s)" % ", ".join(["%s=%s" % (k,v) for k,v in attrs])
+ # Extra prettiness
+ result = result.replace("grid_north_pole_latitude=", "").replace("grid_north_pole_longitude=", "")
+ return result
- def has_rotated_pole(self):
- return self.n_pole != GeoPosition(90, 0)
+ def xml_element(self, doc):
+ return CoordSystem.xml_element(self, doc, self._pretty_attrs())
-class HybridHeightCS(CoordSystem):
- """CoordSystem for holding hybrid height information."""
+class TransverseMercator(CoordSystem):
+ """A cylindrical map projection, with XY coordinates measured in meters."""
- def __init__(self, orography):
- """ """
- CoordSystem.__init__(self)
- self.orography = orography
+ grid_mapping_name = "transverse_mercator"
- def __repr__(self):
- return "HybridHeightCS(%r)" % self.orography
-
- def __deepcopy__(self, memo):
- """DON'T duplicate the orography amongst instances - share it."""
- return HybridHeightCS(self.orography)
+ def __init__(self, latitude_of_projection_origin, longitude_of_central_meridian,
+ false_easting, false_northing, scale_factor_at_central_meridian,
+ ellipsoid=None):
+ """
+ Constructs a TransverseMercator object.
- def orography_at_points(self, cube):
- """ Return a 2D array (YxX) of orography heights for the given cube."""
- if self.orography is None:
- raise TypeError("Regridding cannot be performed as the Orography does not exist (is None).")
- return self.orography.regridded(cube, mode='nearest').data
-
- def orography_at_xy_corners(self, cube):
- """Return (n, m, 4) array of orography at the 4 lon/lat corners of each cell."""
- # NB. If there are multiple definitive coordinates for an axis it doesn't matter which we use.
- x_coord = cube.coord(axis='x', definitive=True)
- y_coord = cube.coord(axis='y', definitive=True)
- if (not x_coord.has_bounds()) or (not y_coord.has_bounds()):
- raise iris.exceptions.IrisError("x or y coord without bounds")
- if x_coord.ndim != 1:
- raise iris.exceptions.CoordinateMultiDimError(x_coord)
- if y_coord.ndim != 1:
- raise iris.exceptions.CoordinateMultiDimError(y_coord)
- orography = numpy.empty((y_coord.shape[0], x_coord.shape[0], 4)) # y, x, xyb
- for iy, y_bound in enumerate(y_coord.bounds):
- for ix, x_bound in enumerate(x_coord.bounds):
- # Get the orography at the ll corners for this cell
- interp_value = iris.analysis.interpolate.nearest_neighbour_data_value
- orography[iy, ix, 0] = interp_value(self.orography, {x_coord.name: x_bound[0], y_coord.name: y_bound[0]})
- orography[iy, ix, 1] = interp_value(self.orography, {x_coord.name: x_bound[0], y_coord.name: y_bound[1]})
- orography[iy, ix, 2] = interp_value(self.orography, {x_coord.name: x_bound[1], y_coord.name: y_bound[1]})
- orography[iy, ix, 3] = interp_value(self.orography, {x_coord.name: x_bound[1], y_coord.name: y_bound[0]})
- return orography
-
- def orography_at_contiguous_corners(self, cube, use_x_bounds, use_y_bounds):
- """Return an (n+1, m), (n, m+1), or (n+1, m+1) array of orography for cell corners/bounds."""
- x_coord = cube.coord(axis='x', definitive=True)
- y_coord = cube.coord(axis='y', definitive=True)
+ Args:
- if use_x_bounds:
- x_values = x_coord.contiguous_bounds()
- else:
- x_values = x_coord.points
- if use_y_bounds:
- y_values = y_coord.contiguous_bounds()
- else:
- y_values = y_coord.points
+ * latitude_of_projection_origin
+ True latitude of planar origin in degrees.
- interp_value = iris.analysis.interpolate.nearest_neighbour_data_value
+ * longitude_of_central_meridian
+ True longitude of planar origin in degrees.
- orography = numpy.empty((len(y_values), len(x_values)), dtype=self.orography.data.dtype)
- for iy, y in enumerate(y_values):
- for ix, x in enumerate(x_values):
- orography[iy, ix] = interp_value(self.orography, [(x_coord, x), (y_coord, y)])
- return orography
+ * false_easting
+ X offset from planar origin in meters.
- def _height_3d(self, orography, level_height, sigma):
- """Given a (Y, X) array of orography, return (Z, Y, X) array of heights."""
- # Re-shape the level_height and sigma values so we can use NumPy broadcasting
- # to get our answer in one easy step.
- level_height = numpy.reshape(level_height, (-1, 1, 1)) # z, -, -
- sigma = numpy.reshape(sigma, (-1, 1, 1)) # z, -, -
- return level_height + sigma * orography
+ * false_northing
+ Y offset from planar origin in meters.
- def heights(self, level_height, sigma, cube=None, _orography=None):
- """
- Returns a 3-D array (ZxYxX) of heights above the geoid for the given cube points.
+ * scale_factor_at_central_meridian
+ Reduces the cylinder to slice through the ellipsoid (secant form).
+ Used to provide TWO longitudes of zero distortion in the area of interest.
- cube - defines the points at which we want heights
- _orography - internal optimisation, array of precalculated orography at cube points
+ Kwargs:
- """
-
- #check params
- if (cube is None) and (_orography is None):
- raise ValueError("No cube specified")
- if (cube is not None) and (_orography is not None):
- raise ValueError("Cannot accept cube and _orography together")
-
- # Get the orography height for the cell points
- if _orography is None:
- #regrid the orography to the cube's ll grid
- orography = self.orography_at_points(cube) # y, x
- else:
- #it has already been calculated
- if _orography.ndim != 2:
- raise ValueError("_orography must be 2D")
- orography = _orography
+ * ellipsoid
+ Optional :class:`GeogCS` defining the ellipsoid.
- return self._height_3d(orography, level_height.points, sigma.points)
+ Example::
+
+ airy1830 = GeogCS(6377563.396, 6356256.910)
+ osgb = TransverseMercator(49, -2, 40000, -10000, 0.9996012717, ellipsoid=airy1830)
- def heights_at_contiguous_corners(self, level_height, sigma, cube, use_x_bounds, use_y_bounds):
"""
- Returns a 3-D array (ZxYxX) of heights above the geoid for the given cube points.
+ self.latitude_of_projection_origin = float(latitude_of_projection_origin)
+ """True latitude of planar origin in degrees."""
- cube - defines the points at which we want heights
- use_x_bounds - whether we should use point or bound positions along the x axis
- use_y_bounds - whether we should use point or bound positions along the y axis
+ self.longitude_of_central_meridian = float(longitude_of_central_meridian)
+ """True longitude of planar origin in degrees."""
+
+ self.false_easting = float(false_easting)
+ """X offset from planar origin in meters."""
- """
- orography = self.orography_at_contiguous_corners(cube, use_x_bounds, use_y_bounds) # y, x
- return self._height_3d(orography, level_height.contiguous_bounds(), sigma.contiguous_bounds())
+ self.false_northing = float(false_northing)
+ """Y offset from planar origin in meters."""
+
+ self.scale_factor_at_central_meridian = float(scale_factor_at_central_meridian)
+ """Reduces the cylinder to slice through the ellipsoid (secant form)."""
+
+ self.ellipsoid = ellipsoid
+ """Ellipsoid definition."""
+
+ def __repr__(self):
+ return "TransverseMercator(latitude_of_projection_origin=%r, "\
+ "longitude_of_central_meridian=%r, false_easting=%r, false_northing=%r, "\
+ "scale_factor_at_central_meridian=%r, ellipsoid=%r)" % \
+ (self.latitude_of_projection_origin, self.longitude_of_central_meridian,
+ self.false_easting, self.false_northing,
+ self.scale_factor_at_central_meridian, self.ellipsoid)
diff --git a/lib/iris/coords.py b/lib/iris/coords.py
index a19eea40b9..c46b4cb4aa 100644
--- a/lib/iris/coords.py
+++ b/lib/iris/coords.py
@@ -287,7 +287,7 @@ def __init__(self, points, standard_name=None, long_name=None,
* attributes
A dictionary containing other cf and user-defined attributes.
* coord_system
- A CoordSystem, e.g a LatLonCS for a longitude Coord.
+ A :class:`~iris.coord_systems.CoordSystem`, e.g a :class:`~iris.coord_systems.GeogCS` for a longitude Coord.
"""
self.standard_name = standard_name
diff --git a/lib/iris/cube.py b/lib/iris/cube.py
index fae84bb9dc..243eae0968 100644
--- a/lib/iris/cube.py
+++ b/lib/iris/cube.py
@@ -760,9 +760,10 @@ def coord_system(self, spec):
Args:
* spec
- The the name or type of a CoordSystem subclass. E.g
- cube.coord_system("LatLonCS")
- cube.coord_system(iris.coord_systems.LatLonCS)
+ The the name or type of a CoordSystem subclass. E.g ::
+
+ cube.coord_system("GeogCS")
+ cube.coord_system(iris.coord_systems.GeogCS)
If spec is provided as a type it can be a superclass of any CoordSystems found.
@@ -2018,10 +2019,8 @@ def add(self, object_, replace=False):
'''Add an object to the dictionary.'''
if not isinstance(object_, self._superclass):
raise TypeError("Only subclasses of '%s' are allowed as values." % self._superclass.__name__)
- # Find all the superclasses of the given object, starting with the object's
- # class and continuing up to, but not including, the top-level superclass.
+ # Find all the superclasses of the given object, starting with the object's class.
superclasses = type.mro(type(object_))
- superclasses = superclasses[:superclasses.index(self._superclass)]
if not replace:
# Ensure nothing else is already registered against those superclasses.
# NB. This implies the _basic_map will also be empty for this object.
diff --git a/lib/iris/etc/grib_rules.txt b/lib/iris/etc/grib_rules.txt
index 4c96f33d40..72177fa1bb 100644
--- a/lib/iris/etc/grib_rules.txt
+++ b/lib/iris/etc/grib_rules.txt
@@ -24,29 +24,29 @@ IF
grib.gridType=="regular_ll"
grib.jPointsAreConsecutive == 0
THEN
-CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=LatLonCS( grib._spheroid_datum, grib._prime_meridian, GeoPosition(90.0, 0.0), 0.0)), 0)
-CoordAndDims(DimCoord(numpy.arange(grib.Ni) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=LatLonCS( grib._spheroid_datum, grib._prime_meridian, GeoPosition(90.0, 0.0), 0.0)), 1)
+CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=grib._coord_system), 0)
+CoordAndDims(DimCoord(numpy.arange(grib.Ni) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=grib._coord_system), 1)
IF
grib.gridType=="regular_ll"
grib.jPointsAreConsecutive == 1
THEN
-CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=LatLonCS( grib._spheroid_datum, grib._prime_meridian, GeoPosition(90.0, 0.0), 0.0)), 1)
-CoordAndDims(DimCoord(numpy.arange(grib.Ni, dtype=numpy.float64) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=LatLonCS( grib._spheroid_datum, grib._prime_meridian, GeoPosition(90.0, 0.0), 0.0)), 0)
+CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=grib._coord_system), 1)
+CoordAndDims(DimCoord(numpy.arange(grib.Ni, dtype=numpy.float64) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=grib._coord_system), 0)
IF
grib.gridType=="rotated_ll"
grib.jPointsAreConsecutive == 0
THEN
-CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=LatLonCS(grib._spheroid_datum, grib._prime_meridian, grib._northPole, grib._reference_longitude)), 0)
-CoordAndDims(DimCoord(numpy.arange(grib.Ni, dtype=numpy.float64) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=LatLonCS(grib._spheroid_datum, grib._prime_meridian, grib._northPole, grib._reference_longitude)), 1)
+CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=grib._coord_system), 0)
+CoordAndDims(DimCoord(numpy.arange(grib.Ni, dtype=numpy.float64) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=grib._coord_system), 1)
IF
grib.gridType=="rotated_ll"
grib.jPointsAreConsecutive == 1
THEN
-CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=LatLonCS(grib._spheroid_datum, grib._prime_meridian, grib._northPole, grib._reference_longitude)), 1)
-CoordAndDims(DimCoord(numpy.arange(grib.Ni, dtype=numpy.float64) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=LatLonCS(grib._spheroid_datum, grib._prime_meridian, grib._northPole, grib._reference_longitude)), 0)
+CoordAndDims(DimCoord(numpy.arange(grib.Nj, dtype=numpy.float64) * grib.jDirectionIncrementInDegrees * (grib.jScansPositively*2-1) + grib.latitudeOfFirstGridPointInDegrees, grib._y_coord_name, units='degrees', coord_system=grib._coord_system), 1)
+CoordAndDims(DimCoord(numpy.arange(grib.Ni, dtype=numpy.float64) * grib.iDirectionIncrementInDegrees * (grib.iScansNegatively*(-2)+1) + grib.longitudeOfFirstGridPointInDegrees, grib._x_coord_name, units='degrees', coord_system=grib._coord_system), 0)
diff --git a/lib/iris/etc/pp_rules.txt b/lib/iris/etc/pp_rules.txt
index 6efcef52ce..5ca81b7c8d 100644
--- a/lib/iris/etc/pp_rules.txt
+++ b/lib/iris/etc/pp_rules.txt
@@ -87,7 +87,7 @@ f.bdx != 0.0
len(f.lbcode) != 5
f.lbcode[0] == 1
THEN
-CoordAndDims(DimCoord(f.regular_points("x"), standard_name=f._x_coord_name(), units='degrees', circular=(f.lbhem in [0, 4]), coord_system=f.horiz_coord_system()), 1)
+CoordAndDims(DimCoord(f.regular_points("x"), standard_name=f._x_coord_name(), units='degrees', circular=(f.lbhem in [0, 4]), coord_system=f.coord_system()), 1)
# Regular longitude bounds
IF
@@ -95,7 +95,7 @@ f.bdx != 0.0
len(f.lbcode) != 5
f.lbcode[0] == 2
THEN
-CoordAndDims(DimCoord(f.regular_points("x"), standard_name=f._x_coord_name(), units='degrees', circular=(f.lbhem in [0, 4]), coord_system=f.horiz_coord_system(), bounds=f.regular_bounds("x")), 1)
+CoordAndDims(DimCoord(f.regular_points("x"), standard_name=f._x_coord_name(), units='degrees', circular=(f.lbhem in [0, 4]), coord_system=f.coord_system(), bounds=f.regular_bounds("x")), 1)
# Regular latitude points
IF
@@ -103,7 +103,7 @@ f.bdy != 0.0
len(f.lbcode) != 5
f.lbcode[0] == 1
THEN
-CoordAndDims(DimCoord(f.regular_points("y"), standard_name=f._y_coord_name(), units='degrees', coord_system=f.horiz_coord_system()), 0)
+CoordAndDims(DimCoord(f.regular_points("y"), standard_name=f._y_coord_name(), units='degrees', coord_system=f.coord_system()), 0)
# Regular latitude bounds
IF
@@ -111,7 +111,7 @@ f.bdy != 0.0
len(f.lbcode) != 5
f.lbcode[0] == 2
THEN
-CoordAndDims(DimCoord(f.regular_points("y"), standard_name=f._y_coord_name(), units='degrees', coord_system=f.horiz_coord_system(), bounds=f.regular_bounds("y")), 0)
+CoordAndDims(DimCoord(f.regular_points("y"), standard_name=f._y_coord_name(), units='degrees', coord_system=f.coord_system(), bounds=f.regular_bounds("y")), 0)
# Irregular latitude
IF
@@ -119,7 +119,7 @@ f.bdy == 0.0
len(f.lbcode) != 5 or (len(f.lbcode) == 5 and f.lbcode.iy == 10)
# TODO What about lbcode in [2, 102]. How does this affect the bounds?
THEN
-CoordAndDims(DimCoord(f.y, standard_name=f._y_coord_name(), units='degrees', bounds=f.y_bounds, coord_system=f.horiz_coord_system()), 0)
+CoordAndDims(DimCoord(f.y, standard_name=f._y_coord_name(), units='degrees', bounds=f.y_bounds, coord_system=f.coord_system()), 0)
# Irregular longitude
IF
@@ -127,7 +127,7 @@ f.bdx == 0.0
len(f.lbcode) != 5 or (len(f.lbcode) == 5 and f.lbcode.ix == 11)
# TODO What about lbcode in [2, 102]. How does this affect the bounds?
THEN
-CoordAndDims(DimCoord(f.x, standard_name=f._x_coord_name(), units='degrees', bounds=f.x_bounds, circular=(f.lbhem in [0, 4]), coord_system=f.horiz_coord_system()), 1)
+CoordAndDims(DimCoord(f.x, standard_name=f._x_coord_name(), units='degrees', bounds=f.x_bounds, circular=(f.lbhem in [0, 4]), coord_system=f.coord_system()), 1)
####################################################################################################
@@ -151,7 +151,7 @@ len(f.lbcode) == 5
f.lbcode.ix == 10
f.bdx != 0
THEN
-CoordAndDims(DimCoord(f.regular_points("x"), standard_name=f._y_coord_name(), units='degrees', coord_system=f.horiz_coord_system()), 1)
+CoordAndDims(DimCoord(f.regular_points("x"), standard_name=f._y_coord_name(), units='degrees', coord_system=f.coord_system()), 1)
IF
len(f.lbcode) == 5
@@ -205,7 +205,7 @@ hasattr(f, 'upper_x_domain')
all(f.lower_x_domain != -1.e+30)
all(f.upper_x_domain != -1.e+30)
THEN
-CoordAndDims(AuxCoord((f.lower_x_domain + f.upper_x_domain) / 2.0, standard_name=f._x_coord_name(), units='degrees', bounds=numpy.array([f.lower_x_domain, f.upper_x_domain]).T, coord_system=f.horiz_coord_system()), 1 if f.lbcode.ix == 13 else 0)
+CoordAndDims(AuxCoord((f.lower_x_domain + f.upper_x_domain) / 2.0, standard_name=f._x_coord_name(), units='degrees', bounds=numpy.array([f.lower_x_domain, f.upper_x_domain]).T, coord_system=f.coord_system()), 1 if f.lbcode.ix == 13 else 0)
# as a special case to some cross section lbcodes (currently only site), lats are encoded in lower_y_domain and upper_y_domain
IF
@@ -217,7 +217,7 @@ hasattr(f, 'upper_y_domain')
all(f.lower_y_domain != -1.e+30)
all(f.upper_y_domain != -1.e+30)
THEN
-CoordAndDims(AuxCoord((f.lower_y_domain + f.upper_y_domain) / 2.0, standard_name=f._y_coord_name(), units='degrees', bounds=numpy.array([f.lower_y_domain, f.upper_y_domain]).T, coord_system=f.horiz_coord_system()), 1 if f.lbcode.ix == 13 else 0)
+CoordAndDims(AuxCoord((f.lower_y_domain + f.upper_y_domain) / 2.0, standard_name=f._y_coord_name(), units='degrees', bounds=numpy.array([f.lower_y_domain, f.upper_y_domain]).T, coord_system=f.coord_system()), 1 if f.lbcode.ix == 13 else 0)
####################################################################################################
diff --git a/lib/iris/etc/pp_save_rules.txt b/lib/iris/etc/pp_save_rules.txt
index 8378c73f96..25081b0543 100644
--- a/lib/iris/etc/pp_save_rules.txt
+++ b/lib/iris/etc/pp_save_rules.txt
@@ -25,10 +25,16 @@ THEN
pp.lbproc = 0 # Processing. Start at 0.
IF
- cm.coord_system("LatLonCS") is not None
+ cm.coord_system("GeogCS") is not None
THEN
- pp.bplat = cm.coord_system("LatLonCS").n_pole.latitude
- pp.bplon = cm.coord_system("LatLonCS").n_pole.longitude
+ pp.bplat = 90
+ pp.bplon = 0
+
+IF
+ cm.coord_system("RotatedGeogCS") is not None
+THEN
+ pp.bplat = cm.coord_system("RotatedGeogCS").grid_north_pole_latitude
+ pp.bplon = cm.coord_system("RotatedGeogCS").grid_north_pole_longitude
#UM - no version number
@@ -383,8 +389,7 @@ THEN
#rotated?
IF
# iris.fileformats.pp.is_cross_section(cm) == False
- cm.coord_system("LatLonCS") is not None
- cm.coord_system("LatLonCS").has_rotated_pole()
+ cm.coord_system("RotatedGeogCS") is not None
THEN
pp.lbcode = int(pp.lbcode) + 100
diff --git a/lib/iris/fileformats/_pyke_rules/fc_rules_cf.krb b/lib/iris/fileformats/_pyke_rules/fc_rules_cf.krb
index 60c58693ef..b6539ce8f9 100644
--- a/lib/iris/fileformats/_pyke_rules/fc_rules_cf.krb
+++ b/lib/iris/fileformats/_pyke_rules/fc_rules_cf.krb
@@ -51,9 +51,8 @@ fc_default_grid_mapping_latitude_longitude
notany
facts_cf.grid_mapping($_)
assert
- python datum = iris.coord_systems.SpheroidDatum(label='spherical')
- python meridian = iris.coord_systems.PrimeMeridian()
- python coordinate_system = iris.coord_systems.LatLonCS(datum, meridian, iris.coord_systems.GeoPosition(90.0, 0.0), 0.0)
+ # TODO: Discuss/confirm this default ellipsoid.
+ python coordinate_system = iris.coord_systems.GeogCS(6371229)
python engine.provides['coordinate_system'] = coordinate_system
facts_cf.provides(coordinate_system, latitude_longitude)
python engine.rule_triggered.add(rule.name)
@@ -73,7 +72,7 @@ fc_provides_grid_mapping_rotated_latitude_longitude
check is_grid_mapping(engine, $grid_mapping, CF_GRID_MAPPING_ROTATED_LAT_LON)
assert
python cf_grid_var = engine.cf_var.cf_group.grid_mappings[$grid_mapping]
- python coordinate_system = build_coordinate_system(engine, cf_grid_var)
+ python coordinate_system = build_rotated_coordinate_system(engine, cf_grid_var)
python engine.provides['coordinate_system'] = coordinate_system
facts_cf.provides(coordinate_system, rotated_latitude_longitude)
python engine.rule_triggered.add(rule.name)
@@ -674,19 +673,38 @@ fc_extras
major = getattr(cf_grid_var, CF_ATTR_GRID_SEMI_MAJOR_AXIS, None)
minor = getattr(cf_grid_var, CF_ATTR_GRID_SEMI_MINOR_AXIS, None)
- inverse = getattr(cf_grid_var, CF_ATTR_GRID_INVERSE_FLATTENING, None)
- flattening = 1 / inverse if inverse else None
- datum = iris.coord_systems.SpheroidDatum(label='spherical', semi_major_axis=major, semi_minor_axis=minor, flattening=flattening, units=iris.unit.Unit('m'))
+ inverse_flattening = getattr(cf_grid_var, CF_ATTR_GRID_INVERSE_FLATTENING, None)
+ # Avoid over-specification exception
+ if major is not None and minor is not None:
+ inverse_flattening = None
- prime_meridian = iris.coord_systems.PrimeMeridian()
+ return iris.coord_systems.GeogCS(major, minor, inverse_flattening)
+
+ def build_rotated_coordinate_system(engine, cf_grid_var):
+ """Create a rotated coordinate system from the CF-netCDF grid mapping variable."""
+
+ major = getattr(cf_grid_var, CF_ATTR_GRID_SEMI_MAJOR_AXIS, None)
+ minor = getattr(cf_grid_var, CF_ATTR_GRID_SEMI_MINOR_AXIS, None)
+ inverse_flattening = getattr(cf_grid_var, CF_ATTR_GRID_INVERSE_FLATTENING, None)
+ # Avoid over-specification exception
+ if major is not None and minor is not None:
+ inverse_flattening = None
north_pole_latitude = getattr(cf_grid_var, CF_ATTR_GRID_NORTH_POLE_LAT, 90.0)
north_pole_longitude = getattr(cf_grid_var, CF_ATTR_GRID_NORTH_POLE_LON, 0.0)
- geo_position = iris.coord_systems.GeoPosition(north_pole_latitude, north_pole_longitude)
+ if north_pole_latitude is None or north_pole_longitude is None:
+ warnings.warn('Rotated pole position is not fully specified')
- reference_longitude = getattr(cf_grid_var, CF_ATTR_GRID_NORTH_POLE_GRID_LON, 0.0)
+ north_pole_grid_lon = getattr(cf_grid_var, CF_ATTR_GRID_NORTH_POLE_GRID_LON, 0.0)
+
+ ellipsoid = None
+ if major is not None or minor is not None or inverse_flattening is not None:
+ ellipsoid = iris.coord_systems.GeogCS(major, minor, inverse_flattening)
+
+ rcs = iris.coord_systems.RotatedGeogCS(north_pole_latitude, north_pole_longitude,
+ north_pole_grid_lon, ellipsoid)
- return iris.coord_systems.LatLonCS(datum, prime_meridian, geo_position, reference_longitude)
+ return rcs
################################################################################
diff --git a/lib/iris/fileformats/grib.py b/lib/iris/fileformats/grib.py
index 46a16e81b2..8dbfe47bbf 100644
--- a/lib/iris/fileformats/grib.py
+++ b/lib/iris/fileformats/grib.py
@@ -212,11 +212,8 @@ def _compute_extra_keys(self):
'_firstLevelTypeUnits':unknown_string, '_firstLevel':-1.0,
'_secondLevelTypeName':unknown_string, '_secondLevel':-1.0,
'_originatingCentre':unknown_string, '_forecastTimeUnit':unknown_string,
- '_spheroid_datum':coord_systems.SpheroidDatum(), # default spheroid
- '_prime_meridian':coord_systems.PrimeMeridian(), # defaults to greenwhich
- '_x_coord_name':unknown_string, '_y_coord_name':unknown_string,
- # We won't be accessing these if we're regular_ll.
- '_northPole':None, '_reference_longitude':None}
+ '_coord_system':None,
+ '_x_coord_name':unknown_string, '_y_coord_name':unknown_string}
#reference date
self.extra_keys['_referenceDateTime'] = datetime.datetime(int(self.year), int(self.month), int(self.day), int(self.hour), int(self.minute))
@@ -238,51 +235,45 @@ def _compute_extra_keys(self):
else:
self.extra_keys['_phenomenonDateTime'] = self._get_verification_date()
- #rotated pole
- gridType = gribapi.grib_get_string(self.grib_message, "gridType")
- if gridType == 'rotated_ll':
- southPoleLon = longitudeOfSouthernPoleInDegrees
- southPoleLat = latitudeOfSouthernPoleInDegrees
- self.extra_keys['_northPole'] = coord_systems.GeoPosition(-southPoleLat, math.fmod(southPoleLon + 180.0, 360.0))
- self.extra_keys['_reference_longitude'] = self.angleOfRotation
- #else leave as default
#shape of the earth
#pre-defined sphere
if self.shapeOfTheEarth == 0:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='spherical', units='m', flattening=0.0,
- semi_major_axis=6367470.0)
+ self.extra_keys['_coord_system'] = coord_systems.GeogCS(semi_major_axis=6367470)
+
#custom sphere
elif self.shapeOfTheEarth == 1:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='spherical', units='m', flattening=0.0,
- semi_major_axis=self.scaledValueOfRadiusOfSphericalEarth * self.scaleFactorOfRadiusOfSphericalEarth)
+ self.extra_keys['_coord_system'] = \
+ coord_systems.GeogCS(self.scaledValueOfRadiusOfSphericalEarth * \
+ self.scaleFactorOfRadiusOfSphericalEarth)
#IAU65 oblate sphere
elif self.shapeOfTheEarth == 2:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='IAU65', flattening=1.0/297.0, units='m',
- semi_major_axis=6378160.0)
+ self.extra_keys['_coord_system'] = coord_systems.GeogCS(6378160, inverse_flattening=297.0)
+
#custom oblate spheroid (km)
elif self.shapeOfTheEarth == 3:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='spherical', units='km',
- semi_major_axis=self.scaledValueOfEarthMajorAxis * self.scaleFactorOfEarthMajorAxis,
- semi_minor_axis=self.scaledValueOfEarthMinorAxis * self.scaleFactorOfEarthMinorAxis)
+ self.extra_keys['_coord_system'] = coord_systems.GeogCS(
+ semi_major_axis=self.scaledValueOfEarthMajorAxis * self.scaleFactorOfEarthMajorAxis * 1000.0,
+ semi_minor_axis=self.scaledValueOfEarthMinorAxis * self.scaleFactorOfEarthMinorAxis * 1000.0)
#IAG-GRS80 oblate spheroid
elif self.shapeOfTheEarth == 4:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='IAG-GRS80', units='m', flattening=1.0/298.257222101,
- semi_major_axis=6378137.0)
+ self.extra_keys['_coord_system'] = coord_systems.GeogCS(6378137, None, 298.257222101)
+
#WGS84
elif self.shapeOfTheEarth == 5:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='WGS84', units='m', flattening=1.0/298.257223563,
- semi_major_axis=6378137.0)
+ self.extra_keys['_coord_system'] = \
+ coord_systems.GeogCS(6378137, inverse_flattening=298.257223563)
+
#pre-defined sphere
elif self.shapeOfTheEarth == 6:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='spherical', units='m', flattening=0.0,
- semi_major_axis=6371229.0)
+ self.extra_keys['_coord_system'] = coord_systems.GeogCS(6371229)
+
#custom oblate spheroid (m)
elif self.shapeOfTheEarth == 7:
- self.extra_keys['_spheroid_datum'] = coord_systems.SpheroidDatum(label='spherical', units='m',
+ self.extra_keys['_coord_system'] = coord_systems.GeogCS(
semi_major_axis=self.scaledValueOfEarthMajorAxis * self.scaleFactorOfEarthMajorAxis,
semi_minor_axis=self.scaledValueOfEarthMinorAxis * self.scaleFactorOfEarthMinorAxis)
@@ -291,6 +282,19 @@ def _compute_extra_keys(self):
else:
raise ValueError("undefined shape of earth")
+
+
+ #rotated pole
+ gridType = gribapi.grib_get_string(self.grib_message, "gridType")
+ if gridType == 'rotated_ll':
+ # Replace the llcs with a rotated one
+ southPoleLon = longitudeOfSouthernPoleInDegrees
+ southPoleLat = latitudeOfSouthernPoleInDegrees
+ # TODO: Confirm the translation from angleOfRotation to north_pole_lon (usually 0 for both)
+ self.extra_keys['_coord_system'] = \
+ iris.coord_systems.RotatedGeogCS(-southPoleLat, math.fmod(southPoleLon + 180.0, 360.0),
+ self.angleOfRotation, self.extra_keys['_coord_system'])
+
#originating centre
#TODO #574 Expand to include sub-centre
diff --git a/lib/iris/fileformats/grib_save_rules.py b/lib/iris/fileformats/grib_save_rules.py
index f3803ef73e..8046cdea34 100644
--- a/lib/iris/fileformats/grib_save_rules.py
+++ b/lib/iris/fileformats/grib_save_rules.py
@@ -30,16 +30,14 @@
def gribbability_check(cube):
"We always need the following things for grib saving."
- # LatLonCS exists?
+ # GeogCS exists?
cs0 = cube.coord(dimensions=[0]).coord_system
cs1 = cube.coord(dimensions=[1]).coord_system
- if not (isinstance(cs0, iris.coord_systems.LatLonCS) and isinstance(cs1, iris.coord_systems.LatLonCS)):
- raise iris.exceptions.TranslationError("LatLonCS not present")
+ if cs0 is None or cs1 is None:
+ raise iris.exceptions.TranslationError("CoordSystem not present")
+ if cs0 != cs1:
+ raise iris.exceptions.TranslationError("Inconsistent CoordSystems")
- # LatLonCS has a datum?
- if not isinstance(cs0.datum, iris.coord_systems.SpheroidDatum):
- raise iris.exceptions.TranslationError("LatLonCS does not have a datum")
-
# Regular?
y_coord = cube.coord(dimensions=[0])
x_coord = cube.coord(dimensions=[1])
@@ -61,7 +59,7 @@ def gribbability_check(cube):
def shape_of_the_earth(cube, grib):
- # assume LatLonCS
+ # assume latlon
cs = cube.coord(dimensions=[0]).coord_system
# Turn them all missing to start with
@@ -72,17 +70,21 @@ def shape_of_the_earth(cube, grib):
gribapi.grib_set_long(grib, "scaleFactorOfEarthMinorAxis", 255)
gribapi.grib_set_long(grib, "scaledValueOfEarthMinorAxis", -1)
- if cs.datum.flattening == 0.0:
+ ellipsoid = cs
+ if isinstance(cs, iris.coord_systems.RotatedGeogCS):
+ ellipsoid = cs.ellipsoid
+
+ if ellipsoid.inverse_flattening == 0.0:
gribapi.grib_set_long(grib, "shapeOfTheEarth", 1)
gribapi.grib_set_long(grib, "scaleFactorOfRadiusOfSphericalEarth", 0)
- gribapi.grib_set_long(grib, "scaledValueOfRadiusOfSphericalEarth", cs.datum.semi_major_axis)
+ gribapi.grib_set_long(grib, "scaledValueOfRadiusOfSphericalEarth", ellipsoid.semi_major_axis)
else:
gribapi.grib_set_long(grib, "shapeOfTheEarth", 7)
gribapi.grib_set_long(grib, "scaleFactorOfEarthMajorAxis", 0)
- gribapi.grib_set_long(grib, "scaledValueOfEarthMajorAxis", cs.datum.semi_major_axis)
+ gribapi.grib_set_long(grib, "scaledValueOfEarthMajorAxis", ellipsoid.semi_major_axis)
gribapi.grib_set_long(grib, "scaleFactorOfEarthMinorAxis", 0)
- gribapi.grib_set_long(grib, "scaledValueOfEarthMinorAxis", cs.datum.semi_minor_axis)
+ gribapi.grib_set_long(grib, "scaledValueOfEarthMinorAxis", ellipsoid.semi_minor_axis)
def grid_dims(x_coord, y_coord, grib):
@@ -145,29 +147,31 @@ def rotated_pole(cube, grib):
# gribapi.grib_set_double(grib, "longitudeOfSouthernPoleInDegrees", float(cs.n_pole.longitude))
# gribapi.grib_set_double(grib, "angleOfRotationInDegrees", 0)
# WORKAROUND
- gribapi.grib_set_long(grib, "latitudeOfSouthernPole", -int(cs.n_pole.latitude*1000000))
- gribapi.grib_set_long(grib, "longitudeOfSouthernPole", int(((cs.n_pole.longitude+180)%360)*1000000))
+ gribapi.grib_set_long(grib, "latitudeOfSouthernPole", -int(cs.grid_north_pole_latitude*1000000))
+ gribapi.grib_set_long(grib, "longitudeOfSouthernPole", int(((cs.grid_north_pole_longitude+180)%360)*1000000))
gribapi.grib_set_long(grib, "angleOfRotation", 0)
def grid_template(cube, grib):
- cs0 = cube.coord(dimensions=[0]).coord_system
- cs1 = cube.coord(dimensions=[1]).coord_system
+ cs = cube.coord(dimensions=[0]).coord_system
- if not cs0.has_rotated_pole():
+ if isinstance(cs, iris.coord_systems.GeogCS):
# template 3.0
gribapi.grib_set_long(grib, "gridDefinitionTemplateNumber", 0)
latlon_common(cube, grib)
# rotated
- else:
+ elif isinstance(cs, iris.coord_systems.RotatedGeogCS):
# template 3.1
gribapi.grib_set_long(grib, "gridDefinitionTemplateNumber", 1)
latlon_common(cube, grib)
rotated_pole(cube, grib)
+
+ else:
+ raise ValueError("Currently unhandled CoordSystem: %s" % cs)
##############################
diff --git a/lib/iris/fileformats/netcdf.py b/lib/iris/fileformats/netcdf.py
index 02ec6aa177..8bb874b151 100644
--- a/lib/iris/fileformats/netcdf.py
+++ b/lib/iris/fileformats/netcdf.py
@@ -338,29 +338,23 @@ def load_cubes(filenames, callback=None):
def _cf_coord_identity(coord):
"""Return (standard_name, long_name, unit) of the given :class:`iris.coords.Coord` instance."""
- # Default behaviour
- standard_name = coord.standard_name
- long_name = coord.long_name
+
units = str(coord.units)
-
- # Special cases
- # i) Rotated pole
- if isinstance(coord.coord_system, iris.coord_systems.LatLonCS):
- if coord.name() in ['latitude', 'grid_latitude']:
- if coord.coord_system.has_rotated_pole():
- standard_name = 'grid_latitude'
- units = 'degrees'
- else:
- units = 'degrees_north'
- if coord.name() in ['longitude', 'grid_longitude']:
- if coord.coord_system.has_rotated_pole():
- standard_name = 'grid_longitude'
- units = 'degrees'
- else:
- units = 'degrees_east'
+ # TODO: Use #61 to get the units.
+ if isinstance(coord.coord_system, iris.coord_systems.GeogCS):
+ if "latitude" in coord.standard_name:
+ units = 'degrees_north'
+ elif "longitude" in coord.standard_name:
+ units = 'degrees_east'
+
+ elif isinstance(coord.coord_system, iris.coord_systems.RotatedGeogCS):
+ units = 'degrees'
- return standard_name, long_name, units
+ elif isinstance(coord.coord_system, iris.coord_systems.TransverseMercator):
+ units = 'm'
+
+ return coord.standard_name, coord.long_name, units
def _create_bounds(dataset, coord, cf_var, cf_name):
@@ -540,33 +534,41 @@ def _create_cf_grid_mapping(dataset, cube, cf_var):
data variable grid mapping attribute.
"""
- cs = cube.coord_system('HorizontalCS')
-
+ # TODO: What if there's more than one CoordSystem?
+ cs = cube.coord_system('CoordSystem')
if cs is not None:
- if isinstance(cs, iris.coord_systems.LatLonCS):
- cf_grid_name = 'rotated_latitude_longitude' if cs.has_rotated_pole() else 'latitude_longitude'
+
+ # Grid var not yet created?
+ if cs.grid_mapping_name not in dataset.variables:
+ cf_var_grid = dataset.createVariable(cs.grid_mapping_name, np.int32)
+ cf_var_grid.grid_mapping_name = cs.grid_mapping_name
+
+ # latlon
+ if isinstance(cs, iris.coord_systems.GeogCS):
+ cf_var_grid.longitude_of_prime_meridian = cs.longitude_of_prime_meridian
+ cf_var_grid.semi_major_axis = cs.semi_major_axis
+ cf_var_grid.semi_minor_axis = cs.semi_minor_axis
+
+ # rotated latlon
+ elif isinstance(cs, iris.coord_systems.RotatedGeogCS):
+ if cs.ellipsoid:
+ cf_var_grid.longitude_of_prime_meridian = cs.ellipsoid.longitude_of_prime_meridian
+ cf_var_grid.semi_major_axis = cs.ellipsoid.semi_major_axis
+ cf_var_grid.semi_minor_axis = cs.ellipsoid.semi_minor_axis
+ cf_var_grid.grid_north_pole_latitude = cs.grid_north_pole_latitude
+ cf_var_grid.grid_north_pole_longitude = cs.grid_north_pole_longitude
+ cf_var_grid.north_pole_grid_longitude = cs.north_pole_grid_longitude
+
+ # tmerc
+ elif isinstance(cs, iris.coord_systems.TransverseMercator):
+ warnings.warn('TransverseMercator coordinate system not yet handled')
- if cf_grid_name not in dataset.variables:
- cf_var.grid_mapping = cf_grid_name
- cf_var_grid = dataset.createVariable(cf_grid_name, np.int32)
- cf_var_grid.grid_mapping_name = cf_grid_name
- cf_var_grid.longitude_of_prime_meridian = 0.0
-
- if cs.datum:
- cf_var_grid.semi_major_axis = cs.datum.semi_major_axis
- cf_var_grid.semi_minor_axis = cs.datum.semi_minor_axis
-
- if cs.has_rotated_pole():
- if cs.n_pole:
- cf_var_grid.grid_north_pole_latitude = cs.n_pole.latitude
- cf_var_grid.grid_north_pole_longitude = cs.n_pole.longitude
-
- cf_var_grid.north_pole_grid_longitude = cs.reference_longitude
+ # other
else:
- # Reference previously created grid mapping
- cf_var.grid_mapping = cf_grid_name
- else:
- warnings.warn('Unable to represent the horizontal coordinate system. The coordinate system type %r is not yet implemented.' % type(cs))
+ warnings.warn('Unable to represent the horizontal coordinate system. The coordinate system type %r is not yet implemented.' % type(cs))
+
+ # Refer to grid var
+ cf_var.grid_mapping = cs.grid_mapping_name
def _create_cf_data_variable(dataset, cube, dimension_names):
diff --git a/lib/iris/fileformats/pp.py b/lib/iris/fileformats/pp.py
index 3907bd06c8..1cdb1ef1ae 100644
--- a/lib/iris/fileformats/pp.py
+++ b/lib/iris/fileformats/pp.py
@@ -43,7 +43,11 @@
iris.proxy.apply_proxy('iris.fileformats.pp_packing', globals())
-__all__ = ['load', 'save', 'PPField', 'add_load_rules', 'reset_load_rules', 'add_save_rules', 'reset_save_rules', 'STASH']
+__all__ = ['load', 'save', 'PPField', 'add_load_rules', 'reset_load_rules',
+ 'add_save_rules', 'reset_save_rules', 'STASH', 'EARTH_RADIUS']
+
+
+EARTH_RADIUS = 6371229.0
# PP->Cube and Cube->PP rules are loaded on first use
@@ -1073,29 +1077,30 @@ def regular_bounds(self, xy):
def time_unit(self, time_unit, epoch='epoch'):
return iris.unit.Unit('%s since %s' % (time_unit, epoch), calendar=self.calendar)
- def horiz_coord_system(self):
- """Return a LatLonCS for this PPField.
+ def coord_system(self):
+ """Return a CoordSystem for this PPField.
Returns:
- A LatLonCS with the appropriate earth shape, meridian and pole position.
+ Currently, a :class:`~iris.coord_systems.GeogCS` or :class:`~iris.coord_systems.RotatedGeogCS`.
"""
- return iris.coord_systems.LatLonCS(
- iris.coord_systems.SpheroidDatum("spherical", 6371229.0, flattening=0.0, units=iris.unit.Unit('m')),
- iris.coord_systems.PrimeMeridian(label="Greenwich", value=0.0),
- iris.coord_systems.GeoPosition(self.bplat, self.bplon), 0.0)
+ geog_cs = iris.coord_systems.GeogCS(EARTH_RADIUS)
+ if self.bplat != 90.0 or self.bplon != 0.0:
+ geog_cs = iris.coord_systems.RotatedGeogCS(self.bplat, self.bplon, ellipsoid=geog_cs)
+
+ return geog_cs
def _x_coord_name(self):
# TODO: Remove once we have the ability to derive this in the rules.
x_name = "longitude"
- if self.horiz_coord_system().has_rotated_pole():
+ if isinstance(self.coord_system(), iris.coord_systems.RotatedGeogCS):
x_name = "grid_longitude"
return x_name
def _y_coord_name(self):
# TODO: Remove once we have the ability to derive this in the rules.
y_name = "latitude"
- if self.horiz_coord_system().has_rotated_pole():
+ if isinstance(self.coord_system(), iris.coord_systems.RotatedGeogCS):
y_name = "grid_latitude"
return y_name
diff --git a/lib/iris/tests/results/COLPEX/uwind_and_orog.cml b/lib/iris/tests/results/COLPEX/uwind_and_orog.cml
index 95ce4373df..2a73f6d3b0 100644
--- a/lib/iris/tests/results/COLPEX/uwind_and_orog.cml
+++ b/lib/iris/tests/results/COLPEX/uwind_and_orog.cml
@@ -407,7 +407,7 @@
[0.35145, 0.36495],
[0.36495, 0.37845]]" id="25a5f42bc937b908" points="[-0.5274, -0.5139, -0.5004, ..., 0.3447, 0.3582,
0.3717]" shape="(412,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -419,7 +419,7 @@
[360.066, 360.079],
[360.079, 360.093]]" id="3bf28623a9db078e" points="[359.187, 359.2, 359.214, ..., 360.059, 360.072,
360.086]" shape="(412,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -530,7 +530,7 @@
[0.35145, 0.36495],
[0.36495, 0.37845]]" id="25a5f42bc937b908" points="[-0.5274, -0.5139, -0.5004, ..., 0.3447, 0.3582,
0.3717]" shape="(412,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -542,7 +542,7 @@
[360.059, 360.072],
[360.072, 360.086]]" id="3bf28623a9db078e" points="[359.18, 359.194, 359.207, ..., 360.052, 360.066,
360.079]" shape="(412,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_0.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_0.cml
index 8eaf7f499b..719631399d 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_0.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_0.cml
@@ -19,13 +19,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_1.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_1.cml
index 23e7a3fccc..c0a6c4d456 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_1.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_1.cml
@@ -22,13 +22,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_2.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_2.cml
index e4664ce8e3..8ba936a455 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_2.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_2.cml
@@ -22,13 +22,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_3.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_3.cml
index eb3c9b88c2..2248ab3420 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_3.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_3.cml
@@ -402,7 +402,7 @@
-
+
@@ -436,7 +436,7 @@
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_4.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_4.cml
index 0e4c02ad9b..8f951e58bb 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_4.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_air_temperature_4.cml
@@ -12,13 +12,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_0.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_0.cml
index 6d539c5f79..9924f92606 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_0.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_0.cml
@@ -12,13 +12,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_1.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_1.cml
index dbfdfa108f..cd17a164a2 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_1.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_1.cml
@@ -12,13 +12,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_2.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_2.cml
index 962edd3d3b..c2ce78c070 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_2.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_2.cml
@@ -12,13 +12,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_3.cml b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_3.cml
index 541eb207e8..32c5b9c870 100644
--- a/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_3.cml
+++ b/lib/iris/tests/results/FF/qtgl.ssps_006_soil_temperature_3.cml
@@ -12,13 +12,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/abs.cml b/lib/iris/tests/results/analysis/abs.cml
index 5114cd5e51..1c82aa9f72 100644
--- a/lib/iris/tests/results/analysis/abs.cml
+++ b/lib/iris/tests/results/analysis/abs.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/addition.cml b/lib/iris/tests/results/analysis/addition.cml
index 51acb9c6ae..ea4bbbb372 100644
--- a/lib/iris/tests/results/analysis/addition.cml
+++ b/lib/iris/tests/results/analysis/addition.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/addition_coord_x.cml b/lib/iris/tests/results/analysis/addition_coord_x.cml
index 12f6e4dd2e..869bcfb002 100644
--- a/lib/iris/tests/results/analysis/addition_coord_x.cml
+++ b/lib/iris/tests/results/analysis/addition_coord_x.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/addition_coord_y.cml b/lib/iris/tests/results/analysis/addition_coord_y.cml
index 12d6a0899b..0b1dfc1de5 100644
--- a/lib/iris/tests/results/analysis/addition_coord_y.cml
+++ b/lib/iris/tests/results/analysis/addition_coord_y.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/addition_different_std_name.cml b/lib/iris/tests/results/analysis/addition_different_std_name.cml
index 3bca58b42e..eda7787a45 100644
--- a/lib/iris/tests/results/analysis/addition_different_std_name.cml
+++ b/lib/iris/tests/results/analysis/addition_different_std_name.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/addition_in_place.cml b/lib/iris/tests/results/analysis/addition_in_place.cml
index 51acb9c6ae..ea4bbbb372 100644
--- a/lib/iris/tests/results/analysis/addition_in_place.cml
+++ b/lib/iris/tests/results/analysis/addition_in_place.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/addition_in_place_coord.cml b/lib/iris/tests/results/analysis/addition_in_place_coord.cml
index b3333131ed..7e78d16735 100644
--- a/lib/iris/tests/results/analysis/addition_in_place_coord.cml
+++ b/lib/iris/tests/results/analysis/addition_in_place_coord.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/addition_scalar.cml b/lib/iris/tests/results/analysis/addition_scalar.cml
index 212b0435d4..c7611779e9 100644
--- a/lib/iris/tests/results/analysis/addition_scalar.cml
+++ b/lib/iris/tests/results/analysis/addition_scalar.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/aggregated_by/easy.cml b/lib/iris/tests/results/analysis/aggregated_by/easy.cml
index 850eb9f89e..12fa71c349 100644
--- a/lib/iris/tests/results/analysis/aggregated_by/easy.cml
+++ b/lib/iris/tests/results/analysis/aggregated_by/easy.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/aggregated_by/multi.cml b/lib/iris/tests/results/analysis/aggregated_by/multi.cml
index 2e24cd5f40..8761085b60 100644
--- a/lib/iris/tests/results/analysis/aggregated_by/multi.cml
+++ b/lib/iris/tests/results/analysis/aggregated_by/multi.cml
@@ -10,7 +10,7 @@
-
+
@@ -18,7 +18,7 @@
-
+
diff --git a/lib/iris/tests/results/analysis/aggregated_by/multi_shared.cml b/lib/iris/tests/results/analysis/aggregated_by/multi_shared.cml
index 80b0dfe2e7..6b2c0323f0 100644
--- a/lib/iris/tests/results/analysis/aggregated_by/multi_shared.cml
+++ b/lib/iris/tests/results/analysis/aggregated_by/multi_shared.cml
@@ -21,7 +21,7 @@
-
+
@@ -29,7 +29,7 @@
-
+
diff --git a/lib/iris/tests/results/analysis/aggregated_by/single.cml b/lib/iris/tests/results/analysis/aggregated_by/single.cml
index 95158e98f1..d4130e86ee 100644
--- a/lib/iris/tests/results/analysis/aggregated_by/single.cml
+++ b/lib/iris/tests/results/analysis/aggregated_by/single.cml
@@ -10,12 +10,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/aggregated_by/single_shared.cml b/lib/iris/tests/results/analysis/aggregated_by/single_shared.cml
index 981f0b649e..489df69c6a 100644
--- a/lib/iris/tests/results/analysis/aggregated_by/single_shared.cml
+++ b/lib/iris/tests/results/analysis/aggregated_by/single_shared.cml
@@ -10,12 +10,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/areaweights_original.cml b/lib/iris/tests/results/analysis/areaweights_original.cml
index 2641a9e1d6..d740082153 100644
--- a/lib/iris/tests/results/analysis/areaweights_original.cml
+++ b/lib/iris/tests/results/analysis/areaweights_original.cml
@@ -22,12 +22,12 @@
-62.4999, -64.9999, -67.4999, -69.9999,
-72.4999, -74.9999, -77.4999, -79.9999,
-82.4999, -84.9999, -87.4999, -89.9999]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/curl_contrived_cartesian2.cml b/lib/iris/tests/results/analysis/calculus/curl_contrived_cartesian2.cml
index 7402256aa5..207da8a876 100644
--- a/lib/iris/tests/results/analysis/calculus/curl_contrived_cartesian2.cml
+++ b/lib/iris/tests/results/analysis/calculus/curl_contrived_cartesian2.cml
@@ -14,17 +14,13 @@
69.405, 71.615, 73.825, 76.035, 78.245, 80.455,
82.665, 84.875, 87.085, 89.295, 91.505, 93.715,
95.925, 98.135, 100.345, 102.555, 104.765,
- 106.975, 109.185]" shape="(49,)" standard_name="projection_x_coordinate" units="Unit('meters')" value_type="float32">
-
-
+ 106.975, 109.185]" shape="(49,)" standard_name="projection_x_coordinate" units="Unit('meters')" value_type="float32"/>
-
-
+ 475.0, 500.0, 525.0, 550.0]" shape="(25,)" standard_name="projection_y_coordinate" units="Unit('meters')" value_type="float32"/>
-
-
+ 106.975, 109.185]" shape="(49,)" standard_name="projection_x_coordinate" units="Unit('meters')" value_type="float32"/>
-
-
+ 475.0, 500.0, 525.0, 550.0]" shape="(25,)" standard_name="projection_y_coordinate" units="Unit('meters')" value_type="float32"/>
-
-
+ 106.975, 109.185]" shape="(49,)" standard_name="projection_x_coordinate" units="Unit('meters')" value_type="float32"/>
-
-
+ 475.0, 500.0, 525.0, 550.0]" shape="(25,)" standard_name="projection_y_coordinate" units="Unit('meters')" value_type="float32"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.cml b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.cml
index a98776972e..b7565e998d 100644
--- a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.cml
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.cml b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.cml
index 14e6faa3bf..936c94473b 100644
--- a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.cml
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.cml b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.cml
index 48b19325af..f48d8507ee 100644
--- a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.cml
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/grad_contrived1.cml b/lib/iris/tests/results/analysis/calculus/grad_contrived1.cml
index f33d5f0102..71cf5b27f8 100644
--- a/lib/iris/tests/results/analysis/calculus/grad_contrived1.cml
+++ b/lib/iris/tests/results/analysis/calculus/grad_contrived1.cml
@@ -11,7 +11,7 @@ w cmpt of the curl of u_wind and v_wind"/>
-45.0, -39.0, -33.0, -27.0, -21.0, -15.0, -9.0,
-3.0, 3.0, 9.0, 15.0, 21.0, 27.0, 33.0, 39.0,
45.0, 51.0, 57.0, 63.0, 69.0, 75.0, 81.0]" shape="(29,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -24,7 +24,7 @@ w cmpt of the curl of u_wind and v_wind"/>
60.0, 66.0, 72.0, 78.0, 84.0, 90.0, 96.0, 102.0,
108.0, 114.0, 120.0, 126.0, 132.0, 138.0, 144.0,
150.0, 156.0, 162.0, 168.0, 174.0]" shape="(60,)" standard_name="longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/grad_contrived2.cml b/lib/iris/tests/results/analysis/calculus/grad_contrived2.cml
index 23939493d0..18e5267346 100644
--- a/lib/iris/tests/results/analysis/calculus/grad_contrived2.cml
+++ b/lib/iris/tests/results/analysis/calculus/grad_contrived2.cml
@@ -22,13 +22,13 @@ w cmpt of the curl of u_wind and v_wind"/>
55.2856, 57.857, 60.4284, 62.9999, 65.5713,
68.1427, 70.7141, 73.2856, 75.857, 78.4284,
80.9999, 83.5713, 86.1427]" shape="(69,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/grad_contrived_non_spherical1.cml b/lib/iris/tests/results/analysis/calculus/grad_contrived_non_spherical1.cml
index 2f4de366aa..3d9d69d9a5 100644
--- a/lib/iris/tests/results/analysis/calculus/grad_contrived_non_spherical1.cml
+++ b/lib/iris/tests/results/analysis/calculus/grad_contrived_non_spherical1.cml
@@ -14,17 +14,13 @@
69.405, 71.615, 73.825, 76.035, 78.245, 80.455,
82.665, 84.875, 87.085, 89.295, 91.505, 93.715,
95.925, 98.135, 100.345, 102.555, 104.765,
- 106.975, 109.185]" shape="(49,)" standard_name="projection_x_coordinate" units="Unit('meters')" value_type="float32">
-
-
+ 106.975, 109.185]" shape="(49,)" standard_name="projection_x_coordinate" units="Unit('meters')" value_type="float32"/>
-
-
+ 475.0, 500.0, 525.0, 550.0]" shape="(25,)" standard_name="projection_y_coordinate" units="Unit('meters')" value_type="float32"/>
diff --git a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.cml b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.cml
index 936d697957..6b162f725d 100644
--- a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.cml
+++ b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.cml
@@ -14,7 +14,7 @@
56.25, 60.75, 65.25, 69.75, 74.25, 78.75, 83.25,
87.75, 92.25, 96.75, 101.25, 105.75, 110.25,
114.75, 119.25, 123.75, 128.25]" shape="(49,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -26,7 +26,7 @@
-36.0, -31.5, -27.0, -22.5, -18.0, -13.5, -9.0,
-4.5, 0.0, 4.5, 9.0, 13.5, 18.0, 22.5, 27.0,
31.5, 36.0, 40.5]" shape="(50,)" standard_name="longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.cml b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.cml
index d68a53d5e5..6c46e888cc 100644
--- a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.cml
+++ b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.cml
@@ -13,7 +13,7 @@
40.5, 45.0, 49.5, 54.0, 58.5, 63.0, 67.5, 72.0,
76.5, 81.0, 85.5, 90.0, 94.5, 99.0, 103.5,
108.0, 112.5, 117.0, 121.5, 126.0, 130.5]" shape="(50,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -26,7 +26,7 @@
-33.75, -29.25, -24.75, -20.25, -15.75, -11.25,
-6.75, -2.25, 2.25, 6.75, 11.25, 15.75, 20.25,
24.75, 29.25, 33.75, 38.25]" shape="(49,)" standard_name="longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.cml b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.cml
index 242e524faf..5240f17929 100644
--- a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.cml
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.cml b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.cml
index ddab29700d..6b51bcf62f 100644
--- a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.cml
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.cml b/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.cml
index 21e081815f..1500bf0eb7 100644
--- a/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.cml
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.cml b/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.cml
index 92f11afa21..4ad7234837 100644
--- a/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.cml
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/division.cml b/lib/iris/tests/results/analysis/division.cml
index 6e145899e9..74e73a06d9 100644
--- a/lib/iris/tests/results/analysis/division.cml
+++ b/lib/iris/tests/results/analysis/division.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/division_by_array.cml b/lib/iris/tests/results/analysis/division_by_array.cml
index e5e6830382..c13639d5ab 100644
--- a/lib/iris/tests/results/analysis/division_by_array.cml
+++ b/lib/iris/tests/results/analysis/division_by_array.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/division_by_latitude.cml b/lib/iris/tests/results/analysis/division_by_latitude.cml
index 43ac7123d8..86da8c498e 100644
--- a/lib/iris/tests/results/analysis/division_by_latitude.cml
+++ b/lib/iris/tests/results/analysis/division_by_latitude.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/division_by_longitude.cml b/lib/iris/tests/results/analysis/division_by_longitude.cml
index bceef5320d..5a47116745 100644
--- a/lib/iris/tests/results/analysis/division_by_longitude.cml
+++ b/lib/iris/tests/results/analysis/division_by_longitude.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/division_by_singular_coord.cml b/lib/iris/tests/results/analysis/division_by_singular_coord.cml
index 8a27b76fb6..4709572ec8 100644
--- a/lib/iris/tests/results/analysis/division_by_singular_coord.cml
+++ b/lib/iris/tests/results/analysis/division_by_singular_coord.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/division_scalar.cml b/lib/iris/tests/results/analysis/division_scalar.cml
index 604026b9ee..d4e7dbdcb4 100644
--- a/lib/iris/tests/results/analysis/division_scalar.cml
+++ b/lib/iris/tests/results/analysis/division_scalar.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/exponentiate.cml b/lib/iris/tests/results/analysis/exponentiate.cml
index d30bebbbaf..5a20ec1af6 100644
--- a/lib/iris/tests/results/analysis/exponentiate.cml
+++ b/lib/iris/tests/results/analysis/exponentiate.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/gmean_latitude.cml b/lib/iris/tests/results/analysis/gmean_latitude.cml
index 83410aa301..f4842591a0 100644
--- a/lib/iris/tests/results/analysis/gmean_latitude.cml
+++ b/lib/iris/tests/results/analysis/gmean_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/gmean_latitude_longitude.cml b/lib/iris/tests/results/analysis/gmean_latitude_longitude.cml
index b120e7c262..8e850e8461 100644
--- a/lib/iris/tests/results/analysis/gmean_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/gmean_latitude_longitude.cml
@@ -15,12 +15,12 @@ Geometric mean of air_pressure_at_sea_level over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.cml
index 12384d114c..de2e19de3f 100644
--- a/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/hmean_latitude.cml b/lib/iris/tests/results/analysis/hmean_latitude.cml
index f12c998f91..2dd180b939 100644
--- a/lib/iris/tests/results/analysis/hmean_latitude.cml
+++ b/lib/iris/tests/results/analysis/hmean_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/hmean_latitude_longitude.cml b/lib/iris/tests/results/analysis/hmean_latitude_longitude.cml
index 2cbc7f03df..5cc4951107 100644
--- a/lib/iris/tests/results/analysis/hmean_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/hmean_latitude_longitude.cml
@@ -15,12 +15,12 @@ Harmonic mean of air_pressure_at_sea_level over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.cml
index 2a039cf6bd..e8576c3d72 100644
--- a/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/real_2dslice.cml b/lib/iris/tests/results/analysis/interpolation/linear/real_2dslice.cml
index 67e36697f7..64a7918e7d 100644
--- a/lib/iris/tests/results/analysis/interpolation/linear/real_2dslice.cml
+++ b/lib/iris/tests/results/analysis/interpolation/linear/real_2dslice.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/real_2slices.cml b/lib/iris/tests/results/analysis/interpolation/linear/real_2slices.cml
index bcb2602a46..5b82ee2ae5 100644
--- a/lib/iris/tests/results/analysis/interpolation/linear/real_2slices.cml
+++ b/lib/iris/tests/results/analysis/interpolation/linear/real_2slices.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/real_circular_2dslice.cml b/lib/iris/tests/results/analysis/interpolation/linear/real_circular_2dslice.cml
index 57a6238a18..919e45df59 100644
--- a/lib/iris/tests/results/analysis/interpolation/linear/real_circular_2dslice.cml
+++ b/lib/iris/tests/results/analysis/interpolation/linear/real_circular_2dslice.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded.cml b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded.cml
index d92f5e0aa2..e01990fdc1 100644
--- a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded.cml
+++ b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded_mid_point.cml b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded_mid_point.cml
index d92f5e0aa2..e01990fdc1 100644
--- a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded_mid_point.cml
+++ b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_bounded_mid_point.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude.cml b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude.cml
index ec356088b3..eebf429bcc 100644
--- a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude.cml
+++ b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude_longitude.cml b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude_longitude.cml
index 8ae2542848..607ceac89c 100644
--- a/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/interpolation/nearest_neighbour_extract_latitude_longitude.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/log.cml b/lib/iris/tests/results/analysis/log.cml
index 127ac69868..5087241ee9 100644
--- a/lib/iris/tests/results/analysis/log.cml
+++ b/lib/iris/tests/results/analysis/log.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/log10.cml b/lib/iris/tests/results/analysis/log10.cml
index 402d013709..0d326fb458 100644
--- a/lib/iris/tests/results/analysis/log10.cml
+++ b/lib/iris/tests/results/analysis/log10.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/log2.cml b/lib/iris/tests/results/analysis/log2.cml
index 3bc158f255..239763986e 100644
--- a/lib/iris/tests/results/analysis/log2.cml
+++ b/lib/iris/tests/results/analysis/log2.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/maths_original.cml b/lib/iris/tests/results/analysis/maths_original.cml
index 444a0cc459..2680de4f1f 100644
--- a/lib/iris/tests/results/analysis/maths_original.cml
+++ b/lib/iris/tests/results/analysis/maths_original.cml
@@ -21,12 +21,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/max_latitude.cml b/lib/iris/tests/results/analysis/max_latitude.cml
index c5bf6d9496..523e17f1b1 100644
--- a/lib/iris/tests/results/analysis/max_latitude.cml
+++ b/lib/iris/tests/results/analysis/max_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/max_latitude_longitude.cml b/lib/iris/tests/results/analysis/max_latitude_longitude.cml
index 3a1a52ada3..e77fc5e57a 100644
--- a/lib/iris/tests/results/analysis/max_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/max_latitude_longitude.cml
@@ -15,12 +15,12 @@ Maximum of air_pressure_at_sea_level over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/max_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/max_latitude_longitude_1call.cml
index ef73389515..bc5e374fc7 100644
--- a/lib/iris/tests/results/analysis/max_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/max_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/mean_latitude.cml b/lib/iris/tests/results/analysis/mean_latitude.cml
index 211abf52b7..81a1442fbf 100644
--- a/lib/iris/tests/results/analysis/mean_latitude.cml
+++ b/lib/iris/tests/results/analysis/mean_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/mean_latitude_longitude.cml b/lib/iris/tests/results/analysis/mean_latitude_longitude.cml
index 1b6dd298cb..724c4a4feb 100644
--- a/lib/iris/tests/results/analysis/mean_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/mean_latitude_longitude.cml
@@ -15,12 +15,12 @@ Mean of air_pressure_at_sea_level over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.cml
index 70e5592739..6ecc24beb9 100644
--- a/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/median_latitude.cml b/lib/iris/tests/results/analysis/median_latitude.cml
index fb1c5a348b..ce8ce0c724 100644
--- a/lib/iris/tests/results/analysis/median_latitude.cml
+++ b/lib/iris/tests/results/analysis/median_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/median_latitude_longitude.cml b/lib/iris/tests/results/analysis/median_latitude_longitude.cml
index 5c9fdea26c..86d43f4ab3 100644
--- a/lib/iris/tests/results/analysis/median_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/median_latitude_longitude.cml
@@ -15,12 +15,12 @@ Median of air_pressure_at_sea_level over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/median_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/median_latitude_longitude_1call.cml
index 105884859e..eb783229b2 100644
--- a/lib/iris/tests/results/analysis/median_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/median_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/min_latitude.cml b/lib/iris/tests/results/analysis/min_latitude.cml
index 89b4a138f1..b8003a2581 100644
--- a/lib/iris/tests/results/analysis/min_latitude.cml
+++ b/lib/iris/tests/results/analysis/min_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/min_latitude_longitude.cml b/lib/iris/tests/results/analysis/min_latitude_longitude.cml
index 610d1ad45d..15bea2bedf 100644
--- a/lib/iris/tests/results/analysis/min_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/min_latitude_longitude.cml
@@ -15,12 +15,12 @@ Minimum of air_pressure_at_sea_level over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/min_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/min_latitude_longitude_1call.cml
index 9e0243a92a..17f359689e 100644
--- a/lib/iris/tests/results/analysis/min_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/min_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/multiply.cml b/lib/iris/tests/results/analysis/multiply.cml
index 34803ac74d..307a3f0e4d 100644
--- a/lib/iris/tests/results/analysis/multiply.cml
+++ b/lib/iris/tests/results/analysis/multiply.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/multiply_different_std_name.cml b/lib/iris/tests/results/analysis/multiply_different_std_name.cml
index 2efb811464..bc4b1a41df 100644
--- a/lib/iris/tests/results/analysis/multiply_different_std_name.cml
+++ b/lib/iris/tests/results/analysis/multiply_different_std_name.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/original.cml b/lib/iris/tests/results/analysis/original.cml
index a9dd374648..07ac3d1579 100644
--- a/lib/iris/tests/results/analysis/original.cml
+++ b/lib/iris/tests/results/analysis/original.cml
@@ -13,13 +13,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/original_common.cml b/lib/iris/tests/results/analysis/original_common.cml
index a9290780de..459e8077c6 100644
--- a/lib/iris/tests/results/analysis/original_common.cml
+++ b/lib/iris/tests/results/analysis/original_common.cml
@@ -13,13 +13,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/original_hmean.cml b/lib/iris/tests/results/analysis/original_hmean.cml
index da0b51220a..dfcd853ccd 100644
--- a/lib/iris/tests/results/analysis/original_hmean.cml
+++ b/lib/iris/tests/results/analysis/original_hmean.cml
@@ -13,13 +13,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/sqrt.cml b/lib/iris/tests/results/analysis/sqrt.cml
index 1e5ff7562b..e76ab84a16 100644
--- a/lib/iris/tests/results/analysis/sqrt.cml
+++ b/lib/iris/tests/results/analysis/sqrt.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude.cml b/lib/iris/tests/results/analysis/std_dev_latitude.cml
index 8ee426f636..7018fd6ab8 100644
--- a/lib/iris/tests/results/analysis/std_dev_latitude.cml
+++ b/lib/iris/tests/results/analysis/std_dev_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude_longitude.cml b/lib/iris/tests/results/analysis/std_dev_latitude_longitude.cml
index 50a60cb185..3e22943dd6 100644
--- a/lib/iris/tests/results/analysis/std_dev_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/std_dev_latitude_longitude.cml
@@ -15,12 +15,12 @@ Standard deviation of air_pressure_at_sea_level over grid_longitude (delta degre
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.cml
index f24823ecef..aeb5ce88ca 100644
--- a/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/subtract.cml b/lib/iris/tests/results/analysis/subtract.cml
index 0f6ebb397c..26a0dc057e 100644
--- a/lib/iris/tests/results/analysis/subtract.cml
+++ b/lib/iris/tests/results/analysis/subtract.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/subtract_array.cml b/lib/iris/tests/results/analysis/subtract_array.cml
index 45de391d56..9fbb152516 100644
--- a/lib/iris/tests/results/analysis/subtract_array.cml
+++ b/lib/iris/tests/results/analysis/subtract_array.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/subtract_coord_x.cml b/lib/iris/tests/results/analysis/subtract_coord_x.cml
index 69d08053dd..15c231f4b0 100644
--- a/lib/iris/tests/results/analysis/subtract_coord_x.cml
+++ b/lib/iris/tests/results/analysis/subtract_coord_x.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/subtract_coord_y.cml b/lib/iris/tests/results/analysis/subtract_coord_y.cml
index 2ea90d8fce..f22ba22484 100644
--- a/lib/iris/tests/results/analysis/subtract_coord_y.cml
+++ b/lib/iris/tests/results/analysis/subtract_coord_y.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/subtract_scalar.cml b/lib/iris/tests/results/analysis/subtract_scalar.cml
index 2eeeb3e773..c517c2dce6 100644
--- a/lib/iris/tests/results/analysis/subtract_scalar.cml
+++ b/lib/iris/tests/results/analysis/subtract_scalar.cml
@@ -20,12 +20,12 @@
-50.0, -52.5, -55.0, -57.5, -60.0, -62.5, -65.0,
-67.5, -70.0, -72.5, -75.0, -77.5, -80.0, -82.5,
-85.0, -87.5, -90.0]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/sum_latitude.cml b/lib/iris/tests/results/analysis/sum_latitude.cml
index c8b6e31088..40aec13594 100644
--- a/lib/iris/tests/results/analysis/sum_latitude.cml
+++ b/lib/iris/tests/results/analysis/sum_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/sum_latitude_longitude.cml b/lib/iris/tests/results/analysis/sum_latitude_longitude.cml
index 964d1590d2..786581479c 100644
--- a/lib/iris/tests/results/analysis/sum_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/sum_latitude_longitude.cml
@@ -15,12 +15,12 @@ Sum of air_pressure_at_sea_level over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.cml
index 634e8c513d..ab44b173c4 100644
--- a/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/variance_latitude.cml b/lib/iris/tests/results/analysis/variance_latitude.cml
index 6a08a4a900..239aaf16ad 100644
--- a/lib/iris/tests/results/analysis/variance_latitude.cml
+++ b/lib/iris/tests/results/analysis/variance_latitude.cml
@@ -14,13 +14,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/variance_latitude_longitude.cml b/lib/iris/tests/results/analysis/variance_latitude_longitude.cml
index bf4f50af3e..02518b94d3 100644
--- a/lib/iris/tests/results/analysis/variance_latitude_longitude.cml
+++ b/lib/iris/tests/results/analysis/variance_latitude_longitude.cml
@@ -15,12 +15,12 @@ Variance of air_pressure_at_sea_level over grid_longitude (delta degrees of free
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.cml b/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.cml
index e924f5b39d..4e6b9858e9 100644
--- a/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.cml
+++ b/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.cml
@@ -14,12 +14,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/weighted_mean_lat.cml b/lib/iris/tests/results/analysis/weighted_mean_lat.cml
index 8480b6c203..5741ade1fa 100644
--- a/lib/iris/tests/results/analysis/weighted_mean_lat.cml
+++ b/lib/iris/tests/results/analysis/weighted_mean_lat.cml
@@ -10,12 +10,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/weighted_mean_latlon.cml b/lib/iris/tests/results/analysis/weighted_mean_latlon.cml
index d6da753a9e..42d2bc3e89 100644
--- a/lib/iris/tests/results/analysis/weighted_mean_latlon.cml
+++ b/lib/iris/tests/results/analysis/weighted_mean_latlon.cml
@@ -10,12 +10,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/weighted_mean_lon.cml b/lib/iris/tests/results/analysis/weighted_mean_lon.cml
index f624d932a7..88a065793d 100644
--- a/lib/iris/tests/results/analysis/weighted_mean_lon.cml
+++ b/lib/iris/tests/results/analysis/weighted_mean_lon.cml
@@ -10,12 +10,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/weighted_mean_original.cml b/lib/iris/tests/results/analysis/weighted_mean_original.cml
index 2641a9e1d6..d740082153 100644
--- a/lib/iris/tests/results/analysis/weighted_mean_original.cml
+++ b/lib/iris/tests/results/analysis/weighted_mean_original.cml
@@ -22,12 +22,12 @@
-62.4999, -64.9999, -67.4999, -69.9999,
-72.4999, -74.9999, -77.4999, -79.9999,
-82.4999, -84.9999, -87.4999, -89.9999]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/analysis/weighted_mean_source.cml b/lib/iris/tests/results/analysis/weighted_mean_source.cml
index 41ee123a57..8163d6931e 100644
--- a/lib/iris/tests/results/analysis/weighted_mean_source.cml
+++ b/lib/iris/tests/results/analysis/weighted_mean_source.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/cdm/extract/lat_eq_10.cml b/lib/iris/tests/results/cdm/extract/lat_eq_10.cml
index 71f78229ca..baed65298e 100644
--- a/lib/iris/tests/results/cdm/extract/lat_eq_10.cml
+++ b/lib/iris/tests/results/cdm/extract/lat_eq_10.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/cdm/extract/lat_gt_10.cml b/lib/iris/tests/results/cdm/extract/lat_gt_10.cml
index d9974e7f7e..57ed82cba2 100644
--- a/lib/iris/tests/results/cdm/extract/lat_gt_10.cml
+++ b/lib/iris/tests/results/cdm/extract/lat_gt_10.cml
@@ -23,7 +23,7 @@
72.5, 73.75, 75.0, 76.25, 77.5, 78.75, 80.0,
81.25, 82.5, 83.75, 85.0, 86.25, 87.5, 88.75,
90.0]" shape="(64,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -78,7 +78,7 @@
-
+
diff --git a/lib/iris/tests/results/cdm/extract/lat_gt_10_and_lon_ge_10.cml b/lib/iris/tests/results/cdm/extract/lat_gt_10_and_lon_ge_10.cml
index f6b688fd7f..68e19ad380 100644
--- a/lib/iris/tests/results/cdm/extract/lat_gt_10_and_lon_ge_10.cml
+++ b/lib/iris/tests/results/cdm/extract/lat_gt_10_and_lon_ge_10.cml
@@ -23,7 +23,7 @@
72.5, 73.75, 75.0, 76.25, 77.5, 78.75, 80.0,
81.25, 82.5, 83.75, 85.0, 86.25, 87.5, 88.75,
90.0]" shape="(64,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -79,7 +79,7 @@
-
+
diff --git a/lib/iris/tests/results/cdm/masked_cube.cml b/lib/iris/tests/results/cdm/masked_cube.cml
index f1049a3e6e..ae6b6f520b 100644
--- a/lib/iris/tests/results/cdm/masked_cube.cml
+++ b/lib/iris/tests/results/cdm/masked_cube.cml
@@ -13,14 +13,14 @@
-
+
-
+
diff --git a/lib/iris/tests/results/cdm/test_simple_cube_intersection.cml b/lib/iris/tests/results/cdm/test_simple_cube_intersection.cml
index f474e91b6d..a65188f2fe 100644
--- a/lib/iris/tests/results/cdm/test_simple_cube_intersection.cml
+++ b/lib/iris/tests/results/cdm/test_simple_cube_intersection.cml
@@ -4,12 +4,12 @@
-
+
-
+
@@ -23,12 +23,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/constrained_load/all_10_load_match.cml b/lib/iris/tests/results/constrained_load/all_10_load_match.cml
index 06c6ea27c6..aa04d47e66 100644
--- a/lib/iris/tests/results/constrained_load/all_10_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/all_10_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
@@ -64,7 +64,7 @@
-
+
@@ -77,7 +77,7 @@
-
+
@@ -116,7 +116,7 @@
-
+
@@ -128,7 +128,7 @@
-
+
@@ -166,7 +166,7 @@
-
+
@@ -178,7 +178,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/all_ml_10_22_load_match.cml b/lib/iris/tests/results/constrained_load/all_ml_10_22_load_match.cml
index dbc8436e81..d5380f2771 100644
--- a/lib/iris/tests/results/constrained_load/all_ml_10_22_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/all_ml_10_22_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -27,7 +27,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
@@ -80,7 +80,7 @@
-
+
@@ -120,7 +120,7 @@
-
+
@@ -133,7 +133,7 @@
-
+
@@ -172,7 +172,7 @@
-
+
@@ -185,7 +185,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/attribute_constraint.cml b/lib/iris/tests/results/constrained_load/attribute_constraint.cml
index 22d3723ed5..7637dac34f 100644
--- a/lib/iris/tests/results/constrained_load/attribute_constraint.cml
+++ b/lib/iris/tests/results/constrained_load/attribute_constraint.cml
@@ -15,7 +15,7 @@
-
+
@@ -70,7 +70,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_match.cml b/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_match.cml
index 9c03996f47..6994ebb008 100644
--- a/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
@@ -64,7 +64,7 @@
-
+
@@ -88,7 +88,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_strict.cml
index 9c03996f47..6994ebb008 100644
--- a/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_10_and_theta_level_gt_30_le_3_load_strict.cml
@@ -14,7 +14,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
@@ -64,7 +64,7 @@
-
+
@@ -88,7 +88,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_10_load_match.cml b/lib/iris/tests/results/constrained_load/theta_10_load_match.cml
index dfb9c4261a..b811a51042 100644
--- a/lib/iris/tests/results/constrained_load/theta_10_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_10_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_10_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_10_load_strict.cml
index dfb9c4261a..b811a51042 100644
--- a/lib/iris/tests/results/constrained_load/theta_10_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_10_load_strict.cml
@@ -14,7 +14,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_and_all_10_load_match.cml b/lib/iris/tests/results/constrained_load/theta_and_all_10_load_match.cml
index 5452164af5..c85c1eb8de 100644
--- a/lib/iris/tests/results/constrained_load/theta_and_all_10_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_and_all_10_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -153,7 +153,7 @@
-
+
@@ -165,7 +165,7 @@
-
+
@@ -203,7 +203,7 @@
-
+
@@ -216,7 +216,7 @@
-
+
@@ -255,7 +255,7 @@
-
+
@@ -267,7 +267,7 @@
-
+
@@ -305,7 +305,7 @@
-
+
@@ -317,7 +317,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_and_theta_10_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_and_theta_10_load_strict.cml
index b238517c8b..52bf35c389 100644
--- a/lib/iris/tests/results/constrained_load/theta_and_theta_10_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_and_theta_10_load_strict.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -153,7 +153,7 @@
-
+
@@ -165,7 +165,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_and_theta_load_match.cml b/lib/iris/tests/results/constrained_load/theta_and_theta_load_match.cml
index bc8f27c7ab..b2b72d7be0 100644
--- a/lib/iris/tests/results/constrained_load/theta_and_theta_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_and_theta_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -153,7 +153,7 @@
-
+
@@ -208,7 +208,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_and_theta_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_and_theta_load_strict.cml
index bc8f27c7ab..b2b72d7be0 100644
--- a/lib/iris/tests/results/constrained_load/theta_and_theta_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_and_theta_load_strict.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -153,7 +153,7 @@
-
+
@@ -208,7 +208,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_match.cml b/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_match.cml
index 26a000abba..693839e18c 100644
--- a/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -38,7 +38,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_strict.cml
index 26a000abba..693839e18c 100644
--- a/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_gt_30_le_3_load_strict.cml
@@ -14,7 +14,7 @@
-
+
@@ -38,7 +38,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_lat_30_load_match.cml b/lib/iris/tests/results/constrained_load/theta_lat_30_load_match.cml
index 2266ce1be5..636794390b 100644
--- a/lib/iris/tests/results/constrained_load/theta_lat_30_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_lat_30_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_lat_30_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_lat_30_load_strict.cml
index 2266ce1be5..636794390b 100644
--- a/lib/iris/tests/results/constrained_load/theta_lat_30_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_lat_30_load_strict.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_match.cml b/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_match.cml
index 231317c0f9..e9f0348b6e 100644
--- a/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_match.cml
@@ -19,7 +19,7 @@
72.5, 73.75, 75.0, 76.25, 77.5, 78.75, 80.0,
81.25, 82.5, 83.75, 85.0, 86.25, 87.5, 88.75,
90.0]" shape="(36,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -74,7 +74,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_strict.cml
index 231317c0f9..e9f0348b6e 100644
--- a/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_lat_gt_30_load_strict.cml
@@ -19,7 +19,7 @@
72.5, 73.75, 75.0, 76.25, 77.5, 78.75, 80.0,
81.25, 82.5, 83.75, 85.0, 86.25, 87.5, 88.75,
90.0]" shape="(36,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -74,7 +74,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_load_match.cml b/lib/iris/tests/results/constrained_load/theta_load_match.cml
index 353facb5e1..14d5030cad 100644
--- a/lib/iris/tests/results/constrained_load/theta_load_match.cml
+++ b/lib/iris/tests/results/constrained_load/theta_load_match.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/constrained_load/theta_load_strict.cml b/lib/iris/tests/results/constrained_load/theta_load_strict.cml
index 353facb5e1..14d5030cad 100644
--- a/lib/iris/tests/results/constrained_load/theta_load_strict.cml
+++ b/lib/iris/tests/results/constrained_load/theta_load_strict.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/coord_systems/CoordSystem_xml_element.xml b/lib/iris/tests/results/coord_systems/CoordSystem_xml_element.xml
new file mode 100644
index 0000000000..c76befa2e3
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/CoordSystem_xml_element.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/GeogCS_init_no_invf.xml b/lib/iris/tests/results/coord_systems/GeogCS_init_no_invf.xml
new file mode 100644
index 0000000000..b294b6cd46
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/GeogCS_init_no_invf.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/GeogCS_init_no_major.xml b/lib/iris/tests/results/coord_systems/GeogCS_init_no_major.xml
new file mode 100644
index 0000000000..b294b6cd46
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/GeogCS_init_no_major.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/GeogCS_init_no_minor.xml b/lib/iris/tests/results/coord_systems/GeogCS_init_no_minor.xml
new file mode 100644
index 0000000000..b294b6cd46
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/GeogCS_init_no_minor.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/GeogCS_init_sphere.xml b/lib/iris/tests/results/coord_systems/GeogCS_init_sphere.xml
new file mode 100644
index 0000000000..7244d027e7
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/GeogCS_init_sphere.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/RotatedGeogCS_init.xml b/lib/iris/tests/results/coord_systems/RotatedGeogCS_init.xml
new file mode 100644
index 0000000000..76361000b1
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/RotatedGeogCS_init.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/RotatedGeogCS_init_a.xml b/lib/iris/tests/results/coord_systems/RotatedGeogCS_init_a.xml
new file mode 100644
index 0000000000..c61ff3c608
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/RotatedGeogCS_init_a.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/RotatedGeogCS_init_b.xml b/lib/iris/tests/results/coord_systems/RotatedGeogCS_init_b.xml
new file mode 100644
index 0000000000..adfc9ae2f1
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/RotatedGeogCS_init_b.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/coord_systems/TransverseMercator_osgb.xml b/lib/iris/tests/results/coord_systems/TransverseMercator_osgb.xml
new file mode 100644
index 0000000000..6176d01aa5
--- /dev/null
+++ b/lib/iris/tests/results/coord_systems/TransverseMercator_osgb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.cml
index 12d02a1062..c0e281e567 100644
--- a/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.cml
@@ -12,12 +12,12 @@ Mean of air_potential_temperature over grid_longitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.cml b/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.cml
index 5eaca12994..d749f3c95d 100644
--- a/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.cml
@@ -11,12 +11,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.cml
index c83513ab86..0af9f9d743 100644
--- a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.cml
@@ -12,7 +12,7 @@ Mean of air_potential_temperature over model_level_number"/>
-
+
@@ -24,7 +24,7 @@ Mean of air_potential_temperature over model_level_number"/>
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.cml b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.cml
index 35f8834b5e..c4438520da 100644
--- a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.cml
@@ -11,7 +11,7 @@
-
+
@@ -23,7 +23,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.cml
index 788cfef69b..59fb545efa 100644
--- a/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.cml
@@ -12,7 +12,7 @@ Mean of air_potential_temperature over time"/>
-
+
@@ -24,7 +24,7 @@ Mean of air_potential_temperature over time"/>
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.cml b/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.cml
index eba2d22338..5c907d2b0f 100644
--- a/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.cml
@@ -11,7 +11,7 @@
-
+
@@ -23,7 +23,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.cml
index 197679221f..bd193a7046 100644
--- a/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.cml
@@ -12,12 +12,12 @@ Mean of air_potential_temperature over grid_latitude"/>
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.cml b/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.cml
index 9974dbf7ce..f8c292b0f5 100644
--- a/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.cml
@@ -11,12 +11,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.cml
index d7c5148e6c..38aaedc51b 100644
--- a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.cml
@@ -19,12 +19,12 @@ Mean of air_potential_temperature over model_level_number"/>
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.cml b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.cml
index 66acb93bc9..eab482cdf2 100644
--- a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.cml
@@ -18,12 +18,12 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.cml
index 259fe37764..bc52fbced8 100644
--- a/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.cml
@@ -19,12 +19,12 @@ Mean of air_potential_temperature over time"/>
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.cml b/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.cml
index 51a2b5db05..de05694534 100644
--- a/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.cml
@@ -18,12 +18,12 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.cml
index ccd00d8c2f..852c00a113 100644
--- a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.cml
@@ -12,7 +12,7 @@ Mean of air_potential_temperature over grid_latitude"/>
-
+
@@ -24,7 +24,7 @@ Mean of air_potential_temperature over grid_latitude"/>
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.cml b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.cml
index d661d8d6e2..0f1f4b1f5d 100644
--- a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.cml
@@ -11,7 +11,7 @@
-
+
@@ -23,7 +23,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.cml
index e26bf5ae16..ef660febf3 100644
--- a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.cml
@@ -19,12 +19,12 @@ Mean of air_potential_temperature over grid_longitude"/>
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.cml b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.cml
index f3a947981f..0b0a5a65f4 100644
--- a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.cml
@@ -18,12 +18,12 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.cml
index f4535621de..35ba4e6c7b 100644
--- a/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.cml
@@ -19,7 +19,7 @@ Mean of air_potential_temperature over time"/>
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -31,7 +31,7 @@ Mean of air_potential_temperature over time"/>
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.cml b/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.cml
index c0e1b6ab99..d0a62fcbc7 100644
--- a/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.cml
@@ -18,7 +18,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -30,7 +30,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/original.cml b/lib/iris/tests/results/cube_collapsed/original.cml
index 6dc3756b12..79651a1465 100644
--- a/lib/iris/tests/results/cube_collapsed/original.cml
+++ b/lib/iris/tests/results/cube_collapsed/original.cml
@@ -17,7 +17,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -29,7 +29,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.cml
index c007f29c84..446372e3c0 100644
--- a/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.cml
@@ -12,7 +12,7 @@ Mean of air_potential_temperature over grid_latitude"/>
-
+
@@ -24,7 +24,7 @@ Mean of air_potential_temperature over grid_latitude"/>
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.cml b/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.cml
index c0b6f1791b..e2bee2e4b1 100644
--- a/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.cml
@@ -11,7 +11,7 @@
-
+
@@ -23,7 +23,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.cml
index 8324d469f0..a88189d59b 100644
--- a/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.cml
@@ -19,12 +19,12 @@ Mean of air_potential_temperature over grid_longitude"/>
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.cml b/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.cml
index 300ccfe1c4..f5d008f324 100644
--- a/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.cml
@@ -18,12 +18,12 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.cml b/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.cml
index 86a757a6ac..69a1cf8e5e 100644
--- a/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.cml
@@ -19,7 +19,7 @@ Mean of air_potential_temperature over model_level_number"/>
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -31,7 +31,7 @@ Mean of air_potential_temperature over model_level_number"/>
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.cml b/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.cml
index 0181b74d4a..c22060c6a7 100644
--- a/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.cml
+++ b/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.cml
@@ -18,7 +18,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -30,7 +30,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.cml b/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.cml
index 988d30f4ec..c5054cc20c 100644
--- a/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.cml
+++ b/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.cml
@@ -11,7 +11,7 @@
-
+
@@ -23,7 +23,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.cml b/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.cml
index 6763d8be6f..c81b1146c1 100644
--- a/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.cml
+++ b/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.cml
@@ -18,12 +18,12 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_io/pickling/cubelist.cml b/lib/iris/tests/results/cube_io/pickling/cubelist.cml
index 044d3b5618..5ff779b948 100644
--- a/lib/iris/tests/results/cube_io/pickling/cubelist.cml
+++ b/lib/iris/tests/results/cube_io/pickling/cubelist.cml
@@ -406,7 +406,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -418,7 +418,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -528,7 +528,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -540,7 +540,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_io/pickling/single_cube.cml b/lib/iris/tests/results/cube_io/pickling/single_cube.cml
index c5adb87b1b..a88fd36460 100644
--- a/lib/iris/tests/results/cube_io/pickling/single_cube.cml
+++ b/lib/iris/tests/results/cube_io/pickling/single_cube.cml
@@ -406,7 +406,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -418,7 +418,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/cube_io/pickling/theta.cml b/lib/iris/tests/results/cube_io/pickling/theta.cml
index 2004b11338..35e503068d 100644
--- a/lib/iris/tests/results/cube_io/pickling/theta.cml
+++ b/lib/iris/tests/results/cube_io/pickling/theta.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/cube_io/pp/load/global.cml b/lib/iris/tests/results/cube_io/pp/load/global.cml
index 2641a9e1d6..d740082153 100644
--- a/lib/iris/tests/results/cube_io/pp/load/global.cml
+++ b/lib/iris/tests/results/cube_io/pp/load/global.cml
@@ -22,12 +22,12 @@
-62.4999, -64.9999, -67.4999, -69.9999,
-72.4999, -74.9999, -77.4999, -79.9999,
-82.4999, -84.9999, -87.4999, -89.9999]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_io/pp/no_std_name.cml b/lib/iris/tests/results/cube_io/pp/no_std_name.cml
index db986e3c57..870ed0150b 100644
--- a/lib/iris/tests/results/cube_io/pp/no_std_name.cml
+++ b/lib/iris/tests/results/cube_io/pp/no_std_name.cml
@@ -22,12 +22,12 @@
-62.4999, -64.9999, -67.4999, -69.9999,
-72.4999, -74.9999, -77.4999, -79.9999,
-82.4999, -84.9999, -87.4999, -89.9999]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing1.cml b/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing1.cml
index 8d7ec097f4..734bb20caf 100644
--- a/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing1.cml
+++ b/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing1.cml
@@ -11,12 +11,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing2.cml b/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing2.cml
index baedf2382a..b7c44e8d97 100644
--- a/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing2.cml
+++ b/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing2.cml
@@ -11,12 +11,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing3.cml b/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing3.cml
index 184daae61c..aa4f95c59f 100644
--- a/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing3.cml
+++ b/lib/iris/tests/results/cube_slice/real_data_dual_tuple_indexing3.cml
@@ -11,12 +11,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/cube_slice/real_empty_data_indexing.cml b/lib/iris/tests/results/cube_slice/real_empty_data_indexing.cml
index b6af60e881..8afa63bb2f 100644
--- a/lib/iris/tests/results/cube_slice/real_empty_data_indexing.cml
+++ b/lib/iris/tests/results/cube_slice/real_empty_data_indexing.cml
@@ -11,13 +11,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/derived/column.cml b/lib/iris/tests/results/derived/column.cml
index 5fdf2969ec..6f8319507b 100644
--- a/lib/iris/tests/results/derived/column.cml
+++ b/lib/iris/tests/results/derived/column.cml
@@ -36,12 +36,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/derived/no_orog.cml b/lib/iris/tests/results/derived/no_orog.cml
index dd55f1ce34..1b2ddaf862 100644
--- a/lib/iris/tests/results/derived/no_orog.cml
+++ b/lib/iris/tests/results/derived/no_orog.cml
@@ -43,7 +43,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -55,7 +55,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/derived/removed_orog.cml b/lib/iris/tests/results/derived/removed_orog.cml
index 2a4e23c5b4..e6f792b0bd 100644
--- a/lib/iris/tests/results/derived/removed_orog.cml
+++ b/lib/iris/tests/results/derived/removed_orog.cml
@@ -43,7 +43,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -55,7 +55,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/derived/removed_sigma.cml b/lib/iris/tests/results/derived/removed_sigma.cml
index b0a17e83e5..e68e049f63 100644
--- a/lib/iris/tests/results/derived/removed_sigma.cml
+++ b/lib/iris/tests/results/derived/removed_sigma.cml
@@ -393,7 +393,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -405,7 +405,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/derived/transposed.cml b/lib/iris/tests/results/derived/transposed.cml
index 541f858d23..a54b52ca1d 100644
--- a/lib/iris/tests/results/derived/transposed.cml
+++ b/lib/iris/tests/results/derived/transposed.cml
@@ -405,7 +405,7 @@
[-0.04005, -0.03915],
[-0.03915, -0.03825]]" id="25a5f42bc937b908" points="[-0.1278, -0.1269, -0.126, ..., -0.0405, -0.0396,
-0.0387]" shape="(100,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -417,7 +417,7 @@
[359.667, 359.668],
[359.668, 359.669]]" id="3bf28623a9db078e" points="[359.58, 359.581, 359.581, ..., 359.667, 359.668,
359.669]" shape="(100,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/file_load/4d_pp.dot b/lib/iris/tests/results/file_load/4d_pp.dot
index c175946481..1e73188817 100644
--- a/lib/iris/tests/results/file_load/4d_pp.dot
+++ b/lib/iris/tests/results/file_load/4d_pp.dot
@@ -74,8 +74,8 @@ digraph CubeGraph{
subgraph clusterCoordSystems {
label = "CoordSystems"
- "CoordSystem_LatLonCS_0" [
- label = "LatLonCS|cs_type: spherical\ndatum: SpheroidDatum(label='spherical', semi_major_axis=6371229.0, semi_minor_axis=6371229.0, flattening=0.0, units='m')\nn_pole: GeoPosition(latitude=37.5, longitude=177.5)\nprime_meridian: PrimeMeridian(label='Greenwich', value=0.0)\nreference_longitude: 0.0"
+ "CoordSystem_RotatedGeogCS_0" [
+ label = "RotatedGeogCS|ellipsoid: GeogCS(6371229.0)\ngrid_north_pole_latitude: 37.5\ngrid_north_pole_longitude: 177.5\nnorth_pole_grid_longitude: 0.0"
]
}
@@ -90,9 +90,9 @@ digraph CubeGraph{
":Cube" -> "Coord_0"
":Cube" -> "Coord_1"
- "Coord_2" -> "CoordSystem_LatLonCS_0"
+ "Coord_2" -> "CoordSystem_RotatedGeogCS_0"
":Cube" -> "Coord_2"
- "Coord_3" -> "CoordSystem_LatLonCS_0"
+ "Coord_3" -> "CoordSystem_RotatedGeogCS_0"
":Cube" -> "Coord_3"
":Cube" -> "Coord_4"
":Cube" -> "Coord_5"
diff --git a/lib/iris/tests/results/file_load/coord_attributes.dot b/lib/iris/tests/results/file_load/coord_attributes.dot
index 8796ddb38d..377eef8a19 100644
--- a/lib/iris/tests/results/file_load/coord_attributes.dot
+++ b/lib/iris/tests/results/file_load/coord_attributes.dot
@@ -54,8 +54,8 @@ digraph CubeGraph{
subgraph clusterCoordSystems {
label = "CoordSystems"
- "CoordSystem_LatLonCS_0" [
- label = "LatLonCS|cs_type: spherical\ndatum: SpheroidDatum(label='spherical', semi_major_axis=6371229.0, semi_minor_axis=6371229.0, flattening=0.0, units=Unit('m'))\nn_pole: GeoPosition(latitude=90.0, longitude=0.0)\nprime_meridian: PrimeMeridian(label='Greenwich', value=0.0)\nreference_longitude: 0.0"
+ "CoordSystem_GeogCS_0" [
+ label = "GeogCS|inverse_flattening: 0.0\nlongitude_of_prime_meridian: 0.0\nsemi_major_axis: 6371229.0\nsemi_minor_axis: 6371229.0"
]
}
@@ -69,9 +69,9 @@ digraph CubeGraph{
# Containment
":Cube" -> "Coord_0"
- "Coord_1" -> "CoordSystem_LatLonCS_0"
+ "Coord_1" -> "CoordSystem_GeogCS_0"
":Cube" -> "Coord_1"
- "Coord_2" -> "CoordSystem_LatLonCS_0"
+ "Coord_2" -> "CoordSystem_GeogCS_0"
":Cube" -> "Coord_2"
":Cube" -> "Coord_3"
":Cube" -> "Coord_4"
diff --git a/lib/iris/tests/results/file_load/global_pp.dot b/lib/iris/tests/results/file_load/global_pp.dot
index 8ebe9f6a47..0261f2a65d 100644
--- a/lib/iris/tests/results/file_load/global_pp.dot
+++ b/lib/iris/tests/results/file_load/global_pp.dot
@@ -54,8 +54,8 @@ digraph CubeGraph{
subgraph clusterCoordSystems {
label = "CoordSystems"
- "CoordSystem_LatLonCS_0" [
- label = "LatLonCS|cs_type: spherical\ndatum: SpheroidDatum(label='spherical', semi_major_axis=6371229.0, semi_minor_axis=6371229.0, flattening=0.0, units=Unit('m'))\nn_pole: GeoPosition(latitude=90.0, longitude=0.0)\nprime_meridian: PrimeMeridian(label='Greenwich', value=0.0)\nreference_longitude: 0.0"
+ "CoordSystem_GeogCS_0" [
+ label = "GeogCS|inverse_flattening: 0.0\nlongitude_of_prime_meridian: 0.0\nsemi_major_axis: 6371229.0\nsemi_minor_axis: 6371229.0"
]
}
@@ -69,9 +69,9 @@ digraph CubeGraph{
# Containment
":Cube" -> "Coord_0"
- "Coord_1" -> "CoordSystem_LatLonCS_0"
+ "Coord_1" -> "CoordSystem_GeogCS_0"
":Cube" -> "Coord_1"
- "Coord_2" -> "CoordSystem_LatLonCS_0"
+ "Coord_2" -> "CoordSystem_GeogCS_0"
":Cube" -> "Coord_2"
":Cube" -> "Coord_3"
":Cube" -> "Coord_4"
diff --git a/lib/iris/tests/results/file_load/theta_levels.cml b/lib/iris/tests/results/file_load/theta_levels.cml
index 7b877ebef1..957a6ba5a8 100644
--- a/lib/iris/tests/results/file_load/theta_levels.cml
+++ b/lib/iris/tests/results/file_load/theta_levels.cml
@@ -14,7 +14,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
@@ -64,7 +64,7 @@
-
+
@@ -76,7 +76,7 @@
-
+
@@ -114,7 +114,7 @@
-
+
@@ -126,7 +126,7 @@
-
+
@@ -164,7 +164,7 @@
-
+
@@ -176,7 +176,7 @@
-
+
@@ -214,7 +214,7 @@
-
+
@@ -226,7 +226,7 @@
-
+
@@ -264,7 +264,7 @@
-
+
@@ -276,7 +276,7 @@
-
+
@@ -314,7 +314,7 @@
-
+
@@ -326,7 +326,7 @@
-
+
@@ -364,7 +364,7 @@
-
+
@@ -376,7 +376,7 @@
-
+
@@ -414,7 +414,7 @@
-
+
@@ -426,7 +426,7 @@
-
+
@@ -464,7 +464,7 @@
-
+
@@ -476,7 +476,7 @@
-
+
@@ -514,7 +514,7 @@
-
+
@@ -526,7 +526,7 @@
-
+
@@ -564,7 +564,7 @@
-
+
@@ -576,7 +576,7 @@
-
+
@@ -614,7 +614,7 @@
-
+
@@ -626,7 +626,7 @@
-
+
@@ -664,7 +664,7 @@
-
+
@@ -676,7 +676,7 @@
-
+
@@ -714,7 +714,7 @@
-
+
@@ -726,7 +726,7 @@
-
+
@@ -764,7 +764,7 @@
-
+
@@ -776,7 +776,7 @@
-
+
@@ -814,7 +814,7 @@
-
+
@@ -826,7 +826,7 @@
-
+
@@ -864,7 +864,7 @@
-
+
@@ -876,7 +876,7 @@
-
+
@@ -914,7 +914,7 @@
-
+
@@ -926,7 +926,7 @@
-
+
@@ -964,7 +964,7 @@
-
+
@@ -976,7 +976,7 @@
-
+
@@ -1014,7 +1014,7 @@
-
+
@@ -1026,7 +1026,7 @@
-
+
@@ -1064,7 +1064,7 @@
-
+
@@ -1076,7 +1076,7 @@
-
+
@@ -1114,7 +1114,7 @@
-
+
@@ -1126,7 +1126,7 @@
-
+
@@ -1164,7 +1164,7 @@
-
+
@@ -1176,7 +1176,7 @@
-
+
@@ -1214,7 +1214,7 @@
-
+
@@ -1226,7 +1226,7 @@
-
+
@@ -1264,7 +1264,7 @@
-
+
@@ -1276,7 +1276,7 @@
-
+
@@ -1314,7 +1314,7 @@
-
+
@@ -1326,7 +1326,7 @@
-
+
@@ -1364,7 +1364,7 @@
-
+
@@ -1376,7 +1376,7 @@
-
+
@@ -1414,7 +1414,7 @@
-
+
@@ -1426,7 +1426,7 @@
-
+
@@ -1464,7 +1464,7 @@
-
+
@@ -1476,7 +1476,7 @@
-
+
@@ -1514,7 +1514,7 @@
-
+
@@ -1526,7 +1526,7 @@
-
+
@@ -1564,7 +1564,7 @@
-
+
@@ -1576,7 +1576,7 @@
-
+
@@ -1614,7 +1614,7 @@
-
+
@@ -1626,7 +1626,7 @@
-
+
@@ -1664,7 +1664,7 @@
-
+
@@ -1676,7 +1676,7 @@
-
+
@@ -1714,7 +1714,7 @@
-
+
@@ -1726,7 +1726,7 @@
-
+
@@ -1764,7 +1764,7 @@
-
+
@@ -1776,7 +1776,7 @@
-
+
@@ -1814,7 +1814,7 @@
-
+
@@ -1826,7 +1826,7 @@
-
+
@@ -1864,7 +1864,7 @@
-
+
@@ -1876,7 +1876,7 @@
-
+
diff --git a/lib/iris/tests/results/file_load/u_wind_levels.cml b/lib/iris/tests/results/file_load/u_wind_levels.cml
index abf06027e4..37bad3d3a0 100644
--- a/lib/iris/tests/results/file_load/u_wind_levels.cml
+++ b/lib/iris/tests/results/file_load/u_wind_levels.cml
@@ -14,7 +14,7 @@
-
+
@@ -27,7 +27,7 @@
-
+
@@ -65,7 +65,7 @@
-
+
@@ -78,7 +78,7 @@
-
+
@@ -116,7 +116,7 @@
-
+
@@ -129,7 +129,7 @@
-
+
@@ -167,7 +167,7 @@
-
+
@@ -180,7 +180,7 @@
-
+
@@ -218,7 +218,7 @@
-
+
@@ -231,7 +231,7 @@
-
+
@@ -269,7 +269,7 @@
-
+
@@ -282,7 +282,7 @@
-
+
@@ -320,7 +320,7 @@
-
+
@@ -333,7 +333,7 @@
-
+
@@ -371,7 +371,7 @@
-
+
@@ -384,7 +384,7 @@
-
+
@@ -422,7 +422,7 @@
-
+
@@ -435,7 +435,7 @@
-
+
@@ -473,7 +473,7 @@
-
+
@@ -486,7 +486,7 @@
-
+
@@ -524,7 +524,7 @@
-
+
@@ -537,7 +537,7 @@
-
+
@@ -575,7 +575,7 @@
-
+
@@ -588,7 +588,7 @@
-
+
@@ -626,7 +626,7 @@
-
+
@@ -639,7 +639,7 @@
-
+
@@ -677,7 +677,7 @@
-
+
@@ -690,7 +690,7 @@
-
+
@@ -728,7 +728,7 @@
-
+
@@ -741,7 +741,7 @@
-
+
@@ -779,7 +779,7 @@
-
+
@@ -792,7 +792,7 @@
-
+
@@ -830,7 +830,7 @@
-
+
@@ -843,7 +843,7 @@
-
+
@@ -881,7 +881,7 @@
-
+
@@ -894,7 +894,7 @@
-
+
@@ -932,7 +932,7 @@
-
+
@@ -945,7 +945,7 @@
-
+
@@ -983,7 +983,7 @@
-
+
@@ -996,7 +996,7 @@
-
+
@@ -1034,7 +1034,7 @@
-
+
@@ -1047,7 +1047,7 @@
-
+
@@ -1085,7 +1085,7 @@
-
+
@@ -1098,7 +1098,7 @@
-
+
@@ -1136,7 +1136,7 @@
-
+
@@ -1149,7 +1149,7 @@
-
+
@@ -1187,7 +1187,7 @@
-
+
@@ -1200,7 +1200,7 @@
-
+
@@ -1238,7 +1238,7 @@
-
+
@@ -1251,7 +1251,7 @@
-
+
@@ -1289,7 +1289,7 @@
-
+
@@ -1302,7 +1302,7 @@
-
+
@@ -1340,7 +1340,7 @@
-
+
@@ -1353,7 +1353,7 @@
-
+
@@ -1391,7 +1391,7 @@
-
+
@@ -1404,7 +1404,7 @@
-
+
@@ -1442,7 +1442,7 @@
-
+
@@ -1455,7 +1455,7 @@
-
+
@@ -1493,7 +1493,7 @@
-
+
@@ -1506,7 +1506,7 @@
-
+
@@ -1544,7 +1544,7 @@
-
+
@@ -1557,7 +1557,7 @@
-
+
@@ -1595,7 +1595,7 @@
-
+
@@ -1608,7 +1608,7 @@
-
+
@@ -1646,7 +1646,7 @@
-
+
@@ -1659,7 +1659,7 @@
-
+
@@ -1697,7 +1697,7 @@
-
+
@@ -1710,7 +1710,7 @@
-
+
@@ -1748,7 +1748,7 @@
-
+
@@ -1761,7 +1761,7 @@
-
+
@@ -1799,7 +1799,7 @@
-
+
@@ -1812,7 +1812,7 @@
-
+
@@ -1850,7 +1850,7 @@
-
+
@@ -1863,7 +1863,7 @@
-
+
@@ -1901,7 +1901,7 @@
-
+
@@ -1914,7 +1914,7 @@
-
+
diff --git a/lib/iris/tests/results/file_load/v_wind_levels.cml b/lib/iris/tests/results/file_load/v_wind_levels.cml
index c2171e44b8..910b04d1de 100644
--- a/lib/iris/tests/results/file_load/v_wind_levels.cml
+++ b/lib/iris/tests/results/file_load/v_wind_levels.cml
@@ -15,7 +15,7 @@
-
+
@@ -27,7 +27,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
@@ -78,7 +78,7 @@
-
+
@@ -117,7 +117,7 @@
-
+
@@ -129,7 +129,7 @@
-
+
@@ -168,7 +168,7 @@
-
+
@@ -180,7 +180,7 @@
-
+
@@ -219,7 +219,7 @@
-
+
@@ -231,7 +231,7 @@
-
+
@@ -270,7 +270,7 @@
-
+
@@ -282,7 +282,7 @@
-
+
@@ -321,7 +321,7 @@
-
+
@@ -333,7 +333,7 @@
-
+
@@ -372,7 +372,7 @@
-
+
@@ -384,7 +384,7 @@
-
+
@@ -423,7 +423,7 @@
-
+
@@ -435,7 +435,7 @@
-
+
@@ -474,7 +474,7 @@
-
+
@@ -486,7 +486,7 @@
-
+
@@ -525,7 +525,7 @@
-
+
@@ -537,7 +537,7 @@
-
+
@@ -576,7 +576,7 @@
-
+
@@ -588,7 +588,7 @@
-
+
@@ -627,7 +627,7 @@
-
+
@@ -639,7 +639,7 @@
-
+
@@ -678,7 +678,7 @@
-
+
@@ -690,7 +690,7 @@
-
+
@@ -729,7 +729,7 @@
-
+
@@ -741,7 +741,7 @@
-
+
@@ -780,7 +780,7 @@
-
+
@@ -792,7 +792,7 @@
-
+
@@ -831,7 +831,7 @@
-
+
@@ -843,7 +843,7 @@
-
+
@@ -882,7 +882,7 @@
-
+
@@ -894,7 +894,7 @@
-
+
@@ -933,7 +933,7 @@
-
+
@@ -945,7 +945,7 @@
-
+
@@ -984,7 +984,7 @@
-
+
@@ -996,7 +996,7 @@
-
+
@@ -1035,7 +1035,7 @@
-
+
@@ -1047,7 +1047,7 @@
-
+
@@ -1086,7 +1086,7 @@
-
+
@@ -1098,7 +1098,7 @@
-
+
@@ -1137,7 +1137,7 @@
-
+
@@ -1149,7 +1149,7 @@
-
+
@@ -1188,7 +1188,7 @@
-
+
@@ -1200,7 +1200,7 @@
-
+
@@ -1239,7 +1239,7 @@
-
+
@@ -1251,7 +1251,7 @@
-
+
@@ -1290,7 +1290,7 @@
-
+
@@ -1302,7 +1302,7 @@
-
+
@@ -1341,7 +1341,7 @@
-
+
@@ -1353,7 +1353,7 @@
-
+
@@ -1392,7 +1392,7 @@
-
+
@@ -1404,7 +1404,7 @@
-
+
@@ -1443,7 +1443,7 @@
-
+
@@ -1455,7 +1455,7 @@
-
+
@@ -1494,7 +1494,7 @@
-
+
@@ -1506,7 +1506,7 @@
-
+
@@ -1545,7 +1545,7 @@
-
+
@@ -1557,7 +1557,7 @@
-
+
@@ -1596,7 +1596,7 @@
-
+
@@ -1608,7 +1608,7 @@
-
+
@@ -1647,7 +1647,7 @@
-
+
@@ -1659,7 +1659,7 @@
-
+
@@ -1698,7 +1698,7 @@
-
+
@@ -1710,7 +1710,7 @@
-
+
@@ -1749,7 +1749,7 @@
-
+
@@ -1761,7 +1761,7 @@
-
+
@@ -1800,7 +1800,7 @@
-
+
@@ -1812,7 +1812,7 @@
-
+
@@ -1851,7 +1851,7 @@
-
+
@@ -1863,7 +1863,7 @@
-
+
@@ -1902,7 +1902,7 @@
-
+
@@ -1914,7 +1914,7 @@
-
+
diff --git a/lib/iris/tests/results/file_load/wind_levels.cml b/lib/iris/tests/results/file_load/wind_levels.cml
index 4d9196abfd..2f28608755 100644
--- a/lib/iris/tests/results/file_load/wind_levels.cml
+++ b/lib/iris/tests/results/file_load/wind_levels.cml
@@ -14,7 +14,7 @@
-
+
@@ -27,7 +27,7 @@
-
+
@@ -65,7 +65,7 @@
-
+
@@ -78,7 +78,7 @@
-
+
@@ -116,7 +116,7 @@
-
+
@@ -129,7 +129,7 @@
-
+
@@ -167,7 +167,7 @@
-
+
@@ -180,7 +180,7 @@
-
+
@@ -218,7 +218,7 @@
-
+
@@ -231,7 +231,7 @@
-
+
@@ -269,7 +269,7 @@
-
+
@@ -282,7 +282,7 @@
-
+
@@ -320,7 +320,7 @@
-
+
@@ -333,7 +333,7 @@
-
+
@@ -371,7 +371,7 @@
-
+
@@ -384,7 +384,7 @@
-
+
@@ -422,7 +422,7 @@
-
+
@@ -435,7 +435,7 @@
-
+
@@ -473,7 +473,7 @@
-
+
@@ -486,7 +486,7 @@
-
+
@@ -524,7 +524,7 @@
-
+
@@ -537,7 +537,7 @@
-
+
@@ -575,7 +575,7 @@
-
+
@@ -588,7 +588,7 @@
-
+
@@ -626,7 +626,7 @@
-
+
@@ -639,7 +639,7 @@
-
+
@@ -677,7 +677,7 @@
-
+
@@ -690,7 +690,7 @@
-
+
@@ -728,7 +728,7 @@
-
+
@@ -741,7 +741,7 @@
-
+
@@ -779,7 +779,7 @@
-
+
@@ -792,7 +792,7 @@
-
+
@@ -830,7 +830,7 @@
-
+
@@ -843,7 +843,7 @@
-
+
@@ -881,7 +881,7 @@
-
+
@@ -894,7 +894,7 @@
-
+
@@ -932,7 +932,7 @@
-
+
@@ -945,7 +945,7 @@
-
+
@@ -983,7 +983,7 @@
-
+
@@ -996,7 +996,7 @@
-
+
@@ -1034,7 +1034,7 @@
-
+
@@ -1047,7 +1047,7 @@
-
+
@@ -1085,7 +1085,7 @@
-
+
@@ -1098,7 +1098,7 @@
-
+
@@ -1136,7 +1136,7 @@
-
+
@@ -1149,7 +1149,7 @@
-
+
@@ -1187,7 +1187,7 @@
-
+
@@ -1200,7 +1200,7 @@
-
+
@@ -1238,7 +1238,7 @@
-
+
@@ -1251,7 +1251,7 @@
-
+
@@ -1289,7 +1289,7 @@
-
+
@@ -1302,7 +1302,7 @@
-
+
@@ -1340,7 +1340,7 @@
-
+
@@ -1353,7 +1353,7 @@
-
+
@@ -1391,7 +1391,7 @@
-
+
@@ -1404,7 +1404,7 @@
-
+
@@ -1442,7 +1442,7 @@
-
+
@@ -1455,7 +1455,7 @@
-
+
@@ -1493,7 +1493,7 @@
-
+
@@ -1506,7 +1506,7 @@
-
+
@@ -1544,7 +1544,7 @@
-
+
@@ -1557,7 +1557,7 @@
-
+
@@ -1595,7 +1595,7 @@
-
+
@@ -1608,7 +1608,7 @@
-
+
@@ -1646,7 +1646,7 @@
-
+
@@ -1659,7 +1659,7 @@
-
+
@@ -1697,7 +1697,7 @@
-
+
@@ -1710,7 +1710,7 @@
-
+
@@ -1748,7 +1748,7 @@
-
+
@@ -1761,7 +1761,7 @@
-
+
@@ -1799,7 +1799,7 @@
-
+
@@ -1812,7 +1812,7 @@
-
+
@@ -1850,7 +1850,7 @@
-
+
@@ -1863,7 +1863,7 @@
-
+
@@ -1901,7 +1901,7 @@
-
+
@@ -1914,7 +1914,7 @@
-
+
@@ -1953,7 +1953,7 @@
-
+
@@ -1965,7 +1965,7 @@
-
+
@@ -2004,7 +2004,7 @@
-
+
@@ -2016,7 +2016,7 @@
-
+
@@ -2055,7 +2055,7 @@
-
+
@@ -2067,7 +2067,7 @@
-
+
@@ -2106,7 +2106,7 @@
-
+
@@ -2118,7 +2118,7 @@
-
+
@@ -2157,7 +2157,7 @@
-
+
@@ -2169,7 +2169,7 @@
-
+
@@ -2208,7 +2208,7 @@
-
+
@@ -2220,7 +2220,7 @@
-
+
@@ -2259,7 +2259,7 @@
-
+
@@ -2271,7 +2271,7 @@
-
+
@@ -2310,7 +2310,7 @@
-
+
@@ -2322,7 +2322,7 @@
-
+
@@ -2361,7 +2361,7 @@
-
+
@@ -2373,7 +2373,7 @@
-
+
@@ -2412,7 +2412,7 @@
-
+
@@ -2424,7 +2424,7 @@
-
+
@@ -2463,7 +2463,7 @@
-
+
@@ -2475,7 +2475,7 @@
-
+
@@ -2514,7 +2514,7 @@
-
+
@@ -2526,7 +2526,7 @@
-
+
@@ -2565,7 +2565,7 @@
-
+
@@ -2577,7 +2577,7 @@
-
+
@@ -2616,7 +2616,7 @@
-
+
@@ -2628,7 +2628,7 @@
-
+
@@ -2667,7 +2667,7 @@
-
+
@@ -2679,7 +2679,7 @@
-
+
@@ -2718,7 +2718,7 @@
-
+
@@ -2730,7 +2730,7 @@
-
+
@@ -2769,7 +2769,7 @@
-
+
@@ -2781,7 +2781,7 @@
-
+
@@ -2820,7 +2820,7 @@
-
+
@@ -2832,7 +2832,7 @@
-
+
@@ -2871,7 +2871,7 @@
-
+
@@ -2883,7 +2883,7 @@
-
+
@@ -2922,7 +2922,7 @@
-
+
@@ -2934,7 +2934,7 @@
-
+
@@ -2973,7 +2973,7 @@
-
+
@@ -2985,7 +2985,7 @@
-
+
@@ -3024,7 +3024,7 @@
-
+
@@ -3036,7 +3036,7 @@
-
+
@@ -3075,7 +3075,7 @@
-
+
@@ -3087,7 +3087,7 @@
-
+
@@ -3126,7 +3126,7 @@
-
+
@@ -3138,7 +3138,7 @@
-
+
@@ -3177,7 +3177,7 @@
-
+
@@ -3189,7 +3189,7 @@
-
+
@@ -3228,7 +3228,7 @@
-
+
@@ -3240,7 +3240,7 @@
-
+
@@ -3279,7 +3279,7 @@
-
+
@@ -3291,7 +3291,7 @@
-
+
@@ -3330,7 +3330,7 @@
-
+
@@ -3342,7 +3342,7 @@
-
+
@@ -3381,7 +3381,7 @@
-
+
@@ -3393,7 +3393,7 @@
-
+
@@ -3432,7 +3432,7 @@
-
+
@@ -3444,7 +3444,7 @@
-
+
@@ -3483,7 +3483,7 @@
-
+
@@ -3495,7 +3495,7 @@
-
+
@@ -3534,7 +3534,7 @@
-
+
@@ -3546,7 +3546,7 @@
-
+
@@ -3585,7 +3585,7 @@
-
+
@@ -3597,7 +3597,7 @@
-
+
@@ -3636,7 +3636,7 @@
-
+
@@ -3648,7 +3648,7 @@
-
+
@@ -3687,7 +3687,7 @@
-
+
@@ -3699,7 +3699,7 @@
-
+
@@ -3738,7 +3738,7 @@
-
+
@@ -3750,7 +3750,7 @@
-
+
@@ -3789,7 +3789,7 @@
-
+
@@ -3801,7 +3801,7 @@
-
+
@@ -3840,7 +3840,7 @@
-
+
@@ -3852,7 +3852,7 @@
-
+
diff --git a/lib/iris/tests/results/grib_load/3_layer.cml b/lib/iris/tests/results/grib_load/3_layer.cml
index 25fb8d6838..6cf51d21ad 100644
--- a/lib/iris/tests/results/grib_load/3_layer.cml
+++ b/lib/iris/tests/results/grib_load/3_layer.cml
@@ -8,13 +8,13 @@
-
+
-
+
@@ -55,13 +55,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
@@ -89,13 +89,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_0.cml b/lib/iris/tests/results/grib_load/earth_shape_0.cml
index c4bf60b336..5480fe0474 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_0.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_0.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_1.cml b/lib/iris/tests/results/grib_load/earth_shape_1.cml
index 7b5a7888fd..8250c0493b 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_1.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_1.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_2.cml b/lib/iris/tests/results/grib_load/earth_shape_2.cml
index c14ce00bbe..8179c13e8f 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_2.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_2.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_3.cml b/lib/iris/tests/results/grib_load/earth_shape_3.cml
index ef01d40df8..30fe3856ac 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_3.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_3.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_4.cml b/lib/iris/tests/results/grib_load/earth_shape_4.cml
index 31447a26e6..e010728049 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_4.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_4.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_5.cml b/lib/iris/tests/results/grib_load/earth_shape_5.cml
index 2acf184f3a..06ddbfc0bb 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_5.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_5.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_6.cml b/lib/iris/tests/results/grib_load/earth_shape_6.cml
index 064ecfb579..344197ffb4 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_6.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_6.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_7.cml b/lib/iris/tests/results/grib_load/earth_shape_7.cml
index c1c652eb5a..69d9d4bbf1 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_7.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_7.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/earth_shape_grib1.cml b/lib/iris/tests/results/grib_load/earth_shape_grib1.cml
index 741580acb4..21b4bbc43d 100644
--- a/lib/iris/tests/results/grib_load/earth_shape_grib1.cml
+++ b/lib/iris/tests/results/grib_load/earth_shape_grib1.cml
@@ -7,13 +7,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/ineg_jneg.cml b/lib/iris/tests/results/grib_load/ineg_jneg.cml
index c5b0b3560c..e2c0c60d57 100644
--- a/lib/iris/tests/results/grib_load/ineg_jneg.cml
+++ b/lib/iris/tests/results/grib_load/ineg_jneg.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/ineg_jpos.cml b/lib/iris/tests/results/grib_load/ineg_jpos.cml
index f91fe61c99..d35cbc1ed4 100644
--- a/lib/iris/tests/results/grib_load/ineg_jpos.cml
+++ b/lib/iris/tests/results/grib_load/ineg_jpos.cml
@@ -25,13 +25,13 @@
69.999998, 72.499997, 74.999996, 77.499995,
79.999994, 82.499993, 84.999992, 87.499991,
89.99999]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/ipos_jneg.cml b/lib/iris/tests/results/grib_load/ipos_jneg.cml
index c4bf60b336..5480fe0474 100644
--- a/lib/iris/tests/results/grib_load/ipos_jneg.cml
+++ b/lib/iris/tests/results/grib_load/ipos_jneg.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/ipos_jpos.cml b/lib/iris/tests/results/grib_load/ipos_jpos.cml
index 00ce00dd5b..5cc5853d46 100644
--- a/lib/iris/tests/results/grib_load/ipos_jpos.cml
+++ b/lib/iris/tests/results/grib_load/ipos_jpos.cml
@@ -25,13 +25,13 @@
69.999998, 72.499997, 74.999996, 77.499995,
79.999994, 82.499993, 84.999992, 87.499991,
89.99999]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/rotated.cml b/lib/iris/tests/results/grib_load/rotated.cml
index d67dd343b2..587914c220 100644
--- a/lib/iris/tests/results/grib_load/rotated.cml
+++ b/lib/iris/tests/results/grib_load/rotated.cml
@@ -7,12 +7,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/time_bound.cml b/lib/iris/tests/results/grib_load/time_bound.cml
index c4bf60b336..5480fe0474 100644
--- a/lib/iris/tests/results/grib_load/time_bound.cml
+++ b/lib/iris/tests/results/grib_load/time_bound.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/grib_load/y_fastest.cml b/lib/iris/tests/results/grib_load/y_fastest.cml
index 516affae51..6337d55ac1 100644
--- a/lib/iris/tests/results/grib_load/y_fastest.cml
+++ b/lib/iris/tests/results/grib_load/y_fastest.cml
@@ -25,13 +25,13 @@
-67.499954, -69.999953, -72.499952, -74.999951,
-77.49995, -79.999949, -82.499948, -84.999947,
-87.499946, -89.999945]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
-
+
diff --git a/lib/iris/tests/results/merge/dec.cml b/lib/iris/tests/results/merge/dec.cml
index a304a52226..99026a368e 100644
--- a/lib/iris/tests/results/merge/dec.cml
+++ b/lib/iris/tests/results/merge/dec.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -153,7 +153,7 @@
-
+
@@ -209,7 +209,7 @@
-
+
@@ -294,7 +294,7 @@
-
+
@@ -349,7 +349,7 @@
-
+
@@ -433,7 +433,7 @@
-
+
@@ -488,7 +488,7 @@
-
+
diff --git a/lib/iris/tests/results/merge/theta.cml b/lib/iris/tests/results/merge/theta.cml
index 353facb5e1..14d5030cad 100644
--- a/lib/iris/tests/results/merge/theta.cml
+++ b/lib/iris/tests/results/merge/theta.cml
@@ -14,7 +14,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/lib/iris/tests/results/merge/theta_two_forecast_periods.cml b/lib/iris/tests/results/merge/theta_two_forecast_periods.cml
index a8b3e49de3..7e6ac4a05b 100644
--- a/lib/iris/tests/results/merge/theta_two_forecast_periods.cml
+++ b/lib/iris/tests/results/merge/theta_two_forecast_periods.cml
@@ -406,7 +406,7 @@
[0.35145, 0.36495],
[0.36495, 0.37845]]" id="25a5f42bc937b908" points="[-0.5274, -0.5139, -0.5004, ..., 0.3447, 0.3582,
0.3717]" shape="(412,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -418,7 +418,7 @@
[360.059, 360.072],
[360.072, 360.086]]" id="3bf28623a9db078e" points="[359.18, 359.194, 359.207, ..., 360.052, 360.066,
360.079]" shape="(412,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_cell_methods.cml b/lib/iris/tests/results/netcdf/netcdf_cell_methods.cml
index b29c0545fb..bdf12fa919 100644
--- a/lib/iris/tests/results/netcdf/netcdf_cell_methods.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_cell_methods.cml
@@ -4,12 +4,12 @@
-
+
-
+
@@ -28,12 +28,12 @@
-
+
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -82,12 +82,12 @@
-
+
-
+
@@ -109,12 +109,12 @@
-
+
-
+
@@ -136,12 +136,12 @@
-
+
-
+
@@ -159,12 +159,12 @@
-
+
-
+
@@ -182,12 +182,12 @@
-
+
-
+
@@ -206,12 +206,12 @@
-
+
-
+
@@ -230,12 +230,12 @@
-
+
-
+
@@ -257,12 +257,12 @@
-
+
-
+
@@ -280,12 +280,12 @@
-
+
-
+
@@ -304,12 +304,12 @@
-
+
-
+
@@ -328,12 +328,12 @@
-
+
-
+
@@ -355,12 +355,12 @@
-
+
-
+
@@ -449,12 +449,12 @@
-
+
-
+
@@ -472,12 +472,12 @@
-
+
-
+
@@ -496,12 +496,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_index_0.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_index_0.cml
index d3ee16fe94..3400a8c39e 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_index_0.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_index_0.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_index_1.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_index_1.cml
index 4f6a0c252f..4db9ac1e2c 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_index_1.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_index_1.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_index_2.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_index_2.cml
index 05b8b95bc5..626110b24b 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_index_2.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_index_2.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_mix_0.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_mix_0.cml
index 191b76a9dd..14348b7d0d 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_mix_0.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_mix_0.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_mix_1.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_mix_1.cml
index 51b45085a1..e95fb19835 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_mix_1.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_mix_1.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_slice_0.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_slice_0.cml
index d9fbb79029..ed95b0866a 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_slice_0.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_slice_0.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_slice_1.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_slice_1.cml
index f8299eee1b..d71ba808d2 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_slice_1.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_slice_1.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_slice_2.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_slice_2.cml
index c0ffcb44d9..df73f3355f 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_slice_2.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_slice_2.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_0.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_0.cml
index 56ffa1dd05..289f643114 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_0.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_0.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_1.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_1.cml
index 6f1b303679..fd98a49b25 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_1.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_1.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_2.cml b/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_2.cml
index facfb47ffa..93377e9608 100644
--- a/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_2.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_deferred_tuple_2.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_global_xyt_hires.cml b/lib/iris/tests/results/netcdf/netcdf_global_xyt_hires.cml
index 5d5c8292d3..81b12ec7dc 100644
--- a/lib/iris/tests/results/netcdf/netcdf_global_xyt_hires.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_global_xyt_hires.cml
@@ -31,7 +31,7 @@
[87.4911905887, 88.6247285576],
[88.6247285576, 90.0]]" id="95f615fae348902" long_name="latitude" points="[-89.1415194265, -88.029428868, -86.9107708141,
..., 86.9107708141, 88.029428868, 89.1415194265]" shape="(160,)" standard_name="latitude" units="Unit('degrees')" value_type="float64">
-
+
@@ -42,7 +42,7 @@
[356.0625, 357.1875],
[357.1875, 358.3125],
[358.3125, 359.4375]]" id="3207b04384adbdec" long_name="longitude" points="[0.0, 1.125, 2.25, ..., 356.625, 357.75, 358.875]" shape="(320,)" standard_name="longitude" units="Unit('degrees')" value_type="float64">
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_global_xyt_total.cml b/lib/iris/tests/results/netcdf/netcdf_global_xyt_total.cml
index 288b124b86..38fbea6592 100644
--- a/lib/iris/tests/results/netcdf/netcdf_global_xyt_total.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_global_xyt_total.cml
@@ -9,12 +9,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems.cml b/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems.cml
index 5c9d9c1bcf..bbda8be1c7 100644
--- a/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems.cml
@@ -8,12 +8,12 @@
-
+
-
+
@@ -38,12 +38,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_0.cml b/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_0.cml
index fb9d84d606..bf0238a9bf 100644
--- a/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_0.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_0.cml
@@ -8,12 +8,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_1.cml b/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_1.cml
index 06f147b9c9..167782cf7f 100644
--- a/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_1.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_global_xyzt_gems_iter_1.cml
@@ -8,12 +8,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_rotated_xy_land.cml b/lib/iris/tests/results/netcdf/netcdf_rotated_xy_land.cml
index 77671baf29..932bffe1ab 100644
--- a/lib/iris/tests/results/netcdf/netcdf_rotated_xy_land.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_rotated_xy_land.cml
@@ -14,7 +14,7 @@
-
+
@@ -32,7 +32,7 @@
9.19, 9.63, 10.07, 10.51, 10.95, 11.39, 11.83,
12.27, 12.71, 13.15, 13.59, 14.03, 14.47, 14.91,
15.35]" shape="(85,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_rotated_xyt_precipitation.cml b/lib/iris/tests/results/netcdf/netcdf_rotated_xyt_precipitation.cml
index c351415790..fa3d7f502d 100644
--- a/lib/iris/tests/results/netcdf/netcdf_rotated_xyt_precipitation.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_rotated_xyt_precipitation.cml
@@ -10,12 +10,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_save_hybrid_height.cdl b/lib/iris/tests/results/netcdf/netcdf_save_hybrid_height.cdl
index e32134d67c..4d6295be1a 100644
--- a/lib/iris/tests/results/netcdf/netcdf_save_hybrid_height.cdl
+++ b/lib/iris/tests/results/netcdf/netcdf_save_hybrid_height.cdl
@@ -17,8 +17,8 @@ variables:
rotated_latitude_longitude:longitude_of_prime_meridian = 0. ;
rotated_latitude_longitude:semi_major_axis = 6371229. ;
rotated_latitude_longitude:semi_minor_axis = 6371229. ;
- rotated_latitude_longitude:grid_north_pole_latitude = 37.5f ;
- rotated_latitude_longitude:grid_north_pole_longitude = 177.5f ;
+ rotated_latitude_longitude:grid_north_pole_latitude = 37.5 ;
+ rotated_latitude_longitude:grid_north_pole_longitude = 177.5 ;
rotated_latitude_longitude:north_pole_grid_longitude = 0. ;
double time(time) ;
time:axis = "T" ;
diff --git a/lib/iris/tests/results/netcdf/netcdf_save_load_hybrid_height.cml b/lib/iris/tests/results/netcdf/netcdf_save_load_hybrid_height.cml
index a5a4c9ac2b..0fcbfd7778 100644
--- a/lib/iris/tests/results/netcdf/netcdf_save_load_hybrid_height.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_save_load_hybrid_height.cml
@@ -430,7 +430,7 @@
[0.35145, 0.36495],
[0.36495, 0.37845]]" id="25a5f42bc937b908" points="[-0.5274, -0.5139, -0.5004, ..., 0.3447, 0.3582,
0.3717]" shape="(412,)" standard_name="grid_latitude" units="Unit('degrees')" value_type="float32">
-
+
@@ -442,7 +442,7 @@
[360.059, 360.072],
[360.072, 360.086]]" id="3bf28623a9db078e" points="[359.18, 359.194, 359.207, ..., 360.052, 360.066,
360.079]" shape="(412,)" standard_name="grid_longitude" units="Unit('degrees')" value_type="float32">
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_save_load_ndim_auxiliary.cml b/lib/iris/tests/results/netcdf/netcdf_save_load_ndim_auxiliary.cml
index 3f1edddbb4..99ec48ce85 100644
--- a/lib/iris/tests/results/netcdf/netcdf_save_load_ndim_auxiliary.cml
+++ b/lib/iris/tests/results/netcdf/netcdf_save_load_ndim_auxiliary.cml
@@ -10,12 +10,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/netcdf/netcdf_save_ndim_auxiliary.cdl b/lib/iris/tests/results/netcdf/netcdf_save_ndim_auxiliary.cdl
index 70fcb12d5a..10cf9c0baf 100644
--- a/lib/iris/tests/results/netcdf/netcdf_save_ndim_auxiliary.cdl
+++ b/lib/iris/tests/results/netcdf/netcdf_save_ndim_auxiliary.cdl
@@ -16,11 +16,8 @@ variables:
precipitation_flux:coordinates = "latitude longitude" ;
int rotated_latitude_longitude ;
rotated_latitude_longitude:grid_mapping_name = "rotated_latitude_longitude" ;
- rotated_latitude_longitude:longitude_of_prime_meridian = 0. ;
- rotated_latitude_longitude:semi_major_axis = 6371229. ;
- rotated_latitude_longitude:semi_minor_axis = 6371229. ;
- rotated_latitude_longitude:grid_north_pole_latitude = 18.f ;
- rotated_latitude_longitude:grid_north_pole_longitude = -140.75f ;
+ rotated_latitude_longitude:grid_north_pole_latitude = 18. ;
+ rotated_latitude_longitude:grid_north_pole_longitude = -140.75 ;
rotated_latitude_longitude:north_pole_grid_longitude = 0. ;
float time(time) ;
time:axis = "T" ;
diff --git a/lib/iris/tests/results/pp_rules/global.cml b/lib/iris/tests/results/pp_rules/global.cml
index 2641a9e1d6..d740082153 100644
--- a/lib/iris/tests/results/pp_rules/global.cml
+++ b/lib/iris/tests/results/pp_rules/global.cml
@@ -22,12 +22,12 @@
-62.4999, -64.9999, -67.4999, -69.9999,
-72.4999, -74.9999, -77.4999, -79.9999,
-82.4999, -84.9999, -87.4999, -89.9999]" shape="(73,)" standard_name="latitude" units="Unit('degrees')" value_type="float32">
-
+
-
+
diff --git a/lib/iris/tests/results/pp_rules/lbproc_mean_max_min.cml b/lib/iris/tests/results/pp_rules/lbproc_mean_max_min.cml
index 2eef13d974..036cd10675 100644
--- a/lib/iris/tests/results/pp_rules/lbproc_mean_max_min.cml
+++ b/lib/iris/tests/results/pp_rules/lbproc_mean_max_min.cml
@@ -18,12 +18,12 @@
-
+
-
+
@@ -54,12 +54,12 @@
-
+
-
+
@@ -94,12 +94,12 @@
-
+
-
+
@@ -134,12 +134,12 @@
-
+
-
+
@@ -164,12 +164,12 @@
-
+
-
+
diff --git a/lib/iris/tests/results/pp_rules/rotated_uk.cml b/lib/iris/tests/results/pp_rules/rotated_uk.cml
index c0ad56add8..39bfa20afd 100644
--- a/lib/iris/tests/results/pp_rules/rotated_uk.cml
+++ b/lib/iris/tests/results/pp_rules/rotated_uk.cml
@@ -11,13 +11,13 @@
-
+
-
+
diff --git a/lib/iris/tests/results/regrid/bilinear_larger.cml b/lib/iris/tests/results/regrid/bilinear_larger.cml
index c26e440dda..bc134acf2f 100644
--- a/lib/iris/tests/results/regrid/bilinear_larger.cml
+++ b/lib/iris/tests/results/regrid/bilinear_larger.cml
@@ -4,12 +4,12 @@