12 | Документация

Настройка моделей геообработки

Сервис геообработки может состоять из одной или нескольких моделей геообработки.
Для перехода к настройке моделей геообработки необходимо нажать на имя сервиса в списке. Будет открыто окно свойств сервиса. Далее необходимо перейти к разделу Проект , см. Рисунок 111 .
Рисунок 111 - Раздел Проект сервиса геообработки
В разделе отображается список моделей, входящих в сервис (см. Рисунок 112 ).
Для каждой модели отображаются:
  • Имя модели
  • ID модели
    • Синхронность/Асинхронность выполнения модели
    • Активные задачи (сколько в данный момент запущено/сколько ждут в очереди),
Рисунок 112 - Список моделей сервиса геообработки

Просмотр списка моделей

Список моделей представлен в виде таблицы, содержащей следующие сведения о каждой модели:
  • Имя;
  • ID;
  • Асинхронность;
  • Количество используемых потоков.
Элементы в таблице можно отсортировать по имени и идентификатору.
В верхней части списка по умолчанию находятся модели, добавленные последними.

Сохранение модели в файл

В правой части строки с названием модели расположена панель инструментов: .
Для того чтобы сохранить модель в файл, необходимо нажать на кнопку . После этого откроется стандартное диалоговое окно операционной системы для сохранения JSON-файла c описанием модели.

Обновление модели из файла

В правой части строки с названием модели расположена панель инструментов: .
Для того чтобы обновить модель на основе JSON-файла, необходимо нажать на кнопку . После этого откроется стандартное диалоговое окно операционной системы для выбора JSON-файла c описанием модели.

Редактирование свойств модели

В правой части строки с названием модели расположена панель инструментов: .
Для того чтобы отредактировать сведения о модели (но не саму модель), необходимо нажать на кнопку .
Откроется окно со свойствами модели, см. Рисунок 113 .
Рисунок 113 - Редактирование свойств модели
Модель описывается следующими свойствами:
  • ID модели - системное название, будет использоваться в URL для обращения к модели;
  • Название - название модели, используемое для отображения;
  • Описание - дополнительные сведения о модели;
  • Выполнять асинхронно - настройка асинхронности выполнения модели;
  • Включение модели - включение/выключение модели;
  • Количество используемых потоков - максимальное количество параллельных запусков одной и той же модели. По умолчанию указано значение 1. Для того чтобы ограничений на количество параллельных запусков не было - необходимо указать значение 0.
Внести изменения можно в поля ввода рядом с названиями свойств модели.
Поля, обязательные для заполнения, отмечены символом .
Для сохранения изменений необходимо нажать на кнопку .
Для отмены изменений необходимо нажать на кнопку или закрыть окно.

Удаление выбранной модели

В правой части строки с названием модели расположена панель инструментов: .
Для того чтобы удалить выбранную модель, необходимо нажать на кнопку .

Удаление, копирование, вырезание нескольких моделей

Для удаления, копирования или вырезания (удаления с сохранением в буфере обмена) модели необходимо предварительно выбрать её в списке. Для этого нужно поставить отметку в окне , расположенном слева от названия модели.
Можно выбрать сразу несколько моделей, последовательно ставя отметки в соответствующих окнах.
Можно выбрать все модели сервиса, поставив отметку слева от заголовков списка: .
Как только будет выбрана хотя бы одна модель в списке, в верхней части списка появятся кнопки дополнительных инструментов:
Рисунок 114 - Инструменты для работы с выбранной моделью
Для удаления выбранной модели необходимо нажать на кнопку и подтвердить действие во всплывающем окне.
Для копирования выбранной модели необходимо нажать на кнопку . Модель будет скопирована в буфер обмена, а рядом с инструментами удаления и копирования появится дополнительная кнопка для вставки скопированного в список моделей этого же или другого сервиса. Кнопка будет доступна при перемещении по каталогу сервисов.
Для вырезания (удаления с сохранением в буфере обмена) выбранной модели необходимо нажать на кнопку .Модель будет удалена и при этом скопирована в буфер обмена, а рядом с инструментами удаления и копирования появится дополнительная кнопка для вставки скопированного в список моделей этого же или другого сервиса. Кнопка будет доступна при перемещении по каталогу.

