# -*- coding: utf-8 -*-
import arcpy
import os
from arcpy.sa import ExtractByMask
from arcpy import env
# 环境设置
arcpy.CheckOutExtension("Spatial") # 启用空间分析扩展
env.overwriteOutput = True # 允许覆盖输出
# 参数设置
input_raster = r"C:\Data\原始影像.tif" # 输入栅格路径
vector_folder = r"C:\Data\矢量面数据" # 矢量面数据文件夹
output_folder = r"C:\Data\裁剪结果" # 输出文件夹
# 创建输出目录
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 获取所有矢量面要素
env.workspace = vector_folder
feature_classes = arcpy.ListFeatureClasses("*.shp") # 列出所有SHP文件
# 进度计数器
total = len(feature_classes)
count = 0
# 主处理循环
for fc in feature_classes:
count += 1
try:
# 构建完整路径
mask_layer = os.path.join(vector_folder, fc)
# 生成输出文件名
output_name = "裁剪_" + os.path.splitext(fc)[0] + ".tif"
output_path = os.path.join(output_folder, output_name)
# 执行掩膜提取
out_raster = ExtractByMask(input_raster, mask_layer)
# 保存结果
out_raster.save(output_path)
# 打印进度
arcpy.AddMessage(f"进度:{count}/{total} | 完成:{output_name}")
except Exception as e:
arcpy.AddError(f"处理 {fc} 失败: {str(e)}")
# 清理环境
arcpy.CheckInExtension("Spatial")
print("批量裁剪处理已完成!")
ArcGIS pro Python脚本实现批量栅格裁剪,将栅格根据若干个矢量面裁剪
最新推荐文章于 2025-04-04 23:49:45 发布