Создание пакетной операции с изображением 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')
В параметрах я выбрал:
- Input Raster Raster Dataset - направление ввода, многозначное да
- Output Raster Raster Dataset - направление вывода
- Вырезать высоту - строка, направление ввода
Я добавляю нужные изображения во входной растр, выбираю выходной растр и обрезаю высоту. Но я получаю ошибку:
строка 13, в cutoffElevation = int (arcpy.GetparameterAsText (1)).
ValueError: неверный литерал для int() с основанием 10
Кто-нибудь знает, как это исправить?
1 ответ
На этом снимке экрана диалогового окна показано три входных параметра, но в сценарии описаны только два. (Выходной растр outRaster
определяется в строке 15, а не как входной параметр.)
Вы получаете ошибку, потому что выходной растр (предположительно путь к файлу и имя файла) не может быть преобразован в целое число.
Есть два способа решить это:
Измените входные параметры в пределах этого определения инструмента, чтобы вы подавали только входной растр (параметр 0) и обрезали высоту (параметр 1).
Измените код так, чтобы он искал правильные параметры, которые в настоящее время определены - входной растр (параметр 0) и обрезание высоты (параметр 2).
inDirectory = arcpy.GetParameterAsText(0) cutoffElevation = int(arcpy.GetParameterAsText(2))
В любом случае, вы убедитесь, что GetParameterAsText
Команда на самом деле ссылается на параметр, который вы действительно хотите.