Недавно в 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() |
Ознакомиться с оригинальным описанием от автора расширения можно здесь.
Может быть, подобного рода заметки оформлять в виде статей, а здесь выкладывать на них ссылки? А то новости быстро “проваливаются вниз” и найти потом нужную заметку становится сложнее. Особенно, если все, что помнишь о ней, это “Где-то про такую штуковину писали…, но где?..”
Да…на самом деле сначала это и была статья, просто показалось, что в ней маловато содержания для даже небольшой статьи. Ой и картинки не показываются!
Картинки показываются. Только как-то странно, на одном компе все есть, а двух других – только две.
это я только что поправил 🙂
Восхитительно, отличный функционал