通过 gdal 将多个频段合并在一起...正确

2024-01-06

我正在 python 中使用一些 Sentinel-2 卫星图像。现在我使用较新的(2016 年之前的)没有任何问题。但我需要使用 2016 年的一些。欧洲航天局没有以同样的方式对这些进行预处理!

通常,当您下载图块时,您通常会获得每个卫星频段的 .jp2 文件。但在新版本中,他们会为您预处理 RGB 版本以及普通波段。这个版本在 python 中对我来说非常棒。 但是,为了创建旧图像的 RGB 版本,我需要将三个波段(4,3,2 - R,G,B)合并到 1 个文件中。 Gdal_merge 一开始就很好地处理了这个问题。当我打开图片时,它看起来很棒! 但是当我将其读入 python 时,我立即发现有些不对劲。该图像显示为纯白色图片,上面有一些蓝色条纹。 现在我去了 gdalinfo,将较新的工作示例和我自己缝合在一起的旧版本结合在一起,这就是输出。

您可能会注意到,尺寸一开始看起来不错。但这些带子的类型和颜色都不正确。所以当我合并文件时我显然做错了什么。

这是我用来将 3 个频段合并到 1 个 .jp2 文件中的命令。

gdal_merge.py -o outfile.jp2 -separate B04.jp2 BO3.jp2 BO2.jp2

现在如前所述。这会创建一个文件,当我在 QGIS 中打开它时,该文件看起来很漂亮。但它对我来说在Python中毫无用处。

这是 python 导入的屏幕转储。

img 是 ESA 预处理图像。

img1 is my bastardized gdal_merge import. enter image description here

And here is a image of the failure :p enter image description here

现在在我看来,我对这种图像处理缺乏一些基本的理解。因此,借助 Stackoverflow 的综合智慧 - 我该如何正确地将我的条带拼接成性感的 RGB,以便 rasterio 模块可以正确读取。

提前致谢 :)


似乎正在发生的事情是,您正在使用原始 uint16 数据创建一个 uint8 堆栈,因此所有值基本上都会变成 255,即 uint8 的最大值。

要解决此问题,只需添加-ot uint16接到您的电话,一切都应该正常。

关于组合乐队,我通常采用的方式是使用gdalbuildvrt https://www.gdal.org/gdalbuildvrt.html它根据您的输入文件创建虚拟数据集。这.vrt文件大小只有几 kb,随后可用于任何进一步的 GDAL 处理(并且可能由rasterio):

gdalbuildvrt -separate stack.vrt B04.jp2 BO3.jp2 BO2.jp2

您还可以指定许多其他选项,例如通用分辨率(假设您想要堆叠 10 米和 20 米波段)、节点数据、目标范围等。

如果你想要一个真正的 GeoTIFF,只需运行它即可gdal_translate:

gdal_translate stack.vrt stack.tif

Again, gdal_translate有很多很酷的选择,只需看看文档 https://www.gdal.org/gdal_translate.html.

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

