# v1.4 (14 Jun 2013)#

This document explains the changes made to Iris for this release (View all changes.)

## Features#

Multiple cubes can now be exported to a NetCDF file.

Correct nearest-neighbour calculation with circular coords.

NIMROD level type 12 (levels below ground) can now be loaded.

NIMROD files with multiple fields and period of interest can now be loaded.

Missing values are now handled when loading GRIB messages.

PP export rule to calculate forecast period.

`aggregated_by()`

now maintains array masking.IEEE 32bit fieldsfiles can now be loaded.

NetCDF transverse mercator and climatology data can now be loaded.

Polar stereographic GRIB data can now be loaded.

Added an optimisation for single-valued coordinate constraints.

Fixed pickling of cubes with 2D aux coords from NetCDF.

Fixed bug which ignored the “coords” keyword for certain plots.

Use the latest release of Cartopy, v0.8.0.

### Experimental Regridding Enhancements#

Bilinear, area-weighted and area-conservative regridding functions are now
available in `iris.experimental`

. These functions support masked data and
handle derived coordinates such as hybrid height. The final API is still in
development.

In the meantime:

### Bilinear Rectilinear Regridding#

`regrid_bilinear_rectilinear_src_and_grid()`

can be used to regrid a cube onto a horizontal grid defined in a differentiate
coordinate system. The data values are calculated using bilinear interpolation.

For example:

```
from iris.experimental.regrid import regrid_bilinear_rectilinear_src_and_grid
regridded_cube = regrid_bilinear_rectilinear_src_and_grid(source_cube, target_grid_cube)
```

### Area-Weighted Regridding#

`regrid_area_weighted_rectilinear_src_and_grid()`

can be used to regrid a cube such that the data values of the resulting cube
are calculated using the area-weighted mean.

For example:

```
from iris.experimental.regrid import regrid_area_weighted_rectilinear_src_and_grid as regrid_area_weighted
regridded_cube = regrid_area_weighted(source_cube, target_grid_cube)
```

### Area-Conservative Regridding#

`regrid_conservative_via_esmpy()`

can be used for area-conservative regridding between geographical coordinate
systems. This uses the ESMF library functions, via the ESMPy interface.

For example:

```
from iris.experimental.regrid_conservative import regrid_conservative_via_esmpy
regridded_cube = regrid_conservative_via_esmpy(source_cube, target_grid_cube)
```

### Iris-Pandas Interoperability#

Conversion to and from Pandas Series and DataFrames is now available.
See `iris.pandas`

for more details.

### Load Cubes From the Internet via OPeNDAP#

Cubes can now be loaded directly from the internet, via OPeNDAP.

For example:

```
cubes = iris.load("https://geoport.whoi.edu/thredds/dodsC/bathy/gom15")
```

### GeoTiff Export#

With this experimental feature, two dimensional cubes can now be exported to GeoTiff files.

For example:

```
from iris.experimental.raster import export_geotiff
export_geotiff(cube, filename)
```

Note

This is a raw data export only and does not save Iris plots.

### Cube Merge Update#

Cube merging now favours numerical coordinates over string coordinates
to describe a dimension, and `DimCoord`

over
`AuxCoord`

. These modifications prevent the error:
*“No functional relationship between separable and inseparable candidate
dimensions”*.

### Unambiguous Season Year Naming#

The default names of categorisation coordinates are now less ambiguous.
For example, `add_month_number()`

and
`add_month_fullname()`

now create
“month_number” and “month_fullname” coordinates.

### Cubes With no Vertical Coord can now be Exported to GRIB#

Iris can now export cubes with no vertical coord to GRIB. The solution is still under discussion: See Issue #519.

### Simplified Resource Configuration#

A new configuration variable called `iris.config.TEST_DATA_DIR`

has been added, replacing the previous combination of
`iris.config.MASTER_DATA_REPOSITORY`

and
`iris.config.DATA_REPOSITORY`

. This constant should be the path
to a directory containing the test data required by the unit tests. It can
be set by adding a `test_data_dir`

entry to the `Resources`

section of
`site.cfg`

. See `iris.config`

for more details.

### Extended GRIB Parameter Translation#

More GRIB2 params are recognised on input.

Now translates some codes on GRIB2 output.

Some GRIB2 params may load with a different standard_name.

### One dimensional Linear Interpolation Fix#

`linear()`

can now extrapolate from a single
point assuming a gradient of zero. This prevents an issue when loading cross
sections with a hybrid height coordinate, on a staggered grid and only a single
orography field.

### Fix for iris.analysis.calculus.differentiate#

A bug in `differentiate()`

that had the potential
to cause the loss of coordinate metadata when calculating the curl or the
derivative of a cube has been fixed.

## Incompatible Changes#

As part of simplifying the mechanism for accessing test data,

`iris.io.select_data_path()`

,`iris.config.DATA_REPOSITORY`

,`iris.config.MASTER_DATA_REPOSITORY`

and`iris.config.RESOURCE_DIR`

have been removed.

## Deprecations#

The

*add_custom_season_**functions from`coord_categorisation`

have been deprecated in favour of adding their functionality to the*add_season_**functions