目的: 对指定路径下的所有子文件中的tif影像进行批量裁剪,并生成对应的文件夹,保存裁剪后的tif文件。
# -*- coding: cp936 -*-
import arcpy
import os
arcpy.CheckOutExtension("spatial")
# 创建一个用于存储输出的文件夹
input_folder = r"D:\SDMs\Datasets\worldclim1.4\Future_RCP_30s\2070"
mask = r"D:\SDMs\Datasets\arcgis\China-map.shp"
# 获取指定目录下的所有文件和文件夹
all_files_and_folders = os.listdir(input_folder)
print(all_files_and_folders)
for folder_name in all_files_and_folders:
# 子文件夹路径
folder_path = os.path.join(input_folder, folder_name)
# 获取子文件夹中的所有tif文件
tif_files = [file for file in os.listdir(folder_path) if file.endswith(".tif")]
clip_name = "Clip_" + folder_name
# path = arcpy.CreateFolder_management(input_folder, clip_name)
path = os.path.join(input_folder, clip_name)
print(clip_name)
print(path)
arcpy.CreateFolder_management(input_folder, clip_name)
arcpy.env.workspace = folder_path #栅格文件路径
for i in tif_files:
print str(i)
# 输出tif文件路径
output_tif = os.path.join(path, i)
print(output_tif)
arcpy.gp.ExtractByMask_sa(i, mask, output_tif)
print("mask_" + i + "has done!")
print("===============================================================")
print("All OK!!!")
本例子中使用了os.listdir(input_folder)来获取文件夹下的子文件名,而不需要手动输入文件名,这样更加方便,之前的文章中就是手动输入的:Python地理数据处理 22:基于arcpy批量操作(四)—— 3. 栅格批量缩小n倍