Загрузка модели из файла

Для добавления модели геообработки к сервису из файла необходимо нажать на кнопку , см. Рисунок 115 .
Рисунок 115 - Кнопка загрузки модели из файла
Откроется стандартное диалоговое окно операционной системы для выбора одного или нескольких JSON-файлов c описанием моделей.
После выбора файлов соответствующие модели будут добавлены в список.

Добавление модели

Для добавления новой модели, которую затем можно будет настроить с помощью визуального конструктора, необходимо нажать на кнопку
расположенную в правой части раздела Проект , см. Рисунок 116 .
Рисунок 116 - Кнопка добавления модели для дальнейшей настройки с помощью конструктора
После нажатия на кнопку откроется окно для ввода свойств модели, см. Рисунок 117 .
Рисунок 117 - Ввод свойств модели
Состав свойств, доступных при редактировании существующей модели (см. 10.5.4 ) и при добавлении новой модели, не отличается.
Поля, обязательные для заполнения, отмечены символом .
Для сохранения изменений необходимо нажать на кнопку .
Для отмены изменений необходимо нажать на кнопку или закрыть окно.

Настройка модели в конструкторе

Настройка моделей (добавление и удаление переменных, инструментов, настройка их параметров, связывание переменных и инструментов между собой) осуществляется в специальном графическом редакторе - конструкторе моделей.

Основные элементы конструктора моделей

Для перехода к настройке модели в конструкторе необходимо нажать на название модели.
Откроется окно конструктора. Для вновь созданных (пустых) моделей окно конструктора будет выглядеть так, как показано на рисунке ниже, см. Рисунок 118 .
Рисунок 118 - Окно конструктора для новой модели
Для моделей, уже включающих в себя какие-то инструменты и переменные, окно конструктора будет выглядеть так, как показано на рисунке ниже, см. Рисунок 119 .
Рисунок 119 - Окно конструктора для рабочей модели
Окно конструктора состоит из двух частей:
  • Панель инструментов
  • Рабочая область
Панель инструментов содержит основные инструменты для работы с моделью. В центре панели инструментов отображается название модели. В левой части панели инструментов расположены следующие инструменты:
- добавление новой переменной (см. подробнее п. 10.5.9.2 );
- добавление нового инструмента (см. подробнее п. 10.5.9.3 );
- изменение масштаба рабочей области: для уменьшения или увеличения масштаба необходимо передвинуть ползунок влево или вправо соответственно; также изменять масштаб можно путем нажатия комбинации клавиш «ALT» и «+» или «ALT» и «-» на клавиатуре;
- сдвиг рабочей области: необходимо нажать на данную кнопку, чтобы переместить рабочую область; перемещать/сдвигать рабочую область можно будет, удерживая нажатой левую кнопку мыши или с помощью стрелок на клавиатуре; включить/отключить инструмент можно также путем нажатия комбинации клавиш «ALT» и «P» на клавиатуре.
- переход в режим редактирования выбранной переменной или инструмента; кнопка появляется только тогда, когда на рабочей области выбран один из инструментов или переменная (см. подробнее п. 10.5.9.4 и п. 10.5.9.5 );
- удаление выбранной переменной или инструмента; кнопка появляется только тогда, когда на рабочей области выбран один из инструментов или переменная; также удалить выбранный объект можно путем нажатия комбинации клавиш «ALT» и «DEL» на клавиатуре (см. подробнее п. 10.5.9.7 );
- сохранение внесенных изменений в модель; кнопка появляется только тогда, когда в модель внесены и не сохранены какие-либо изменения;
- закрытие окна конструктора.
Рабочая область включает в себя графическое изображение модели. Рабочая область - это пространство для размещения инструментов, переменных и связывания их между собой.
В конструкторе используются следующие обозначения для элементов модели:
- Сиреневым овалом с контуром в виде штриховой линии обозначаются входные переменные, для которых не задано никакое значение.
- Сиреневым овалом с контуром в виде сплошной линии обозначаются входные переменные, которым назначено определенное значение.
- Фиолетовым овалом обозначаются входные переменные, если они являются массивом.
- Зеленым овалом с контуром в виде сплошной линии обозначаются выходные переменные.
- Желтым овалом с контуром в виде сплошной линии обозначаются переменные не связанные ни с одним инструментом.
- специальным знаком обозначаются переменные, являющиеся публичными параметрами.
- Желтым прямоугольником с контуром в виде сплошной линии обозначаются инструменты.
- Голубым цветом обозначаются выбранные в текущий момент инструменты или переменные.
- Сиреневыми стрелками обозначаются потоки данных от исходных переменных к инструменту.
- Зелеными стрелками обозначаются потоки данных от инструмента к выходным переменным.

