Создание пакетной операции с изображением Python с использованием ArcCatalog

Я пытаюсь понять, как создать инструмент пакетной работы в ArcCatalog, основываясь на .img растровые файлы в каталоге. Мне не нужно менять код, но мне нужно установить правильные параметры.

скриншот входных параметров

Вот мой код:

'''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. Input Raster Raster Dataset - направление ввода, многозначное да
  2. Output Raster Raster Dataset - направление вывода
  3. Вырезать высоту - строка, направление ввода

Я добавляю нужные изображения во входной растр, выбираю выходной растр и обрезаю высоту. Но я получаю ошибку:

строка 13, в cutoffElevation = int (arcpy.GetparameterAsText (1)).
ValueError: неверный литерал для int() с основанием 10

Кто-нибудь знает, как это исправить?

1 ответ

На этом снимке экрана диалогового окна показано три входных параметра, но в сценарии описаны только два. (Выходной растр outRaster определяется в строке 15, а не как входной параметр.)

Вы получаете ошибку, потому что выходной растр (предположительно путь к файлу и имя файла) не может быть преобразован в целое число.

Есть два способа решить это:

  1. Измените входные параметры в пределах этого определения инструмента, чтобы вы подавали только входной растр (параметр 0) и обрезали высоту (параметр 1).

  2. Измените код так, чтобы он искал правильные параметры, которые в настоящее время определены - входной растр (параметр 0) и обрезание высоты (параметр 2).

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

В любом случае, вы убедитесь, что GetParameterAsText Команда на самом деле ссылается на параметр, который вы действительно хотите.

Другие вопросы по тегам