Більше

Виберіть Дані не працюватимуть ... Параметри недійсні в ArcGIS ModelBuilder?

Виберіть Дані не працюватимуть ... Параметри недійсні в ArcGIS ModelBuilder?


Я створюю модель у ArcGIS 10.3 ModelBuilder і у мене виникають проблеми з тим, щоб інструмент вибору даних працював. Спочатку повна модель: IHS-Klassifizierung З Виберіть Дані інструмент (Елемент вхідних даних: растр, елемент дочірніх даних: %layerband %_1) Я вибираю Band_1 або Band_3 з растрового файлу, для цього мені потрібно перевірити Обчислити значення якщо смуги називаються "Layer_x" або "Band_x" (У моїх растрових даних різні назви, і я не повинен їх змінювати), з таким кодом:

def x (Rasterfile): import arcpy # Я думаю, що це не потрібно, але я не впевнений desc = arcpy.Describe (Rasterfile) # Отримати необхідну інформацію bandlayer = desc.children [0]. name # вибрати перший діапазон ergebnis = str (bandlayer.split ("_", 1) [0]) # Видаліть _ та номер з імені повернення ergebnis

як вираз, який я використовуюx ("%Rasterfile%")та Тип дати Рядок.

Коли я запускаю модель на моїх зразках даних (лише один растровий файл), я отримую таку помилку:

Виконання: IHS-Класифікація W:  arctest W:  arctest  output Час початку: Вт Листопад 03 16:39:06 2015 Виконання (Повторені растри): IterateRasters W:  arctest # # NOT_RECURSIVE Час початку: Вт, Листопад 03 16:39 : 06 2015 Успіх у вівторок, 03 листопада 16:39:07 2015 (минулий час: 0,52 секунди) 39:07 2015 Успіх у вівторок 03 листопада 16:39:07 2015 (минулий час: 0,00 секунд) Виконання (обчислення значення): CalculateValue x ("orthoclip.tif") "def x (Rasterfile):  n import arcpy desc = arcpy.Describe (Rasterfile) bandlayer = desc.children [0]. name ergebnis = str (bandlayer.split ("_", 1) [0]) return ergebnis  n "Час початку рядка: вівторок 03 листопада 16: 39:07 2015 Значення = Діапазон досяг успіху у вівторок 03 листопада 16:39:07 2015 (минулий час: 0,04 секунди) Виконання (вибір даних): SelectData W:  arctest  orthoclip.tif Band_1 Час початку: вівторок 03 16 16 : 39: 07 2015 ** Не вдалося виконати. Параметри недійсні. ** ** ПОМИЛКА 000800: Значення не є членом Band_1 | Група_2 | Група_3 | Band_4. ** Не вдалося виконати (Вибрати дані). Не вдалося виконати (IHS-Klassifizierung).

Якщо я спробую це без Інструмент обчислення вартості і покласти в Виберіть Елемент даних- дочірні дані безпосередньо Band_1 або Band_3 це працює.

Іноді трапляється (я не можу зрозуміти чому, і я не підключаю це до змін, які я зробив), що з'являється така помилка:

Виконання: IHS-Класифікація W:  arctest W:  arctest  output Час початку: середа, листопад 04 13:23:47 2015 Виконання (повторені растри): IterateRasters W:  arctest # # NOT_RECURSIVE Час початку: середа 04 13:23 : 47 2015 Успіх у середу, 04 листопада 13:23:47 2015 (минулий час: 0,35 секунди) Виконання (шлях аналізу (2)): ParsePath W:  arctest  orthoclip.tif Час початку файлу: середа 04 листопада 13 13: 23:47 2015 Успіх у середу, 04 листопада 13:23:47 2015 (минулий час: 0,00 секунд) Виконання (обчислення значення): CalculateValue x ("orthoclip.tif") "def x (Rasterfile):  n import arcpy  n desc = arcpy.Describe (Rasterfile)  n bandlayer = desc.children [0]. name  n ergebnis = bandlayer.split ("_", 1) [0]  n повернути ergebnis  n "Час початку рядка: Середа 04 листопада 13:23:47 2015 ПОМИЛКА 000539: Помилка запуску виразу: x ("orthoclip.tif") Відстеження (останній останній виклик): Файл "", рядок 1, в  Файл "", рядок 3, у файлі x" c:  програмні файли (x86)  arcgis  desktop10.3  arcpy  arcpy  __ init__.py ", рядок 1246, у описі повернути gp.describe (значення) Файл" c:  програмні файли (x86)  arcgis  desktop10.3  arcpy  arcpy  geoprocessing  _base.py ", рядок 374, в описі self._gp.Describe (*gp_fixargs (args, True))) IOError:" orthoclip.tif " не існує Не вдалося виконати (обчислити значення). Не вдалося виконати в середу, 04 листопада 13:23:48 2015 (минулий час: 0,28 секунди) Не вдалося виконати (IHS-класифікація). 2015 (минулий час: 0,93 секунди)

Я знайшов рішення: у цьому випадку нерозумно використовувати інструмент "Вибрати дані", тому що ви можете безпосередньо використовувати інструмент обчислення значення для отримання повних шляхів до смуг.

Код python із засобу обчислення значення (вираз x (r "%Raster%"), DataType Raster Band):

def x (rasterimage): імпортувати arcpy desc = arcpy.Описати (rasterimage) bandlayer = desc.children [0]. name ergebnis = bandlayer.split ("_", 1) [0] pfad = r "%Raster%\% s_1 " % ergebnis повертає pfad

Працює нормально зараз.