Добавление переменной

Для добавления новой переменной к модели необходимо нажать на кнопку на панели инструментов или нажать комбинацию клавиш ALT+V на клавиатуре.
После нажатия курсор мыши изменит внешний вид, примет вид овала (см. Рисунок 120 ).
Рисунок 120 - Вид курсора после нажатия на кнопку добавления новой переменной
Далее необходимо щелкнуть левой кнопкой мыши в той части рабочей области, где следует разместить переменную. После этого откроется окно создания новой переменной (см. Рисунок 121 ).
Рисунок 121 - Окно создания новой переменной
Определите следующие параметры новой переменной:
  • Тип - выберите из выпадающего списка тип переменной;
  • Доступны следующие типы переменных:
    • Строка;
    • Целое число;
    • Вещественное число;
    • Да/Нет;
    • Дата;
    • Файл;
    • Геометрия;
    • Система координат;
    • SQL-выражение;
    • База геоданных;
    • Класс объектов (Table);
    • Слой объектов (Display Table);
    • Класс пространственных объектов (Feature Class);
    • Слой пространственных объектов (Feature Layer);
    • Карта;
    • Сервис изображений карты;
  • Имя - задайте имя переменной на английском языке;
  • Является обязательным - определите, является ли переменная обязательной;
  • Нажмите на переключатель, если требуется, чтобы модель была не доступна для запуска, пока не задана переменная.
  • Является публичным - определите, является ли переменная публичной;
Нажмите на переключатель, если требуется, чтобы переменная была доступна для обращения из других моделей/инструментов и через веб.
Введите Имя публичного параметра и Описание .
  • Является массивом - определите, является ли переменная массивом;
  • Нажмите на переключатель, если переменная является совокупностью переменных выбранного типа.
  • Является ссылкой - определите, является ли переменная ссылкой;
  • Нажмите на переключатель, если требуется, чтобы переменная принимала значения другой переменной или определенного параметра модели;
  • Выберите нужную переменную или параметр из выпадающего списка всех переменных и параметров текущей модели. Выбранная переменная (или параметр) будет визуально связана с настраиваемой переменной.
  • Значение - задайте значение для переменной.
Для переменных типов Строка , Целое число , Вещественное число , SQL-выражение введите значение переменной в текстовое поле.
Для переменной типа Дата выберите нужную дату из календаря.
Для переменной типа Да/Нет задайте значение положением переключателя.
Для переменной типа База геоданных выберите необходимую базу из выпадающего списка подключений (список подключений формируется во вкладке Базы данных Глобальных настроек CoGIS Server , см. подробно Руководство администратора по установке и настройке ).
Для переменной типа Геометрия укажите картографический сервис и слой.
Для переменных типов Класс объектов , Слой объектов , Класс пространственных объектов , Слой пространственных объектов выберите, как будет задаваться переменная (параметр Способ задачи ):
  • Сервис - в качестве значения переменной используется выбранный слой картографического сервиса (см. Рисунок 122 );
  • Выберите из выпадающего списка картографический сервис (параметр Название карты ) и необходимый слой (параметр Название слоя ). Если требуется, задайте SQL-выражение в качестве фильтра (параметр Фильтр ).
