基于python的波段提取代码

144 阅读1分钟

如果你的tif影像包含多个波段,而你想要其中几个要素的话,你可以使用以下代码,他会将你想要的波段提取出来

# -*- coding: utf-8 -*-


import arcpy
from arcpy import env
import os
from os import path
import time

if __name__ == '__main__':
    filePath = r'E:\2017'
    destPath = r'E:\2017band'

    t_start = time.time()

    # 设置工作空间
    env.workspace = filePath
    env.overwriteOutput = True

    temp_layer = 'temp'

    for filename in os.listdir(filePath):
        if filename.endswith(".tif"):
            print(filename)
            # 获取输入TIFF文件的波段数
            raster = arcpy.Raster(path.join(filePath, filename))
            num_bands = raster.bandCount

            # 分别导出每个波段为单波段TIFF文件
            for i in range(1, num_bands + 1):
                # 创建一个临时的Layer,指定波段
                arcpy.MakeRasterLayer_management(path.join(filePath, filename), temp_layer, band_index=str(i))

                # 使用CopyRaster_management工具导出单个波段
                arcpy.CopyRaster_management(temp_layer,
                                            path.join(destPath, filename.replace(".tif", "_{}.tif".format(i))))

    print('Processing cost {} seconds.'.format(time.time() - t_start))