Интеграция скриптов в модель

Скрипты, написанные с использованием Python или другого языка программирования, можно интегрировать в модели преобразуя скрипт в инструмент-скрипт с последующим добавлением его в модель. Этим можно пользоваться, если для улучшения модели или для доступа из ArcGIS к внешним пакетам или программам требуется логика Python или другого языка для написания скриптов.

Отправной точкой интеграции скриптов в модели является собственно скрипт. Скрипт должен быть написан таким образом, чтобы его можно было интегрировать в процедуру геообработки. Дополнительные сведения см. в разделе Написание скрипта Python.

Как только скрипт будет записан, можно будет создать инструмент-скрипт и добавить его в набор инструментов. Этот инструмент-скрипт можно добавить в модель и использовать для расширения ее функциональности.

Пример приложения

В ArcGIS нет встроенного инструмента для работы с HTML. Однако написание скриптов на Python обеспечит вам доступ к методам и функциям, которые можно использовать для создания и изменения документов HTML. Чтобы интегрировать HTML-функции в ArcGIS, внедрите в модель инструмент-скрипт Python.

В следующем примере выполняются пространственные и атрибутивные запросы к слою участков и создается HTML-отчет с подробной информацией об атрибутах, выбранных пользователем и соседних с ними участков. Создание HTML осуществляется скриптом Python, который выполняется из модели.

Скрипт Python

Следующий скрипт с именем tabletohtml.py используется для чтения содержимого входной таблицы и создания HTML-отчета. Код скрипта представлен в конце раздела.

Скрипт python для преобразования таблицы в HTML

Создание инструмента-скрипта

Приведенные ниже инструкции помогут вам создать инструмент, выполняющий скрипт tabletohtml.py. Дополнительные сведения о создании инструментов-скриптов см. в разделе Краткий обзор создания инструментов-скриптов

Шаги:
  1. Щелкните правой кнопкой мыши набор инструментов и выберите последовательно Добавить (Add) > Скрипт (Script).
    Добавление нового скрипта

    Откроется мастер Добавить скрипт (Add Script).

  2. Чтобы задать основные свойства скрипта, используйте мастер Добавить скрипт (Add Script).
    Общие свойства скрипта
  3. На следующей странице мастера Добавить скрипт (Add Script) укажите, какой скрипт будет выполняться при запуске инструмента-скрипта.
    Файл источника скрипта
  4. На следующей странице мастера Добавить скрипт (Add Script) укажите свойства параметров инструмента-скрипта. Данный инструмент-скрипт имеет два параметра: входная таблица и выходной файл HTML. Эти параметры были также определены в файле tabletohtml.py.
    Установка свойств параметра инструмента-скрипта
  5. Нажмите Finish (Готово), чтобы добавить инструмент-скрипт в набор инструментов.

Добавление в модель инструмента-скрипта

Шаги:
  1. Модель Отчет об участках (Parcel Report) формирует пространственные и атрибутивные запросы к слою участков. Добавьте в модель инструмент-скрипт, преобразующий таблицу в HTML, чтобы обеспечить необходимую HTML-функциональность.
    Добавление инструмента-скрипта в модель
  2. Соедините выходные данные инструмента Выбрать в слое по расположению (Select Layer By Location) в качестве входных данных инструмента-скрипта и укажите путь к выходным данным инструмента-скрипта (папку, в которой будет создаваться файл HTML). Дополнительно переименуйте выходные данные инструмента-скрипта, присвоив им имя Report и сделайте переменную параметром модели.
Пример модели, использующей инструмент-скрипт
Окончательная модель, содержащая инструмент-скрипт, используется для создания отчета HTML
import arcpy
import sys
import string
import os

tablePath = arcpy.GetParameterAsText(0)
filePath = arcpy.GetParameterAsText(1)

outfile = open(filePath, "w")
fields = arcpy.ListFields(tablePath)

fieldNames = []
for field in fields:
    if (field.type <> "Geometry" and field.type <> "BLOB"):
        fieldNames.append(field.name)       
outfile.write("<table border=""1"">\n")
outfile.write("<tr>\n")

for fieldName in fieldNames:
    outfile.write("<th>" + fieldName + "</th>\n")    
outfile.write("</tr>\n")

for row in arcpy.da.SearchCursor(tablePath, fieldNames):
    outfile.write("<tr>\n")
    for value in row:
        outfile.write("<td>" + str(value) + "</td>\n")
    outfile.write("</tr>\n")
outfile.write("</table>\n")

outfile.flush()
outfile.close()
5/10/2014