Рисунок 122 - Способ задачи значения для переменной типов Класс объектов, Слой объектов, Класс пространственных объектов, Слой пространственных объектов - Сервис
  • Таблица из базы данных - в качестве значения переменной используется выбранная таблица из подключенной базы данных (см. Рисунок 123 );
Выберите базу данных из выпадающего списка подключений и укажите необходимую таблицу.
Рисунок 123 - Способ задачи значения для переменной типов Класс объектов, Слой объектов, Класс пространственных объектов, Слой пространственных объектов - Таблица из базы данных
  • Новая таблица - в качестве значения переменной создается новая таблица во временной базе данных (см. Рисунок 124 ).
    1. Укажите имя таблицы и тип геометрии. Определите систему координат, если создается таблица с геометрией.
    2. Добавьте набор атрибутивных полей, нажимая на кнопку . Определите свойства атрибутивных полей - имя, тип, обязательное или нет, длина, значение по умолчанию.
Рисунок 124 - Способ задачи значения для переменной типов Класс объектов, Слой объектов, Класс пространственных объектов, Слой пространственных объектов - Новая таблица
    1. Для переменной типа Карта выберите картографический сервис из выпадающего списка.
    2. Для переменной типа Сервис изображений карты выберите сервис изображений из выпадающего списка.
    3. Для переменной типа Система координат выберите необходимую систему координат в окне Выбор системы координат , нажав на кнопку Добавить систему координат .
Если переменная является массивом, задайте необходимое количество значений переменной, нажимая на кнопку   Добавить значение . В качестве значения массива можно выбрать одну или несколько других переменных или параметров текущей модели. Для этого нажмите на кнопку   Добавить переменную и выберите из выпадающего списка необходимую переменную или параметр модели. Чтобы изменить порядок следования значений в массиве, используйте команды меню -   Выше или   Ниже . Чтобы удалить значение из массива, нажмите (см. Рисунок 125 ).
Рисунок 125 - Создание новой переменной, являющейся массивом данных
Поля, обязательные для заполнения, отмечены символом . По завершении настройки новой переменной нажмите Создать переменную , для отмены создания нажмите Отмена .
.

Добавление инструмента

Для добавления нового инструмента к модели необходимо нажать на кнопку панели инструментов или нажать комбинацию клавиш «ALT» и «T» на клавиатуре.
После нажатия курсор мыши изменит внешний вид и будет выглядеть следующим образом:
Далее необходимо щелкнуть левой кнопкой мыши в той части рабочей области, где следует разместить инструмент. После этого откроется окно создания нового инструмента, см. Рисунок 126 .
Рисунок 126 - Окно создания нового инструмента
Инструмент геообработки описывается следующими свойствами:
  • Тип;
  • Имя.
Тип инструмента можно выбрать из выпадающего списка, см. Рисунок 127 .
Рисунок 127 - Выбор типа инструмента геообработки
Список инструментов и их параметров приведен в приложении (см. п. 13 ).
Примечание: Инструментом может также являться готовая модель геообработки, входящая в состав редактируемого сервиса. Все модели геообработки сервиса будут перечислены в конце списка инструментов (раздел «Текущий сервис»). Таким образом в CoGIS Server поддерживается вложенность моделей геообработки и возможность реализации сложных алгоритмов геообработки.
Имя необходимо указать в соответствующее поле ввода. После выбора типа инструмента имя инструмента заполнится по умолчанию. При необходимости его можно изменить.
Поля, обязательные для заполнения, отмечены символом .
Для сохранения изменений и создания инструмента необходимо нажать на кнопку .
Для отмены создания инструмента необходимо нажать на кнопку или закрыть окно.

Редактирование переменной

Для перехода к редактированию переменной необходимо
  • дважды щелкнуть по ней;
  • или сначала выбрать переменную на модели одним нажатием левой кнопки мыши, а затем нажать на кнопку , которая появится на панели инструментов.
