矩阵描述平面的仿射变换。
affine的Python项目详细描述
描述平面仿射变换的矩阵。
仿射包是由casey-duncan的平面包导出的。请看 affine/__init__.py中的版权声明。
用法
二元变换的3x3增广仿射变换矩阵 尺寸如下图所示。
矩阵可以通过将值a, b, c, d, e, f传递给 affine.Affine构造函数或使用其identity(), translation()、scale()、shear()和rotation()类方法。
>>> fromaffineimportAffine>>> 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 degreesAffine(1.0, 0.9999999999999999, 0.0, 0.9999999999999999, 1.0, 0.0) >>> Affine.rotation(45.0)# decimal degreesAffine(0.7071067811865476, -0.7071067811865475, 0.0, 0.7071067811865475, 0.7071067811865476, 0.0)
这些矩阵可以应用于(x, y)元组以获得转换的 坐标(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)
它们也可以相乘在一起以组合变换。
>>> Affine.translation(1.0,5.0)*Affine.rotation(45.0)Affine(0.7071067811865476, -0.7071067811865475, 1.0, 0.7071067811865475, 0.7071067811865476, 5.0)
与gis数据包一起使用
地理参考光栅数据集使用仿射变换从图像映射 坐标到世界坐标。affine.Affine.from_gdal()类 方法帮助转换GDAL GeoTransform, 6个数字的序列,其中第一个和第四个是X和Y偏移 第二个和第六个是x和y像素大小。
使用gdal数据集转换矩阵,世界坐标(x, y) 对应于从 原点很容易计算。
>>> 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)
使用~运算符获得反向转换。
>>> rev=~fwd>>> rev*fwd*(col,row)(0.0, 99.99999999999999)