通过 gdal 将多个频段合并在一起...正确 的相关文章

  • 在 numpy 数组中查找满足条件的大量连续值

    我在 numpy 数组中加载了一些音频数据 我希望通过查找静音部分 即一段时间内音频幅度低于特定阈值的部分 来对数据进行分段 一个非常简单的方法是这样的 values join 1 if abs x lt SILENCE THRESHOLD
  • Docker 进程被神秘的“Killed”消息杀死

    在 docker 容器中运行 python 脚本 一切似乎都运行顺利 看到一些 STDOUT 消息 大约 5 分钟后我得到了Killed消息 没有进一步的解释 并且该过程停止 查询数据库可能是磁盘空间问题 也可能是 OOM 问题 我不确定
  • 如何查找 pandas 数据框中连续相同字符串值的计数?

    假设我们有以下 pandas 数据框 df pd DataFrame col1 A gt G C gt T C gt T G gt T C gt T A gt G A gt G A gt G col2 TCT ACA TCA TCA GCT
  • 在 python + openCV 中使用网络摄像头的问题

    我正在使用以下代码使用 openCV python 访问我的网络摄像头 import cv cv NamedWindow webcam feed cv CV WINDOW AUTOSIZE cam cv CaptureFromCAM 1 然
  • 关于使用Python启动SSH隧道的问题

    我在从用 Python 编写的 HTTP RPC 服务器启动 SSH 隧道时遇到了麻烦 基于Python的BaseHTTPServer 有一个用Python编写的简单的HTTP RPC服务器 作为其中一项服务的一部分 我想启动从 RPC 服
  • QSortFilterProxyModel + QAbstractItemModel modelIndex.internalPointer() 导致崩溃

    我在 PyQt 4 8 Python 2 7 中实现了自己的 QAbstractItemModel class FriendListModel QtCore QAbstractItemModel def init self groups c
  • 更改 Inkscape 的 Python 解释器

    在使用 Inkscape 时 我不断收到错误 这似乎意味着未满足 python 2 vs 3 的期望 尽管我已经安装了它们 例如 当我尝试从模板生成新文档时 我得到 Traceback most recent call last File
  • 刷新访问令牌时出现“invalid_grant”错误的情况?

    最近我一直在为这个问题揪心 一些背景 使用oauth2客户端 https code google com p google api python client 库来管理用户的令牌 这些令牌用于定期并发执行各种后台任务 每次要为用户运行其中一
  • 如何将经度和纬度转换为国家或城市?

    我需要将经度和纬度坐标转换为国家或城市 python中有这样的例子吗 提前致谢 我使用谷歌的API from urllib2 import urlopen import json def getplace lat lon url http
  • 如何编写高效的配对算法?

    我需要一种算法的帮助 该算法可以有效地将人们分组 并确保以前的配对不会重复 例如 假设我们有 10 位候选人 candidates 0 1 2 3 4 5 6 7 8 9 并假设我们有一个先前匹配的字典 这样每个键值对即candidate
  • 将 stdout 重定向到 Python 中的文件? [复制]

    这个问题在这里已经有答案了 如何将 stdout 重定向到 Python 中的任意文件 当长时间运行的 Python 脚本 例如 Web 应用程序 从 ssh 会话内启动并处于后台 并且 ssh 会话关闭时 应用程序将引发 IOError
  • 在 Python 中比较日期 - 如何处理时区修饰符

    我正在做Python日期比较 假设我有一个这样的约会 Fri Aug 17 12 34 00 2012 0000 我按以下方式解析它 dt datetime strptime Fri Aug 17 12 34 00 2012 0000 a
  • Python 中的二进制相移键控

    我目前正在编写一些代码 以使用音频转换通过激光传输消息 文件 和其他数据 我当前的代码使用 python 中 binascii 模块中的 hexlify 函数将数据转换为二进制 然后为 1 发出一个音调 为 0 发出不同的音调 这在理论上是
  • 代理阻止网络套接字?如何绕行

    我有一个用 Python 编写的正在运行的 websocket 服务器 来自https github com opiate SimpleWebSocketServer https github com opiate SimpleWebSoc
  • 如何通过 Python socket.send() 发送字符串以外的任何内容

    我对 Python 编程非常陌生 但出于必要 我必须快速地将一些东西组合在一起 我正在尝试通过 UDP 发送一些数据 除了当我执行 socket send 时 我必须以字符串形式输入数据之外 一切都正常 这是我的程序 这样你就可以看到我在做
  • Python NLP 英式英语与美式英语

    我目前正在用Python 进行NLP 工作 然而 在我的语料库中 既有英式英语也有美式英语 实现 实现 我正在考虑将英式英语转换为美式英语 但是 我没有找到一个好的工具 包来做到这一点 有什么建议么 我也找不到包 但试试这个 请注意 我必须
  • 如何创建指向指针数组的 Python ctypes 指针

    我需要学习如何处理char 在下面的 C 方法中通过 Python ctypes 我通过使用调用其他只需要单个指针的方法做得很好create string buffer 但此方法需要一个指向指针数组的指针 ladybugConvertToM
  • 如何在 Numpy 中实现垃圾收集

    我有一个名为main py 它引用另一个文件Optimisers py它仅具有功能并用于for循环进入main py 这些函数都有不同的优化功能 This Optimisers py然后引用另外两个类似的文件 其中也只有函数 它们位于whi
  • 写入 UDP 套接字会被阻塞吗?

    如果是的话 在什么条件下 或者 换句话说 在twisted 中运行此代码是否安全 class StatsdClient AbstractStatsdClient def init self host port super StatsdCli
  • 升级后 pip 损坏

    我做了 pip install U easyinstall 然后 pip install U pip 来升级我的 pip 但是 当我尝试使用 pip 时 我现在收到此错误 root d8fb98fc3a66 which pip usr lo