После этого откроется окно редактирования переменной, см. Рисунок 128 .
Рисунок 128 - Редактирование переменной
В отличие от режима создания новой переменной (см. 10.5.9.2 ) при ее редактировании уже нельзя изменить тип переменной. Остальные параметры можно изменить.
Для сохранения внесенных изменений нажмите ОК, для отмены нажмите Отмена.
Сохраните изменения в модели, нажав на кнопку , расположенную справа на панели инструментов.

Редактирование инструмента

Для перехода к редактированию инструмента необходимо
  • дважды щелкнуть по нему;
  • или сначала выбрать инструмент на модели одним нажатием левой кнопки мыши, а затем нажать на кнопку , которая появится на панели инструментов.
После этого откроется окно редактирования инструмента, см. Рисунок 129 .
Рисунок 129 - Редактирование инструмента
В отличие от режима создания нового инструмента (см. 10.5.9.3 ) при его редактирования уже нельзя изменить тип инструмента.
При этом можно:
  • Изменить название инструмента
  • Для этого необходимо щелкнуть на текущем названии инструмента. Оно станет редактируемым. После этого можно внести необходимые правки, см. Рисунок 130 .
Рисунок 130 - Редактирование названия инструмента
  • Указать значения для входных переменных
  • Для этого необходимо ввести в соответствующие поля ввода конкретные значения или выбрать возможные варианты из выпадающих списков.
  • При этом допустимые для вода значения будут соответствовать типу переменной.
Примечание: в качестве переменных могут использоваться конкретные картографические сервисы, опубликованные на ГИС-сервере, а также входящие в их состав слои.
  • Сделать некоторые переменные невидимыми на рабочей области
Для этого необходимо нажать на кнопку , расположенную рядом с названием переменной. Данная переменная перестанет отображаться на рабочей области.
Для сохранения внесенных изменений необходимо закрыть окно редактирования инструмента и нажать на кнопку , расположенную справа на панели инструментов.

Связывание инструментов и переменных между собой

Связывание инструментов между собой происходит за счет переменных: необходимо указать, что выходные переменные одного инструмента являются входными переменными для другого инструмента.
Для этого выходную переменную необходимо перетащить и совместить с нужной входной переменной другого инструмента.
Если переменные совпадут по типу, то входная переменная перекрасится из сиреневого в зеленый цвет, см. примеры на рисунках ниже (см. Рисунок 131 и Рисунок 132 ). Выходная переменная «Слой с построенными буферами вокруг объектов» инструмента «Создание буферов» стала входной переменной для инструмента «Проецирование слоя в другую систему координат».
Рисунок 131 - Инструменты до связывания через переменные
Рисунок 132 - Инструменты после связывания за счет переменных
Для сохранения внесенных изменений необходимо нажать на кнопку , расположенную справа на панели инструментов.

Удаление выбранной переменной или инструмента

Для удаления переменной или инструмента необходимо выбрать их одним нажатием левой кнопки мыши. После этого на панели инструментов появится кнопка . На нее необходимо нажать, чтобы удалить переменную или инструмент.
Также удалить выбранный объект можно путем нажатия комбинации клавиш «ALT» и «DEL» на клавиатуре.
Для сохранения внесенных изменений нажать на кнопку , расположенную справа на панели инструментов.

Добавление скрипта

Для добавления скрипта, который затем можно будет настроить с помощью визуального конструктора, необходимо нажать на кнопку Добавить скрипт, расположенную в правой части раздела Проект .
Рисунок 133 - Кнопка добавления скрипта для дальнейшей настройки с помощью конструктора
После нажатия на кнопку откроется окно для ввода свойств скрипта (см. Рисунок 134 ).
Рисунок 134 - Ввод свойств скрипта
Состав свойств, доступных при редактировании существующего скрипта (см. п. 10.5.4 ) и при добавлении нового скрипта, не отличается.
Поля, обязательные для заполнения, отмечены символом . Для сохранения изменений необходимо нажать на кнопку ОК . Для отмены изменений необходимо нажать на кнопку Отмена или закрыть окно.
Настройка скрипта осуществляется в специальном графическом редакторе - Редакторе скриптов .

Редактор скриптов. Общие сведения

