GIS-LAB

Географические информационные системы и дистанционное зондирование

Обзор Annotation tools

voltron, 11.04.2010

Недавно в QGIS появилось новое расширение Annotation tools, разработаное Marco Hugentobler при финансовой поддержке кантона Золотурн, Швейцария (Canton of Solothurn, Switzerland). Цель этой заметки — описать возможности этого инструмента.

1. Text annonation

?нструмент Text annotation позволяет размещать форматированный текст в выноске поверх карты.

Двойной клик по выноске откроет диалог настроек этого элемента. В окне есть редактор текста, настройки форматирования, внешнего вида и положения элемента. Например, можно выбрать способ отображения выноски: в координатах карты (положение отображается маркером) или в относительных экранных координатах, когда выноска не привязана к карте. Существующие блоки можно перемещать захватив тело (при этом маркер остается на месте) либо перемещать сам маркер, что равнозначно изменению положения объекта на карте.

2. Form annotation

Аннотации с формой работают по тому же принципу, что и формы для инструмента ?дентификации, разработанные Jürgen Fischer. Для примера возьмем слой oopt из геосэмпла и сделаем форму для отображения атрибутов NAME_PRT_R и TYPE.

Откроем Qt Designer и созданим новый виджет, на котором разместим две подписи Label с поясняющими надписями и две строки ввода Line Edit для отображения атрибутов. ВАЖНО: имена полей ввода формы должны совпадать с именами полей таблицы атрибутов.

Теперь загрузим в QGIS слой oopt и укажем созданную ранее форму в качестве формы редактирования («Слой – Свойства-Общие-Форма редактирования»). Если глобальная форма для всего слоя не нужна, можно указывать форму для каждого элемента аннотации отдельно через диалог свойств аннотации.

Формы можно перемещать точно так же как и текстовые аннотации. Оба типа аннотаций отображаются в Компоновщике и соответственно могут выводиться на печать.

3. Python-биндинги

Элементы аннотаций можно расставлять из Консоли Python и из расширений. Вот два примера:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.gui import *
# создание текстового элемента аннотации
textItem = QgsTextAnnotationItem( qgis.utils.iface.mapCanvas() )
# задаем положение маркера в координатах карты
textItem.setMapPosition(QgsPoint(739433, 224091))
# размер рамки
textItem.setFrameSize(QSizeF(200,100))
# текст
textItem.setDocument(QTextDocument("This is my text item")))
textItem.update()
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.gui import *
 
# аннотация в виде формы для активного слоя
formItem = QgsFormAnnotationItem( qgis.utils.iface.mapCanvas(), qgis.utils.iface.activeLayer() )
# положение маркера в координатах карты
formItem.setMapPosition(QgsPoint(696718, 241215))
# файл формы
formItem.setDesignerForm("/path/to/my/designerfile.ui");
formItem.update()

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

Комментарии (5) к статье “Обзор Annotation tools”

  1. Дмитрий says:

    Может быть, подобного рода заметки оформлять в виде статей, а здесь выкладывать на них ссылки? А то новости быстро “проваливаются вниз” и найти потом нужную заметку становится сложнее. Особенно, если все, что помнишь о ней, это “Где-то про такую штуковину писали…, но где?..”

    • sim says:

      Да…на самом деле сначала это и была статья, просто показалось, что в ней маловато содержания для даже небольшой статьи. Ой и картинки не показываются!

  2. Mavka says:

    Восхитительно, отличный функционал

Оставьте комментарий


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter