在Python中将不同的tiff文件合并到单个多波段图像

问题描述 投票:0回答:1

目前我正在使用 rasterio 来编写数据集。 我们如何将包含不同波段数据的 tiff 文件合并到单个多波段图像(3D 光栅)

我尝试使用示例光栅文件之一(类似于 band tiff 文件)并修改其配置文件并使用 rasterio 重写数据。代码大致如下

with rasterio.open(
    "C:/shrey/bits pilani/anant/payload/basler_img/to_combine/test_imgZ1.tiff",
    'w+',
     #other neccesary information including count)as src:
    src.write(< a 3 d array>)
python raster
1个回答
0
投票

您可以先使用 rasterio 打开光栅文件:

假设您有两个不同的文件,其中只有一个频段。您将需要打开文件并读取特定频段的数据。假设这些 tif 文件只是一个单波段文件,您需要输入 1。

foo = raster.open('file1.tif')
foo_data = foo.read(1)

bar = raster.open('file2.tif')
bar_data = bar.read(1)

读取数据后,您可以将它们转储到列表中:

tiff_data = [foo_data, bar_data]

现在,创建一个具有相关波段数(在本例中为 2)的新 tif 文件,然后循环将数据写入波段,如下所示:

with rasterio.open(
    "dummy.tif",
    **{**foo.profile, "count": 2},
    mode="w",
) as file:
    for band, data in enumerate(tiff_data, start=1):
        file.write(data, band)

请注意在创建 tif 文件时如何传递一些元数据。我假设 tif 文件中的元数据是一致的。您可以使用

访问元数据

foo.profile

您可以简单地解构上述元数据并将它们作为函数调用中的参数传递,但是,我们确实希望预先定义光栅文件有两个波段。这是通过更新“count”键来完成的。如果您不更新此内容,代码将抛出索引外异常!

© www.soinside.com 2019 - 2024. All rights reserved.