Продуктивність сценарію Python як інструмент ArcGIS у порівнянні з автономним режимом


11

Хтось вивчав різницю в застосуванні сценарію Python в ArcToolbox порівняно з окремим сценарієм? Мені довелося написати швидкий і брудний сценарій, щоб перетворити набір RGB-зображень в односмуговий діапазон шляхом вилучення діапазону 1. Як автономний сценарій читання і запису на мій ПК, він обробляє 1000 зображень однакового розміру приблизно за 350 секунд. Запуск того ж сценарію від ArcToolbox займає близько 1250 секунд.

import arcpy
import csv
from os import path

arcpy.env.workspace = in_folder
image_list = arcpy.ListRasters()

#Create a CSV file for timing output
    with open(outfile, 'wb') as c:
        cw = csv.writer(c)
        cw.writerow(['tile_name', 'finish_time'])

        #Start the timer at 0
        start_time = time.clock()

        for image in image_list:
            #Extract band 1 to create a new single-band raster
            arcpy.CopyRaster_management(path.join(image, 'Band_1'), path.join(out_folder, image))
            cw.writerow([image, time.clock()])

Я додав код, щоб відстежувати, коли кожна плитка закінчує обробку, та експортувати результати як CSV. Перетворення часу закінчення на час обробки відбувається в Excel. Графікуючи результати, час обробки приблизно однаковий для кожної плитки як сценарій, але час обробки збільшується лінійно при запуску як інструмент ArcGIS.

введіть тут опис зображення

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

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


1
пітон поза ArcGIS набагато швидший. Я використовую вікно python лише тоді, коли роблю дуже прості сценарії або хочу можливість перетягувати елементи в термінал. Можливо, термінал ArcGIS контролює розподіл ресурсів інтерпретатора, оскільки весь пакет програмного забезпечення також потребує python для роботи.
atxgis

моя рекомендація (виходячи з мого досвіду, а не кількісно оцінених даних про ефективність, як ви надали) полягає в тому, щоб використовувати arcpy в крайньому випадку. У наведеному вище прикладі будь-який інтерпретатор python без arcpy цілком здатний ефективно фільтрувати каталог за растрами та копіювати їх у нову папку
Paul H

1
Скільки різниці між фоновою географічною обробкою x64 та 32-бітною обробкою?
Кірк Куйкендалл

Коли ви говорите, що ви "запускаєте скрипт Python в ArcToolbox", ви маєте на увазі, що ви використовуєте інструмент сценарію Python? Якщо так, чи запускаєте ви його без параметрів для свого тесту?
PolyGeo

@PolyGeo так, я створив інструмент сценарію в панелі інструментів ArcGIS. Знадобилося 1 параметр, з якого походять in_folder та out_folder. Це все зроблено до початку вимірювань часу.
Бьорн

Відповіді:


1

Це моє враження: запуск сценарію з ArcToolbox несе всілякі приховані витрати, оскільки інструменти намагаються взаємодіяти / оновлювати основний додаток (ArcMap). Усі інструменти будуть оновлювати метадані, деякі намагаються оновити вікно карти, і MXD записує кожен інструмент, який ви запускаєте на панелі історії геообробки. Жоден із цих прихованих впливів не виникає під час запуску в IDE.

Тому запуск циклу всього 1000 разів означає, що MXD зберігає 1000 журналів. Оскільки ArcMap є закритим власним програмним забезпеченням, ми не маємо уявлення про те, як працює механізм запису журналів обробки даних і може бути кроком, що обмежує швидкість, чи використовувана ними структура даних не здатна обробляти великі повтори?

Інша проблема полягає в тому, що ArcMap - це програма, керована подіями. Колись відбувається, коли відбуваються події, ви переміщуєте карту, і карта оновлюється, ви додаєте дані та кнопка дозволяє. Напевно, можливо, що інструменти знімають усілякі події, і додаток перетворюється на них, коли інструменти використовуються повторно, але це я гадаю?

Я вважаю, що слід подолати плюси і мінуси, викриття сценарію як інструменту сценарію полегшує його використання в середовищі ArcMap, особливо для неенергетичних користувачів. Це важливе питання, якщо ви бажаєте прийняти ваш код. Хрустке число жорстких цифр саме вами без необхідності робити проміжний контроль якості, а потім запустіть сценарій у вибраному IDE.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.