目前我正在使用 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>)
您可以先使用 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”键来完成的。如果您不更新此内容,代码将抛出索引外异常!