1. 基于Arcpy批量提取多波段遥感影像中的所有单波段影像(以worldclim2.1未来气候数据为例)
今天要分享的是如何用Arcpy从多波段遥感影像中提取所有单波段影像的方法。
最近我在使用worldclim未来气候数据时,遇到了一个问题。未来气候数据为包含19个单波段的多波段影像,因此如果一个个地进行提取肯定会比较麻烦。于是我用Arcpy编写了一个小代码,来实现批量提取。
# -*- coding: cp936 -*-
import arcpy
from arcpy.sa import *
import os
# 检查并获取 Spatial Analyst 扩展许可
arcpy.CheckOutExtension('Spatial')
# 设置工作空间
arcpy.env.workspace = "C:/Users/Jacksonzhao/Desktop/21-40"
output_directory = "C:/Users/Jacksonzhao/Desktop/21-40/bands"
# 获取栅格列表
raster_list = arcpy.ListRasters("*.tif")
# 遍历栅格集合
for raster in raster_list:
# 获取栅格数据集的全路径
raster_full_path = os.path.join(arcpy.env.workspace, raster)
# 创建栅格对象
raster_obj = arcpy.Raster(raster_full_path)
# 获取波段数量
number_of_bands = raster_obj.bandCount
# 构建基本的文件名
base_filename = "wc2.1_30s_BCC_SSP126_21-40"
# 遍历所有波段
for i in range(1, number_of_bands + 1):
# 提取单波段并创建栅格图层
band_name = "band_" + str(i)
arcpy.MakeRasterLayer_management(raster_full_path, band_name, "", "", i)
# 保存单波段影像
output_path = os.path.join(output_directory, base_filename + "_Bio{0}.tif".format(i))
arcpy.CopyRaster_management(band_name, output_path)
print("Saved:", output_path)