После заполнения свойств скрипта (см. Рисунок 134 ) по нажатии кнопки ОК откроется окно Редактора скриптов .
В заголовке окна Редактора скриптов отображается имя скрипта (см. Рисунок 135 ).
Текст скрипта вводится непосредственно в окне. Строки автоматически нумеруются. В начале скрипта также автоматически добавляются строки подключения модулей с классами eLiteGIS и стандартными инструментами геообработки.
Для того, чтобы при редактировании Python-скрипта подсвечивались операторы, методы и свойства, появлялись контекстные подсказки методов и свойств, доступных для использования, включите опцию Включить интеграцию и укажите URL до LSP-сервера (Language Server Protocol) в Глобальных настройках CoGIS Server во вкладке Сервисы геообработки (см. подробнее Руководство администратора по установке и настройке > Глобальные настройки CoGIS Server ).
Рисунок 135 - Редактор скриптов
Добавление и настройка параметров, которые можно будет использовать в скрипте, происходит в окне Редактирование параметров инструмента по кнопке в левом верхнем углу окна Редактор скриптов . Обращение к настроенным параметрам в скрипте происходит по имени параметра.
Чтобы сохранить введенный текст скрипта, нажмите в правом верхнем углу окна (см. Рисунок 136 ).
Рисунок 136 - Сохранение введенного текста скрипта
При попытке закрыть Редактор скриптов без сохранения появится предупреждение о потере изменений. Нажмите Сохранить , чтобы сохранить изменения при закрытии окна. Нажмите Не сохранять , чтобы закрыть Редактор скриптов без сохранения изменений (см. Рисунок 137 ).
Рисунок 137 - Предупреждение о потере изменений при закрытии окна Редактор скриптов

Редактирование параметров инструмента

Для добавления параметров инструмента геообработки, описываемого в Python-скрипте, нажмите на кнопку в левом верхнем углу Редактора скриптов .
В открывшемся окне Редактирование параметров инструмента (см. Рисунок 138 ) нажмите , чтобы добавить входной или выходной параметр инструмента.
Рисунок 138 - Окно Редактирование параметров инструмента
Параметр описывается следующими свойствами (см. Рисунок 139 ):
  • Тип - тип параметра:
  • Доступны следующие типы параметра:
    • Строка;
    • Целое число;
    • Вещественное число;
    • Да/Нет;
    • Дата;
    • Файл;
    • Геометрия;
    • Система координат;
    • SQL-выражение;
    • База геоданных;
    • Класс объектов;
    • Слой объектов;
    • Класс пространственных объектов;
    • Слой пространственных объектов;
    • Карта;
    • Сервис изображений карты;
  • Имя - имя параметра на английском языке;
  • По имени параметра происходит обращение к параметру в скрипте.
  • Является обязательным - включите эту опцию, чтобы инструмент геообработки был доступен для запуска только в случае, когда все обязательные параметры заданы;
  • Данная опция доступна только для входных параметров.
  • Описание - краткое описание параметра;
  • Является массивом - включите эту опцию, если параметр является совокупностью параметров выбранного выше типа;
  • Значение - фиксированное значение параметра.
Опция доступна только для входных параметров.
Для параметров типов Строка , Целое число , Вещественное число , Дата , SQL-выражение введите значение параметра в текстовое поле.
Для параметра типа Да/Нет задайте значение положением переключателя.
Для параметров типов Геометрия , Класс объектов , Слой объектов , Класс пространственных объектов , Слой пространственных объектов укажите картографический сервис и слой.
Для параметра типа Карта выберите картографический сервис из выпадающего списка.
Для параметра типа Сервис изображений карты выберите сервис изображений из выпадающего списка.
Для параметра типа Система координат выберите необходимую систему координат в окне Выбор системы координат , нажав на кнопку Добавить систему координат .
Для параметра типа База геоданных выберите необходимую базу из выпадающего списка подключений (список подключений формируется во вкладке Базы данных Глобальных настроек CoGIS Server , см. подробно Руководство администратора по установке и настройке ).
Если входной параметр является массивом, задайте необходимое количество значений параметра, нажимая на кнопку   Добавить значение .
Рисунок 139 - Настроенные параметры инструмента геообработки для использования в Python-скрипте
После добавления и завершения настройки параметров в окне Редактирование параметров инструмента нажмите ОК. Теперь можно использовать эти параметры, обращаясь к ним в тексте скрипта. Чтобы отменить настройки, нажмите Отмена .
Чтобы отредактировать настроенные и сохраненные параметры, нажмите в левом верхнем углу окна Редактор скриптов еще раз. Переходите между настройками разных параметров, нажимая на их имя в списке.
Чтобы удалить неиспользуемый параметр, нажмите .

