Cell Registration

Cell registration is an issue with any kind of data on a grid.  A grid (or raster) defines values at specific locations in a 2D array.  These values may correspond to either their precise points, or to a cell (the rectangular area between the points with the array values).  The extents of the grid then refer either to the limit of the exact data points, or to the area covered by the cells.  This may be more clear with an illustration:

The difference is in the spatial relationship between the cells of an image and the data - whether a data value describes the center or corner of a cell (or edge of a cell).

To convert from a center-of-cell registration to a corner-of-cell registration, you apply a half-cell offset to the geographic boundaries, moving them inwards.

Most commonly, elevation rasters will use "Center" and image rasters will use "Corner".  This is due to how data is usually collected: elevation is measured at a specific point on the ground, whereas a pixel in a geospecific image is the average color over the ground area covered by a cell.  In effect, with an image, the data is not a grid of points but a grid of cells.

When calculating the spacing between grid elements (heixels, pixels, etc.) you must take into consideration the cell registration.  For "Corner", you can simply take the extents and divide by the number of elements in the grid (columns, rows).  For "Center", you actually divide by (columns-1, rows-1).

The GeoTIFF format supports both forms of cell registration.  As described in the GeoTIFF spec section 2.5, the pixels in the TIFF image can be either PixelIsPoint (center extents) or PixelIsArea (corner extents).