如何获取 geotiff 中单元格的坐标?

2023-11-22

我有一个包含地理信息的 tif。使用 gdal,我可以将光栅文件转换为数组(numpy)。

如何获取该数组中一项的坐标?


使用仿射变换矩阵,将像素坐标映射到世界坐标。例如,使用affine包裹。 (还有其他方法可以使用简单的数学来完成相同的任务。)

from affine import Affine
fname = '/path/to/raster.tif'

这里有两种获得仿射变换矩阵的方法,T0。例如,使用 GDAL/Python:

from osgeo import gdal
ds = gdal.Open(path, gdal.GA_ReadOnly)
T0 = Affine.from_gdal(*ds.GetGeoTransform())
ds = None  # close

例如,使用rasterio:

import rasterio
with rasterio.open(fname, 'r') as r:
    T0 = r.affine

GDAL 使用的变换数组约定 (T0) 是参考像素角点。您可能想改为引用像素中心,因此需要将其平移 50%:

T1 = T0 * Affine.translation(0.5, 0.5)

现在,要将像素坐标转换为世界坐标,请将坐标与矩阵相乘,这可以通过一个简单的函数来完成:

rc2xy = lambda r, c: T1 * (c, r)

现在,获取第一行第二列中的栅格坐标(索引[0, 1]):

print(rc2xy(0, 1))

另外,请注意,如果需要从世界坐标获取像素坐标,可以使用逆仿射变换矩阵,~T0.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 geotiff 中单元格的坐标? 的相关文章

随机推荐

  • playframework - IOException 无法分配内存

    我的系统是Mint 12 64位 我已经安装了类型安全堆栈并创建了一个新的播放应用程序 在不修改代码的情况下 我尝试运行它 这是输出 http pastebin com 6XwmsbAE Play 抱怨此错误消息 IOException C
  • NLTK/pyNLTK 可以“按语言”(即非英语)工作吗?如何工作?

    我如何告诉 NLTK 以特定语言处理文本 有时我会编写一个专门的 NLP 例程 在非英语 但仍然是印欧语 文本域上进行词性标记 标记化等 这个问题似乎只解决不同的语料库 而不是代码 设置的变化 德语 POS 标记 或者 是否有专门用于 py
  • 创建新的通用结构的正确方法是什么?

    我正在尝试创建一个可以初始化为某种类型的通用结构T 它看起来像这样 pub struct MyStruct
  • jQuery 选择器帮助 - 如何查找 ID 以特定字符开头和结尾的元素

    我有一个动态创建的页面 它可以有许多不同的带有 ID 的单选按钮 如下所示
  • 某些 HTML 标记中的“生成”属性有何用途?

    我看到它在 HTML 标签中使用 但我感觉它可以与大多数 HTML 标签一起使用 我大概能猜出这是什么意思 但我更好奇使用它有什么好处 我试图用谷歌搜索一些有关它的参考资料 但找不到任何资料 所以我来找你们专家 谢谢 Example
  • Android ACTION_IMAGE_CAPTURE 意图

    我们正在尝试使用本机相机应用程序让用户拍摄新照片 如果我们省略了 它就可以正常工作EXTRA OUTPUT extra并返回小位图图像 然而 如果我们putExtra EXTRA OUTPUT 在启动之前 一切都会正常进行 直到您尝试点击相
  • JasperReports 的最小依赖关系

    我希望在我的一个项目中使用 JasperReports 4 5 0 并且想知道仅生成 PDF 的最小依赖项是什么 我尝试浏览他们的网站和自述文档 但一无所获 我也遇到过这个安装维基这看起来非常过时 版本 1 2 2 是否有所需 jar 的最
  • 删除无效/不完整的多字节字符

    我在用户输入上使用以下代码时遇到一些问题 htmlentities string ENT COMPAT UTF 8 当检测到无效的多字节字符时 PHP 会抛出一个通知 PHP 警告 htmlentities path to file php
  • “原子”和“cstdatomic”有什么区别?

    有人可以澄清一下包含选项之间的区别吗 include
  • 原型中的函数列表

    我希望能够获取不同 JavaScript 对象的函数列表 特别是 String 和其他基元 我以为我能够以某种方式使用 String prototype 并神奇地获得原型中的函数列表 但没有骰子 有任何想法吗 我也尝试过使用下划线 例如 f
  • 根据谓词从列表中删除元素

    我想从列表中删除一个元素 使得该元素包含 X or N 我必须申请大型基因组 这是一个例子 input codon AAT XAC ANT TTA 预期输出 codon AAT TTA 出于基础目的 gt gt gt x for x in
  • 如何使用命令行在 VSCode 中安装多个扩展

    如何使用 cli 在 VSCode 中安装多个扩展 我试过 code install extension xyz local history jock svg 但它只安装第一个扩展xyz local history Installing e
  • OneDrive 上的 Visual Studio 解决方案

    我可以将我的 Visual Studio 解决方案放入 OneDrive 中并从那里工作吗 还是会以某种方式导致数据丢失 无论我身在何处 我都想随身携带我的项目 而不是每次都担心将它们放在闪存驱动器上 我不会推荐它 OneDrive 和其他
  • 不兼容的字符编码:ASCII-8BIT 和 UTF-8

    我使用 Ruby 1 9 2 和 Rails 3 0 5 我有以下错误 不兼容的字符编码 ASCII 8BIT 和 UTF 8 我认为这与数据库无关 错误发生在视图中的这一行 只是 div haml 调用 content 全栈 Action
  • Scaffold-DbContext 在 .net core 中抛出错误“无法找到程序集”

    我正在使用 net core 和实体框架 core 1 1 0 在尝试以下命令时包管理器控制台 Scaffold DbContext Server MyServer MyInstance Database MyDB user MyUsern
  • ADFS 作为 OAuth2 提供者/身份验证服务器可能吗?

    我们想要设置 ADFS 3 0 以启用基于 OAuth2 的身份验证 我已经阅读了大量文档 但仍不清楚这是否受支持 ADFS 是否可以用作 oauth 的授权服务器 或者 ADFS 中的 oauth2 支持仅意味着充当另一个授权服务器的客户
  • 查找位置:Google Play 位置服务或 Android 平台位置 API

    我正在尝试获取我的新导航应用程序的用户位置 我想经常检查用户的位置 并且它必须准确 我使用示例中的以下代码来获取位置 public class MainActivity extends Activity implements Locatio
  • 打印网页时如何隐藏元素?

    我的网页上有一个用于打印网页的链接 但是 该链接在打印输出本身中也可见 当我单击打印链接时 是否有 javascript 或 HTML 代码会隐藏链接按钮 Example Good Evening Print click Here To P
  • RabbitMQ / AMQP:单个队列,同一消息的多个消费者?

    我刚刚开始使用 RabbitMQ 和 AMQP 我有一个消息队列 我有多个消费者 我想用它们做不同的事情相同的消息 大多数 RabbitMQ 文档似乎都专注于循环 即单个消息由单个消费者消费 负载分布在每个消费者之间 这确实是我亲眼所见的行
  • 如何获取 geotiff 中单元格的坐标?

    我有一个包含地理信息的 tif 使用 gdal 我可以将光栅文件转换为数组 numpy 如何获取该数组中一项的坐标 使用仿射变换矩阵 将像素坐标映射到世界坐标 例如 使用affine包裹 还有其他方法可以使用简单的数学来完成相同的任务 fr