现在有需求:使用流域栅格对多幅栅格进行裁剪,可以使用arcgis的模型构建器实现,但我遇到下面的问题:
文件夹中的栅格名称太长了(不能超过13个字符),没办法作为输出栅格的名称
使用了一个叫做计算值的工具将名称缩短
但是迭代很奇怪,n值一直停留在第一个文件的位置,于是放弃,改用arcpy。
arcpy代码如下
# -*- coding:UTF-8 -*- # 要对字符编码格式进行修改,否则无法让中文合法
# *************************************************************************
# 目的:多幅流域栅格裁剪
# 时间:2021年3月9日
# 作者:Vivianooooo
# 需求:在arcgis的建模中,我想要要对多幅栅格进行裁剪,但由于tif栅格的名称过长,在用计算值工具时发生了奇怪的报错,迭代栅格工具无法实现
# 思路:用流域掩膜对多幅栅格进行裁剪
# *************************************************************************
import arcpy
from arcpy import env
def basinClip():
wholeTWS = "D:\\data\\GRACE\\JPL"
outputPath = "D:\\data\\Study\\ArcPro\\mascon_jpl"
BruMask_tif = arcpy.Raster("D:\data\\Study\\ArcPro\\BruMask.tif")
arcpy.env.workspace = wholeTWS
grid_list = arcpy.ListRasters("*", "TIF")
for raster in grid_list:
_out_val_ = arcpy.ia.Times(in_raster_or_constant1=BruMask_tif, in_raster_or_constant2=raster)
outFileNam = raster[37:47]
_out_val_.save(outputPath + '\\' + outFileNam)
if __name__ == '__main__':
basinClip()
结果