2016-12-15 15 views
0

我想了解如何在ArcCatalog中根据目录中的所有.img光栅文件创建批处理操作工具。我不需要更改代码,但我需要设置正确的参数。使用ArcCatalog创建python批处理图像操作

screenshot of input parameters

这里是我的代码:

'''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') 

在我所选择的参数:

  1. 输入栅格栅格数据集 - 方向输入,多值是
  2. 输出栅格栅格数据集 - 方向输出
  3. 切断仰角 - 字符串,方向输入

我在输入栅格中添加我想要的图像,选择输出栅格并切断高程。但我得到的错误:

line 13, in cutoffElevation =int(arcpy.GetparameterAsText(1)).
ValueError: invalid literal for int() with base 10

有没有人知道如何解决这个问题?

回答

0

该对话框屏幕截图中显示了三个输入参数,但脚本中只描述了两个参数。 (输出栅格outRaster正在第15行定义,而不是作为输入参数。)

您得到的错误是因为输出栅格(可能是文件路径和文件名)无法转换为整数。

有两种方法来解决:

  1. 更改该工具定义中的输入参数,所以你只能在输入栅格(参数0)将切断海拔(参数1)。

  2. 更改代码,以便查找当前定义的正确参数 - 输入栅格(参数0)和截断高程(参数2)。

    inDirectory = arcpy.GetParameterAsText(0) 
    cutoffElevation = int(arcpy.GetParameterAsText(2)) 
    

无论哪种方式,你正在做确保GetParameterAsText命令实际上是指你真正想要的参数。