Пример Python-скрипта. Создание и пересечение объектов, вывод результатов в файл

В приложенном ниже тексте скрипта на языке Python решена следующая задача:
  • создание точечного класса объектов:
    • создание класса объектов;
    • заполнение созданного класса объектов случайными точками;
    • добавление и заполнение атрибутивной информации;
  • создание полигонального класса объектов:
    • создание класса объектов;
    • заполнение созданного класса объектов случайными полигонами;
    • добавление и заполнение атрибутивной информации;
  • построение буферных зон вокруг точечных объектов;
  • пересечение построенных буферных зон с созданным полигональным классом объектов;
  • запись результата пересечения в новый полигональный класс объектов;
  • вывод исходных точечного и полигонального классов объектов и полученного нового полигонального класса объектов в файл GeoPackage (GPKG).
В тексте скрипта output_file - параметр, настроенный в окне Редактирование параметров инструмента .
from ElgClassesCollection import *
from GpToolsCollection import *
from cogispy import *
from datetime import datetime, timedelta
from functools import reduce
import random
import math
# создание базы данных в рабочей (временной) папке инструмента
wks_path = GetFilePathInWorkingDirectory("output.gpkg")
wks = GPKGWorkspace.Open(wks_path)
# задание координатной системы и экстента данных
sr: SpatialReference = SpatialReference.FromWkid(3857)
extent: Envelope = Envelope(-200, -200, 200, 200, sr)
# создание точечного класса объектов
fields = [
Field("oid", FieldType.OID),
Field("geom", FieldType.Geometry),
Field("int_value", FieldType.Integer),
Field("float_value", FieldType.Double),
Field("text", FieldType.String),
Field("created", FieldType.Date)
]
fc: FeatureClass = wks.CreateFeatureClass("points", fields, GeometryType.Point, extent)
# генерация случайных координат точек, которые лежат на регулярной сетке
x_coords = list(range(-100, 101, 20))
y_coords = list(range(-100, 101, 20))
points = map(lambda x, y: Point(x, y), random.sample(x_coords, 10), random.sample(y_coords, 10))
geoms = [Geometry.FromPoint(point, sr) for point in points]
# генерация значений атрибутивных полей
int_values = list(random.sample(range(10, 20), 10))
float_values = [x * 2.0 for x in int_values]
texts = ["text value"] * 10
start_date = datetime(2025, 6, 1)
dates = [start_date + timedelta(days=x) for x in range(0, 10)]
# получение имен полей для вставки значений (без oid)
names = [f.Name for f in fields[1:]]
# сбор атрибутов объектов
rows = zip(geoms, int_values, float_values, texts, dates)
# заполнение точечного класса объектов
for row in rows:
values = dict(zip(names, row))
fc.Insert(values, None)
# создание полигонального класса объектов
polygons_fc: FeatureClass = wks.CreateFeatureClass("polygons", fields[:2], GeometryType.Polygon, extent)
# проверка, что полигон не пересекется с другими полигонами из списка
def check_intersect(polygon: Geometry, polygons: list[Geometry]) -> bool:
for poly in polygons:
if TopologicalOperator.Intersects(polygon, poly):
return True
return False
# генерация непересекающихся полигонов, центры которых лежат внутри экстента
def create_polygons(num_polygons: int, envelope: Envelope) -> list[Geometry]:
existing_polygons = []
for i in range(num_polygons):
while True:
center_x = random.uniform(envelope.XMin, envelope.XMax)
center_y = random.uniform(envelope.YMin, envelope.YMax)
polygon_points = []
x_s = [1, -1, -1, 1]
y_s = [-1, -1, 1, 1]
for j in range(4):
distance = random.uniform(20, 40)
vertex_x = center_x + distance * x_s[j]
vertex_y = center_y + distance * y_s[j]
polygon_points.append(Point(vertex_x, vertex_y))
polygon_points.append(polygon_points[0])
new_polygon = Geometry(GeometryType.Polygon, polygon_points)
if not check_intersect(new_polygon, existing_polygons):
existing_polygons.append(new_polygon)
break
return existing_polygons
# определение экстентов, в которых будут созданы полигоны
envelops = [Envelope(-100, -100, 0, 0, sr), Envelope(0, -100, 100, 0, sr), Envelope(-100, 0, 0, 100, sr), Envelope(0, 0, 100, 100, sr)]
# создание полигонов (по 2 в каждом экстенте)
polygons_by_env = [create_polygons(2, env) for env in envelops]
polygons = reduce(lambda x, y: x + y, polygons_by_env, [])
# заполнение полигонального класса объектов
for polygon in polygons:
polygons_fc.Insert({ "geom": polygon }, None)
# выбор точки для построения буфера
qf = QueryFilter()
qf.WhereClause = "'date' > '06.06.2025'"
qf.Fields = ["geom", "int_value"]
# создание буфера вокруг точек, получение размера из поля "int_value"
buffers = []
for feature in fc.Search(qf):
pt = feature["geom"]
size = feature["int_value"]
buffers.append(TopologicalOperator.Buffer(pt, size))
# выбор полигона
qf = QueryFilter()
qf.Offset = 3
qf.Limit = 5
qf.Fields = ["geom"]
polygon_features = polygons_fc.Search(qf)
# создание полигонального класса объектов для результатов пересечения
result_fc: FeatureClass = wks.CreateFeatureClass("result", fields[:2], GeometryType.Polygon, extent)
# итеративный обход по выбранным полигонам
for polygon_feature in polygon_features:
polygon = polygon_feature.Geometry
for buffer in buffers:
# проверяем пересечение буфера и полигона
if TopologicalOperator.Intersects(buffer, polygon):
# пересекаем буфер и полигон
polygon = TopologicalOperator.Intersect(buffer, polygon)
result_fc.Insert({ "geom": polygon }, None)
# задание выходных данных
output_file = CreateLocalFile(wks_path)

