赞
踩
在使用模型构建器等进行掩膜提取时,有时候会有要使用多个矢量文件去掩膜裁剪多个栅格数据的情况,模型构建器内只能进行一次迭代,无法直接进行多次迭代,在模型里面嵌套模型多次迭代还不如直接使用arcpy方便。
下面我有20来个矢量文件,要分别掩膜2000-2021年的栅格文件,基于arcpy
# coding=utf-8 # -*- coding:gbk-*- import arcpy import os arcpy.env.overwriteOutput = True # 定义函数,获取特定路径下特定后缀文件形成列表 def getFileName(Path, suffix): # 获取指定目录下的所有指定后缀的文件名 input_template_All = [] f_list = os.listdir(Path) # 返回文件名 for i in f_list: # os.path.splitext():分离文件名与扩展名 if os.path.splitext(i)[1] == suffix: input_template_All.append(i) # print(i) return input_template_All #设置工作空间,直接读取栅格数据 with arcpy.EnvManager(workspace=r'XXXX'): Tif_List = arcpy.ListRasters("*", "tif") print(Tif_List) ShpPath = "XXXX" Shp_List = getFileName(ShpPath, ".shp") print(Shp_List) #用于设置输出文件名 TifName = 2000 for tif in Tif_List: ShpName = 1 for shp in Shp_List: if ShpName < 10: OutName = "XXXX"+str(TifName)+"sta0"+str(ShpName)+".tif" else: OutName = "XXXXX" + str(TifName) + "sta" + str(ShpName)+".tif" inshp = ShpPath +"/"+ shp OutTif = arcpy.sa.ExtractByMask(tif, inshp) OutTif.save(OutName) ShpName += 1 TifName += 1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。