随机推荐

  • 值得学习使用 MSBuild 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我只是想知道人们是否认为值得学习使用 MSBuild 语法来自定义 net 项目的构建过程 或者考虑到使用 Visual Studio 构建项目
  • 对 javascript 中的“this”关键字感到困惑

    我已经很长时间没有使用 Javascript 了 今天又重新学习了它 一直让我着迷的一件事是this关键词 我知道在 jQuery 事件处理程序中 例如单击事件 this指的是触发事件的元素 怎么this传递给我作为回调提供的函数 即使我的
  • 在 bash 调试运行期间隐藏信息

    我们在 shell 脚本中进行 debug run bash x my script sh 来了解 显示它正在做什么 但这样做可能会显示一些我不想看到的敏感信息 例如密码 我的脚本从安全保管库中提取密码 并在需要时将其作为脚本中的变量传递
  • 当用户在 scanf() 中输入错误的数据类型时如何修复无限循环?

    C初学者在这里 对于下面的程序 每当用户输入字符或字符串时 它就会进入无限循环 在仍然使用 scanf 的情况下如何解决这个问题 与使用 scanf 相比 编写该程序的更好方法是什么 感谢那些愿意回答的人 include
  • 在 MATLAB 中将频谱图保存为图像

    我正在使用以下方法分析一些声音片段spectrogram 函数于MATLAB 我想将频谱图保存为图像 jpg png 等 但无论我以什么图像格式保存图形 生成的图像总是与我在图中看到的不同 参差不齐 这是频谱图的示例 Matlab图 htt
  • 为什么我的基本 PyGame 模块这么慢?

    我计划在 Pygame 中编写代码 但我刚刚开始学习基础知识 发现执行代码非常慢 当我按下一个键时 它需要一段时间才能在终端中打印它 似乎没有任何模式 我正在运行Python 2 6 遇到这个问题后我降级了 通过进一步的测试我发现整个系统变
  • ProtoIninclude 添加了不需要的依赖项

    我刚刚在分布式缓存应用程序中用协议缓冲区替换了 NET 序列化 结果确实令人印象深刻 我唯一不喜欢的是 我需要在基本消息类及其子类之间添加依赖关系 这会创建循环依赖关系 除了用 ProtoInclude 标记基类之外 还有其他选择吗 In
  • C# 将文本文件分割成二维字符串数组

    我有一个如下所示的文本文件 John Gauthier blue May Henry Ford Red June James Bond Orange December 我想将它分成一个二维字符串数组 这样我就可以将每一行和每个单词分开 前任
  • 缓存失效——有通用的解决方案吗?

    计算机科学中只有两个难题 缓存失效和命名 菲尔 卡尔顿 是否有通用的解决方案或方法来使缓存失效 知道条目何时过时 以便保证您始终获得最新数据 例如 考虑一个函数getData 从文件中获取数据 它根据文件的上次修改时间对其进行缓存 每次调用
  • Rails、设计身份验证、CSRF 问题

    我正在使用 Rails 制作一个单页应用程序 登录和注销时 使用 ajax 调用 Devise 控制器 我遇到的问题是 当我 1 登录 2 注销然后再次登录时不起作用 我认为这与 CSRF 令牌有关 当我注销时 该令牌会被重置 尽管它不应该
  • symfony2 - 获取执行时间

    我想使用 symfony2 为我的应用程序制作一个状态页 我想在其中打印特定请求的执行时间 以及其他数据 无论如何我找不到这样做 我知道我可以通过以下方式跟踪代码部分的执行时间 starttime microtime do somethin
  • Mysql 带游标的存储过程

    Mysql游标问题 我编写了一个存储过程 它将从一个表中获取旅行记录并将其插入到 2 3 个不同的表中 使用插入语句 问题是我正在检查 table1 中是否不存在记录 然后我将记录从 temptable 顺序插入到 table1 table
  • PHP - 检查一个字符串是否是另一个字符串的旋转

    需要编写一个代码块来检查一个字符串是否是另一个字符串的旋转 看了这里的大量帖子 都是用 Java 或 C 写的 但我需要用 PHP 来做 我尝试了一些不同的方法 尝试使用 C 和 Java 示例 但我没有任何运气 这是我当前的代码
  • bx滑块启动/停止功能

    我正在使用 bxslider 插件 并为上一个和下一个功能创建了一些外部控件 尽管我似乎不知道如何对启动 停止控件执行相同的操作 基本上我想用它作为滑块的播放 暂停功能 有人有这个插件的经验吗 这是我到目前为止所拥有的 没有启动 停止功能工
  • 跨域图片上传 Angular+laravel

    我一直在努力在服务器上上传图像 我在用ng文件上传 https github com danialfarid ng file upload在前端 但我总是得到 对预检请求的响应未通过访问控制检查 请求的资源上不存在 Access Contr
  • 如何在 Ruby 中解析带有单引号 (') 的 JSON 字符串?

    我正在尝试解析这样的 JSON 字符串 JSON parse foo 42 但是 这会产生 JSON ParseError JSON ParserError 757 unexpected token at foo 42 from Users
  • 更新插入文档和/或添加子文档

    我一直在努力解决 MongoDB Mongoose 和 JavaScript 的异步特性以及如何最好地对集合进行多次更新 我有一张包含客户和联系人数据的 Excel 表格 有些客户端有多个联系人 每行一个 并且客户端数据是相同的 因此客户端
  • 运行 Leiningen 时出现 java.lang.NoSuchMethodError:clojure.lang.KeywordLookupSite

    我刚刚下载了 Leiningen 但无法运行它 下载自己的 Jar 存档后 脚本失败并出现 java 错误 通过跑步bash x lein我可以看到它挂在这一行 exec java Xbootclasspath a home andrea
  • 如何使用 Swift 构建 ScrollView?

    我正在构建我的第一个 IOS 应用程序 我正在努力寻找一种方法来使用 XCode6 上的 Swift 代码做一个简单的 ScrollView 请问有人可以帮助我找到解决方案吗 我的问题是我不知道如何使滚动视图在我的代码中工作 我已经将代码放
  • 通过 gdal 将多个频段合并在一起...正确

    我正在 python 中使用一些 Sentinel 2 卫星图像 现在我使用较新的 2016 年之前的 没有任何问题 但我需要使用 2016 年的一些 欧洲航天局没有以同样的方式对这些进行预处理 通常 当您下载图块时 您通常会获得每个卫星频