You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将多份TIFF文件合并为单张多波段(3D栅格)图像

解决方案

合并单波段TIFF为多波段图像的核心是统一空间参数、堆叠波段数据并写入新文件,以下是完整实现方案:

关键前提

所有要合并的单波段TIFF必须具有完全一致的空间参数:包括投影坐标系(CRS)、地理变换矩阵(transform)、图像宽高、数据类型(dtype),否则合并后会出现错位或数据错误。

完整代码实现

import rasterio
import numpy as np

# 1. 列出所有要合并的单波段TIFF路径
band_file_paths = [
    "path/to/band1.tif",
    "path/to/band2.tif",
    "path/to/band3.tif"
    # 按需添加更多波段文件
]

# 2. 从第一个波段读取元数据,作为输出文件的配置模板
with rasterio.open(band_file_paths[0]) as first_band:
    output_meta = first_band.meta.copy()
    # 更新元数据的波段数为总波段数量
    output_meta["count"] = len(band_file_paths)

# 3. 读取所有波段数据并堆叠为3D数组(形状:(波段数, 图像高度, 图像宽度))
band_data_list = []
for file_path in band_file_paths:
    with rasterio.open(file_path) as band_src:
        # 读取单波段数据(read(1)返回2D数组)
        band_data = band_src.read(1)
        band_data_list.append(band_data)

# 转换为numpy 3D数组
combined_array = np.stack(band_data_list)

# 4. 创建并写入多波段TIFF文件
output_file = "path/to/combined_multiband.tif"
with rasterio.open(output_file, 'w', **output_meta) as dst:
    dst.write(combined_array)

补充说明

  • 你的原始思路可行,但直接复用第一个波段的元数据(而非样本文件)更可靠,能避免参数不匹配问题
  • 如果输入TIFF空间参数不一致,需先用rasterio.warp模块对所有波段做重投影/重采样,统一参数后再合并
  • 若需保留nodata值,确保元数据中的nodata参数正确传递到输出文件

内容的提问来源于stack exchange,提问作者Shrey Mehwala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:55:31