Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Matrices describing affine transformation of the plane.

https://travis-ci.org/sgillies/affine.svg?branch=master https://coveralls.io/repos/sgillies/affine/badge.svg

The Affine package is derived from Casey Duncan’s Planar package. Please see the copyright statement in affine/__init__.py.

Usage

The 3x3 augmented affine transformation matrix for transformations in two dimensions is illustrated below.

Matrices can be created by passing the values a, b, c, d, e, f to the affine.Affine constructor or by using its identity(), translation(), scale(), shear(), and rotation() class methods.

>>> from affine import Affine
>>> Affine.identity()
Affine(1.0, 0.0, 0.0,
       0.0, 1.0, 0.0)
>>> Affine.translation(1.0, 5.0)
Affine(1.0, 0.0, 1.0,
       0.0, 1.0, 5.0)
>>> Affine.scale(2.0)
Affine(2.0, 0.0, 0.0,
       0.0, 2.0, 0.0)
>>> Affine.shear(45.0, 45.0)  # decimal degrees
Affine(1.0, 0.9999999999999999, 0.0,
       0.9999999999999999, 1.0, 0.0)
>>> Affine.rotation(45.0)     # decimal degrees
Affine(0.7071067811865476, 0.7071067811865475, 0.0,
       -0.7071067811865475, 0.7071067811865476, 0.0)

These matrices can be applied to (x, y) tuples to obtain transformed coordinates (x', y').

>>> Affine.translation(1.0, 5.0) * (1.0, 1.0)
(2.0, 6.0)
>>> Affine.rotation(45.0) * (1.0, 1.0)
(1.1102230246251565e-16, 1.414213562373095)

They may also be multiplied together to combine transformations.

>>> Affine.translation(1.0, 5.0) * Affine.rotation(45.0)
Affine(0.7071067811865476, 0.7071067811865475, 1.0,
       -0.7071067811865475, 0.7071067811865476, 5.0)

Usage with GIS data packages

Georeferenced raster datasets use affine transformations to map from image coordinates to world coordinates. The affine.Affine.from_gdal() class method helps convert GDAL GeoTransform, sequences of 6 numbers in which the first and fourth are the x and y offsets and the second and sixth are the x and y pixel sizes.

Using a GDAL dataset transformation matrix, the world coordinates (x, y) corresponding to the top left corner of the pixel 100 rows down from the origin can be easily computed.

>>> geotransform = (-237481.5, 425.0, 0.0, 237536.4, 0.0, -425.0)
>>> fwd = Affine.from_gdal(*geotransform)
>>> col, row = 0, 100
>>> fwd * (col, row)
(-237481.5, 195036.4)

The reverse transformation is obtained using the ~ operator.

>>> rev = ~fwd
>>> rev * fwd * (col, row)
(0.0, 99.99999999999999)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

affine-2.0b1.tar.gz (11.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

affine-2.0b1-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

affine-2.0b1-py2-none-any.whl (14.8 kB view details)

Uploaded Python 2

File details

Details for the file affine-2.0b1.tar.gz.

File metadata

  • Download URL: affine-2.0b1.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for affine-2.0b1.tar.gz
Algorithm Hash digest
SHA256 7d983f9b0db3116e0f145e0d162d7591a3fc9fe0e85a8c4ee24e6896849aec5a
MD5 538786000d92825011681c2428028217
BLAKE2b-256 1fb634f80c52fa4eb7c9178e9b918dc302db0ecb1ddb68c734c2f71559dd089d

See more details on using hashes here.

File details

Details for the file affine-2.0b1-py3-none-any.whl.

File metadata

File hashes

Hashes for affine-2.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 f686b0f7fd3b62e2b8bb1adf5b1f1fc8f3eb55b2b9d0b441bb8208b59d5ea7d3
MD5 6ff9d3c49554c5c40a6f4fb88368bb79
BLAKE2b-256 2c5a9492b7f818337d796860fbd5d871e6548526b3ca4fbde0707986b4042375

See more details on using hashes here.

File details

Details for the file affine-2.0b1-py2-none-any.whl.

File metadata

File hashes

Hashes for affine-2.0b1-py2-none-any.whl
Algorithm Hash digest
SHA256 3d40de4033a7347410a8ce999506e19bdb5e4cebaadf1d0c76bd7f47b8ee06f3
MD5 6a0d3fe8b9ede9f6a7ca5fc68d032f11
BLAKE2b-256 0bdae42d7f1542a4b6710f508fd3754dabeb8c8d4820f8612368fa5119534dea

See more details on using hashes here.

Release history Release notifications | RSS feed

3.0.0

2 files

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.2

2 files

2.2.1

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0.post1

3 files

2.0.0

This release

2.0b1 This release

3 files

1.3.0

3 files

1.2.0

3 files

1.1.0

1 file

1.0.1

1 file

1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page