Python地理数据处理 25:基于arcpy批量操作汇总(七)

arcpy批量处理

  • 1、裁剪

1、裁剪

目的: 对指定路径下的所有子文件中的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倍

你可能感兴趣的:(GIS,Arcpy,python,开发语言,GIS,生态学,数据集,遥感,arcpy)