使用ArcCatalog创建python批处理图像操作

时间:2016-12-15 00:09:29

标签: python arcmap

我尝试根据目录中的所有.img光栅文件,尝试在ArcCatalog中创建批处理操作工具。我不需要更改代码,但我需要设置正确的参数。

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. 切断高程 - 字符串,方向输入
  4. 我在输入栅格中添加我想要的图像,选择输出栅格并切断高程。但是我得到了错误:

      

    第13行,在   cutoffElevation = int(arcpy.GetparameterAsText(1))。
      ValueError:int()的基数为10的无效文字

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

1 个答案:

答案 0 :(得分:0)

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

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

有两种方法可以解决这个问题:

  1. 更改该工具定义中的输入参数,因此您只需输入输入栅格(参数0)和切断高程(参数1)。

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

    inDirectory = arcpy.GetParameterAsText(0)
    cutoffElevation = int(arcpy.GetParameterAsText(2))
    
  3. 无论哪种方式,您都要确保GetParameterAsText命令实际上是指您真正想要的参数。