我尝试根据目录中的所有.img
光栅文件,尝试在ArcCatalog中创建批处理操作工具。我不需要更改代码,但我需要设置正确的参数。
这是我的代码:
'''This script uses map algebra to find values in an
elevation raster greater than a specified value.'''
import os
import arcpy
#switches on Spatial Analyst
arcpy.CheckOutExtension('Spatial')
#loads the spatial analyst module
from arcpy.sa import *
#overwrites any previous files of same name
arcpy.overwriteOutput=True
# Specify the input folder and cut-offs
inDirectory = arcpy.GetParameterAsText(0)
cutoffElevation = int(arcpy.GetParameterAsText(1))
for i in os.listdir(inDirectory):
if os.path.splitext(i)[1] == '.img':
inRaster = os.path.join(inDirectory, i)
outRaster = os.path.join(inDirectory, os.path.splitext(i)[0] + '_above_' + str(cutoffElevation) + '.img')
# Make a map algebra expression and save the resulting raster
tmpRaster = Raster(inRaster) > cutoffElevation
tmpRaster.save(outRaster)
# Switch off Spatial Analyst
arcpy.CheckInExtension('Spatial')
在我选择的参数中:
我在输入栅格中添加我想要的图像,选择输出栅格并切断高程。但是我得到了错误:
第13行,在 cutoffElevation = int(arcpy.GetparameterAsText(1))。
ValueError:int()的基数为10的无效文字
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
该对话框屏幕截图中显示了三个输入参数,但脚本中只描述了两个。 (输出栅格outRaster
在第15行定义,而不是输入参数。)
您获得的错误是因为输出栅格(可能是文件路径和文件名)无法转换为整数。
有两种方法可以解决这个问题:
更改该工具定义中的输入参数,因此您只需输入输入栅格(参数0)和切断高程(参数1)。
更改代码,以便查找当前定义的正确参数 - 输入栅格(参数0)和切断高程(参数2)。
inDirectory = arcpy.GetParameterAsText(0)
cutoffElevation = int(arcpy.GetParameterAsText(2))
无论哪种方式,您都要确保GetParameterAsText
命令实际上是指您真正想要的参数。