gpt4 book ai didi

python - 通过 gdal 将多个波段合并在一起......正确

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:43 27 4
gpt4 key购买 nike

我在 python 中使用了一些 Sentinel-2 卫星图像。现在我使用较新的(过去 2016 年)没有问题。但我需要使用 2016 年的一些。这些不是欧洲航天局以相同方式预处理的!

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

enter image description here

您可能会注意到,起初尺寸看起来不错。但是 strip 的类型和颜色都不对。所以当我合并文件时,我显然做错了什么。

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

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

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

这是 python 导入的屏幕转储。

img 为 ESA 预处理图像。

img1 是我的 SCSS gdal_merge 导入。 enter image description here

这是失败的图片:p enter image description here

现在看来,我对这种图像处理缺乏一些基本的了解。因此,结合 Stackoverflow 的综合智慧 - 我可以做些什么来将我的波段正确地拼接成一个性感的 RGB,它可以被 rasterio 模块正确读取。

提前致谢:)

最佳答案

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

要解决此问题,只需将 -ot uint16 添加到您的调用中,一切都应该正常工作。

关于组合波段,我通常采用的方式是使用 gdalbuildvrt它从您的输入文件创建一个虚拟数据集。这个 .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

同样,gdal_translate 有很多很酷的选项,看看 documentation .

关于python - 通过 gdal 将多个波段合并在一起......正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52334933/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com