Есть ли способ добавить произвольные фрагменты кода в модель ArcGIS?
Я представляю что-то похожее на «show code block» в построителе выражений в расширенной маркировке или калькуляторе полей .
Например, мой проект на данный момент может извлечь большую выгоду из получения имени пользователя, запустившего инструмент. Я знаю, в Python это просто import os; os.environ.get('USERNAME')
. Я думаю, что я мог бы написать этот фрагмент get_username.py
, добавить его в набор инструментов в Arccatalog, затем добавить этот инструмент в модель и использовать его в качестве параметра модели для моего текущего инструмента. Это большая работа для такой маленькой вещи, и в следующий раз я могу захотеть что-то еще, например, подстановку встроенных переменных или составных переменных .
Я думаю, что инструмент фрагмента кода или аналогичный может удовлетворить все эти потребности в общем и целом полезной манере.
источник
Ответы:
Новый ответ на старый пост, просто чтобы уточнить, как создать модель многократного использования для этого.
Откройте модель, выберите Вставка-> Инструменты только для моделей-> Вычислить значение.
В выражении введите:
getuser()
В блоке кода введите:
(См. « Получение имени пользователя в определенном формате » для получения фрагмента кода имени пользователя из @ChadCooper)
Для Типа данных выберите
String
.Переименуйте выходной круг в
username
. Модель конечного результата будет выглядеть так:И затем вы можете просто перетащить эту модель в любые будущие модели и ссылаться на переменную с именем% username% в любых будущих моделях или сценариях. Просто убедитесь, что эта модель работает, прежде чем пытаться получить доступ к переменной% username%. Вы можете сделать это, используя предварительное условие .
источник
На самом деле вы можете сделать это с помощью инструмента Рассчитать стоимость (Управление данными) .
Это не особенно элегантно (весь исходный код инструмента печатается в журнале при каждом запуске), а редактор (на самом деле просто текстовое поле) ужасен.
Я бы предложил написать модули, из которых вы можете затем импортировать и вызывать функции, и тогда вам нужно будет только написать очень короткие фрагменты в диалоге. В противном случае это просто не очень чисто.
Рассчитать стоимость доступно на всех уровнях лицензии для Arcgis v10. С v9.x он доступен для Arcview, только если установлены расширения Spatial или 3D Analyst ( ссылка ).
источник
%USERNAME%
в соединение с базой данных .sde). Согласился, редактор не достоин этого имени, отлично работает как место для вставки.Возможно, я неправильно понимаю вопрос, но кажется, что функциональность инструмента-скрипта Python в ArcToolBox - это то, что вы ищете:
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Integrating_scripts_within_a_model/002w0000006n000000/
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001500000006000000.htm
Фактически вы также можете использовать / комбинировать несколько других языков сценариев (в данном примере R):
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w0000007w000000
источник