逆仿射变换-Rasterio
Rasterio中是否有构建来计算rasterio.transform.fransform.affine
对象的逆仿射变换?
我目前正在做以下操作:
from rasterio.transform import Affine
import numpy as np
transform = Affine(29.976, 0, 5.12e5, 0, -29.976, 6.94e6)
matrix_form_transform = np.vstack(
[
np.array(transform.column_vectors).T,
np.array([0,0,1])
]
)
matrix_form_inverse_transform = np.linalg.inv(matrix_form_transform)
inverse_transform = Affine(*matrix_form_inverse_transform[:2, :].ravel())
print(inverse_transform * transform)
# Affine(1.0, 0.0, 0.0,
# -0.0, 1.0, 0.0)
这很笨拙,我觉得应该有一种内在的方法来解决这个问题,但我找不到它。
Is there a build in way in rasterio to compute the inverse affine transform of an rasterio.transform.Affine
object?
I'm currently doing the following:
from rasterio.transform import Affine
import numpy as np
transform = Affine(29.976, 0, 5.12e5, 0, -29.976, 6.94e6)
matrix_form_transform = np.vstack(
[
np.array(transform.column_vectors).T,
np.array([0,0,1])
]
)
matrix_form_inverse_transform = np.linalg.inv(matrix_form_transform)
inverse_transform = Affine(*matrix_form_inverse_transform[:2, :].ravel())
print(inverse_transform * transform)
# Affine(1.0, 0.0, 0.0,
# -0.0, 1.0, 0.0)
This is quite clunky and I feel like there should be a builtin way to get to this but I can't find it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
affine
类在affine
软件包中定义,该软件包也由rasterio组织管理。affine
类实现__ invert __
dunder方法。这意味着它实现了使用〜
操作员的能力。碰巧的是,__ iNvert __
的实现找到了逆affine
对象。您可以执行以下操作之一:
或者如果您想更加明确
The
Affine
class is defined in theaffine
package which is also managed by the rasterio organization. TheAffine
class implements the__invert__
dunder method. This means that it implements the ability to use the~
operator. As it happens the implementation for__invert__
finds the inverseAffine
object.You can do one of the following:
or if you want to be more explicit