# Легенда

Для вывода условных обозначений используется легенда. Легенда – таблица, содержащая образцы условных обозначений и письменных пояснений к ним. В ГИС Аксиома легенды карт представляются в отдельных окнах. Попробуем отрисовать в растре ранее созданные слой и тематику по интервалам. Заметим, что легенду также можно отрисовать на одном растре вместе с картой.

    from PySide2.QtCore import Qt
    from PySide2.QtGui import QImage, QPainter
    from axipy import Legend, Context

    legend_world = Legend(lay_world)
    legend_world.position = (10, 10)

    legend_thematic = Legend(thematic)
    legend_thematic.position = (200, 10)

    image = QImage(500, 200, QImage.Format_ARGB32_Premultiplied)
    image.fill(Qt.white)
    painter_legend = QPainter(image)
    context_legend = Context(painter_legend)

    legend_world.draw(context_legend)
    legend_thematic.draw(context_legend)

Создадим легенду, на этот раз сразу переведя в `PySide2.QtGui.QImage`, и скомпонуем с тематическим слоем, полученным ранее:

    from axipy.render import Legend

    legend_thematic = Legend(thematic)
    legend_thematic.position = (10, 5)
    legend_image = legend_thematic.to_image(200, 170)

Доступ к элементам легенды производится через свойство `axipy.Legend.items`.

    for it in legend_thematic.items:
        print(it.title, it.visible, it.style.to_mapinfo())

    >>> 0-55419 True Pen (1, 2, 0) Brush (45, 255)
    >>> 166640-631500 True Pen (1, 2, 8421504) Brush (2, 8453888)
    >>> 631500-2055997 True Pen (1, 2, 8421504) Brush (2, 4259584)

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

    item = legend.items[0]
    item.title = 'Описание'
    legend.items[0] = item

Если легенду необходимо как-то выделить на общем фоне или она с ним сливается, то можно указать стиль рамки и заливки заднего фона:

    legend.border_style = LineStyle(3, Qt.red)
    legend.fill_style = PolygonStyle(49, Qt.yellow)

## Окно легенды для карты

Для просмотра и редактирования легенды `axipy.Legend` для карты необходимо использовать метод `axipy.ViewManager.create_legendview()`, передав в него как параметр окно ранее созданной карты:

Пример использования.

    map = Map([world])
    mapview = view_manager.create_mapview(map)
    legendView = view_manager.create_legendview(mapview)

При этом будут помещены все доступные для просмотра легенды слоев карты map_view.

Легенды окна можно посмотреть следующим образом:

Пример использования.

    for legend in legendView.legends:
        print(legend.caption)
    '''
    >>> World
    '''