Создание надстройки Python в виде инструмента

Создание надстройки в виде инструмента

Инструмент очень похож на кнопку. Тем не менее, инструмент предполагает взаимодействие пользователя с интерфейсом приложения, после которого, основываясь на этом взаимодействии, выполняется бизнес-логика. Инструмент увеличения Увеличить в ArcMap может послужить хорошим примером. Он предполагает, что пользователь нажмет на карту или нарисует на ней прямоугольник, прежде, чем интерфейс обновится и покажет выбранный фрагмент карты в увеличенном виде.

Этот раздел поможет вам создать новый инструмент на панели инструментов, используя мастер надстроек Python. Прежде, чем начать этот процесс, убедитесь, что вы создали проект надстройки ArcMap и указали параметры проекта. Более подробная информация доступна в разделе Создание проекта надстройки. Хотя здесь демонстрируется процесс создания инструмента для ArcMap, таким же образом вы можете добавить инструмент в любое другое приложение ArcGIS for Desktop. В этом разделе будет рассмотрен процесс создания простого инструмента для построения сетки. После этого класс Python, созданный мастером надстроек, будет рассмотрен более подробно, с целью исследовать свойства и методы, которые обеспечивают функциональность вашего инструмента.

Создание надстройки в виде инструмента состоит из следующих этапов:

Шаги:
  1. Создание панели инструментов

    Нажмите на закладку Содержимое надстройки (Add-In Contents) и начните объявление функциональности вашей надстройки. Инструмент может находиться на панели инструментов, но не внутри меню. Более подробная информация о создании собственной панели инструментов доступна в разделе Создание надстройки в виде панели инструментов.

  2. Создание инструмента.

    Нажмите правой кнопкой мыши на новой панели инструментов и выберите пункт Новый инструмент (New Tool).

    Создание надстройки в виде инструмента

    Инструмент обладает параметрами, которые вы должны настроить. Ниже представлен список всех параметров с описанием каждого из них. Эти свойства сохраняются в файле config.xml вашего проекта.

    Свойство

    Описание

    Название (обязательный)

    Определяет название инструмента. Следующая иллюстрация показывает, как название используется в менеджере надстроек ArcGIS для определения доступных видов изменения функционала (тип надстройки обозначен в скобках):

    Свойства инструмента сетки в менеджере надстроек

    Следующая иллюстрация показывает, как название используется в качестве текстовой метки, которая позволяет найти инструмент на панели инструментов.

    Создание инструмента в виде надстройки для построения сетки в ArcMap

    Класс (обязательный)

    Класс Python, представляющий ваш инструмент. Вся бизнес-логика вашего инструмента находится в классе Python. Класс особенно важен, поскольку он выполняется каждый раз, когда происходит нажатие на инструмент в приложении. При создании класса используйте соглашения о наименовании, принятые в Python. Классы Python используют нотацию CapWords, при которой каждое слово пишется с большой буквы. В этом примере создается класс под названием CreateFishnet.

    ID (обязательный)

    Уникальное имя, используемое для идентификации вашего инструмента. Вы можете создать более одного инструмента для каждого проекта, и этот идентификатор позволит вам отличать инструменты друг от друга. В идеальном случае вы должны заменить идентификатор по умолчанию на более осмысленное значение. Идентификатор не должен содержать пробелов. Вы можете использовать символ нижнего подчеркивания для того, чтобы соединять слова. Нельзя использовать ключевые слова Python. Список зарезервированных слов доступен в документации Python.

    Всплывающая подсказка (опциональный)

    Краткое описание, которое появляется, когда курсор мыши оказывается над инструментом в приложении.

    Сообщение (опциональный)

    Более подробное описание инструмента, которое сообщает, что делает этот инструмент. Аналогично параметру ToolTip, это сообщение появляется одновременно с ToolTip, когда курсор находится над инструментом.

    Изображение (опциональный)

    Здесь может быть изображение размером 16 х 16 пикселей, обозначающее ваш инструмент. Изображение может быть в одном из следующих форматов: .png, .gif, or .bmp). Изображение будет скопировано в папку Images, созданную в проекте надстройки.

    Последняя секция параметров инструмента — это заголовок и содержание справки. Эти параметры позволяют вам указать информацию, которая появляется, когда пользователь запускает контекстно-зависимую справку. Контекстно-зависимая справка представляет собой всплывающие сообщения, которые остаются на экране, пока пользователь не нажмет на другой объект.

    Секция контекстно-зависимой справки состоит из следующих параметров:

    Свойство

    Описание

    Заголовок (дополнительный)

    Описывает тематику раздела справки

    Содержание (дополнительный)

    Содержание справки об инструменте

    Как только вы установили все параметры, нажмите на кнопку Сохранить (Save) в нижней части мастера. Все необходимые файлы и папки будут созданы в вашей рабочей папке.

  3. Отредактируйте скрипт Python и обновите класс Python, чтобы он включал функциональность для построения сетки полигонов.

    Область интереса определяется нарисованным мышью прямоугольником. Для сетки установлен размер 10 рядов на 10 столбцов. Для добавления функциональности к пользовательскому инструменту выполните следующие шаги:

    1. Отредактируйте скрипт Python, находящийся в папке Install, расположенной в рабочей папке, которую вы создали при помощи мастера.

      В скрипте находится класс с таким же названием, какое вы ввели в мастере. Не изменяйте название этого класса, поскольку это название содержится в файле config.xml. Описание каждой функции и каждого свойства класса доступно в разделе Класс инструмента.

    2. Отредактируйте функции, как показано ниже.

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

      def __init__(self):
          self.enabled = True
          self.cursor = 3
          self.shape = 'Rectangle'
          
      def onRectangle(self, rectangle_geometry):
          """Occurs when the rectangle is drawn and the mouse button is released.
          The rectangle is a extent object."""
      
          extent = rectangle_geometry
          # Create a fishnet with 10 rows and 10 columns.
          if arcpy.Exists(r'in_memory\fishnet'):
              arcpy.Delete_management(r'in_memory\fishnet')
          fishnet = arcpy.CreateFishnet_management(r'in_memory\fishnet',
                                  '%f %f' %(extent.XMin, extent.YMin),
                                  '%f %f' %(extent.XMin, extent.YMax),
                                  0, 0, 10, 10,
                                  '%f %f' %(extent.XMax, extent.YMax),'NO_LABELS',
                                  '%f %f %f %f' %(extent.XMin, extent.YMin, extent.XMax, extent.YMax), 'POLYGON')
          arcpy.RefreshActiveView()
          return fishnet
      
    3. Сохраните скрипт.
  4. Тестирование инструмента

    После того, как вы создали инструмент и добавили код в скрипт, важно создать файл надстройки и протестировать его, прежде чем передавать его конечным пользователям. Для этого выполните шаги, описанные в разделе Тестирование надстройки.

  5. Разместите надстройку и предоставьте к ней общий доступ.

    Более подробные сведения о размещении и предоставлении общего доступа к надстройкам доступны в разделе Общий доступ к надстройкам.

Связанные темы

9/11/2013