External Classes

class affine.Affine[source]

Two dimensional affine transform for 2D linear mapping.

Parallel lines are preserved by these transforms. Affine transforms can perform any combination of translations, scales/flips, shears, and rotations. Class methods are provided to conveniently compose transforms from these operations.

Internally the transform is stored as a 3x3 transformation matrix. The transform may be constructed directly by specifying the first two rows of matrix values as 6 floats. Since the matrix is an affine transform, the last row is always (0, 0, 1).

N.B.: multiplication of a transform and an (x, y) vector always returns the column vector that is the matrix multiplication product of the transform and (x, y) as a column vector, no matter which is on the left or right side. This is obviously not the case for matrices and vectors in general, but provides a convenience for users of this class.

Parameters:members (float) – 6 floats for the first two matrix rows.
almost_equals(other, precision=1e-05)[source]

Compare transforms for approximate equality.

Parameters:other (Affine) – Transform being compared.
Returns:True if absolute difference between each element of each respective transform matrix < self.precision.

The values of the transform as three 2D column vectors


The determinant of the transform matrix.

This value is equal to the area scaling factor when the transform is applied to a shape.


The eccentricity of the affine transformation.

This value represents the eccentricity of an ellipse under this affine transformation.

Raises NotImplementedError for improper transformations.

classmethod from_gdal(c, a, b, f, d, e)[source]

Use same coefficient order as GDAL’s GetGeoTransform().

Parameters:a, b, f, d, e (c,) – 6 floats ordered by GDAL.
Return type:Affine
classmethod identity()[source]

Return the identity transform.

Return type:Affine

True if the transform is conformal.

i.e., if angles between points are preserved after applying the transform, within rounding limits. This implies that the transform has no effective shear.


True if this transform is degenerate.

Which means that it will collapse a shape to an effective area of zero. Degenerate transforms cannot be inverted.


True if this transform equals the identity matrix, within rounding limits.


True if the transform is orthonormal.

Which means that the transform represents a rigid motion, which has no effective scaling or shear. Mathematically, this means that the axis vectors of the transform matrix are perpendicular and unit-length. Applying an orthonormal transform to a shape always results in a congruent shape.


True if this transform is proper.

Which means that it does not include reflection.


True if the transform is rectilinear.

i.e., whether a shape would remain axis-aligned, within rounding limits, after applying the transform.


Transform a sequence of points or vectors in place.

Parameters:seq – Mutable sequence of Vec2 to be transformed.
Returns:None, the input sequence is mutated in place.
classmethod permutation(*scaling)[source]

Create the permutation transform. For 2x2 matrices, there is only one permutation matrix that is not the identity.

Return type:Affine
classmethod rotation(angle, pivot=None)[source]

Create a rotation transform at the specified angle.

A pivot point other than the coordinate system origin may be optionally specified.

  • angle (float) – Rotation angle in degrees, counter-clockwise about the pivot point.
  • pivot (sequence) – Point to rotate about, if omitted the rotation is about the origin.
Return type:



The rotation angle in degrees of the affine transformation.

This is the rotation angle in degrees of the affine transformation, assuming it is in the form M = R S, where R is a rotation and S is a scaling.

Raises NotImplementedError for improper transformations.

classmethod scale(*scaling)[source]

Create a scaling transform from a scalar or vector.

Parameters:scaling (float or sequence) – The scaling factor. A scalar value will scale in both dimensions equally. A vector scaling value scales the dimensions independently.
Return type:Affine
classmethod shear(x_angle=0, y_angle=0)[source]

Create a shear transform along one or both axes.

  • x_angle (float) – Shear angle in degrees parallel to the x-axis.
  • y_angle (float) – Shear angle in degrees parallel to the y-axis.
Return type:



Return same coefficient order as GDAL’s SetGeoTransform().

Return type:tuple
classmethod translation(xoff, yoff)[source]

Create a translation transform from an offset vector.

  • xoff (float) – Translation x offset.
  • yoff (float) – Translation y offset.
Return type:



Alias for ‘c’


Alias for ‘f’