在arcgis pro 环境下使用
# -*- coding: utf-8 -*-
# 编 写 人:维吉斯蔡
# 编写时间: 2024-01-11
import arcpy
import os
import time
import datetime
r = arcpy.CheckOutExtension("spatial") #权限检查
print(r)
# 设置工作空间和栅格文件(工作空间中包含栅格数据)
arcpy.env.workspace = "C:\data"
# 栅格数据路径
raster = r"C:\data\clip.tif"
# 确定输出栅格位置
out_path = r"C:\data\result"
# 获取所有边界矢量数据文件名
boundary_fcs = arcpy.ListFeatureClasses(feature_type='Polygon')
# 循环遍历所有边界矢量数据,并按掩膜提取
for fc in boundary_fcs:
# 读取边界矢量数据的name字段
with arcpy.da.SearchCursor(fc, "name") as cursor:
for row in cursor:
name = row[0]
# 确定输出栅格名称
out_name = name + ".tif"
out_raster = os.path.join(out_path, out_name)
print(name,time.ctime())
# 执行按掩膜提取
try:
from arcpy.sa import *
outExtractByMask = ExtractByMask(raster, fc)
outExtractByMask.save(out_raster)
print('---------finish extract' + name + '------------',time.ctime())
del outExtractByMask
except:
print('不在范围内',time.ctime())
continue
print('Finish ALL',time.ctime())