Просмотр списка активных задач

Чтобы открыть список активных задач, нажмите на в столбце Активные задачи таблицы Список моделей (см. Рисунок 140 ).
Рисунок 140 - Кнопка для просмотра списка активных задач
Список активных задач представляет собой таблицу со сведениями о каждом запущенном процессе выбранной задачи (см. Рисунок 141 ):
  • Пользователь - полное имя пользователя, который запустил задачу;
  • Статус - Запущена , Ожидает - текущий статус задачи;
  • Время запуска - дата и время запуска задачи;
  • Время работы - длительность выполнения задачи;
  • Входные параметры - заданные входные параметры текущей задачи геообработки.
Рисунок 141 - Список активных задач выбранной модели
Задачи в таблице можно отсортировать по столбцам: Пользователь , Статус , Время запуска , Время работы . По умолчанию задачи отсортированы по времени запуска.
Для каждой активной задачи из списка можно перейти на ее страницу REST API по кнопке в последнем столбце списка активных задач. На странице REST API задачи отображается информация (см. Рисунок 142 ):
  • Название;
  • Идентификатор;
  • Статус;
  • Доступные действия;
  • Результат.
Рисунок 142 - Страница REST API активной задачи
Одну или несколько выбранных активных задач из списка можно остановить. Для этого выберите необходимые задачи в списке, установив в первом столбце таблицы , и нажмите на кнопку Остановить выбранное внизу таблицы (см. Рисунок 143 ).
Рисунок 143 - Возможность остановить выбранные активные задачи