MapReportItem

class axioma.render.MapReportItem

Элемент отчета, основанный на созданной ранее карте. Т.е. перед созданием элемента отчета необходимо предварительно создать карту, на основе которой будет создан элемент отчета.

Унаследован от: ReportItem

MapReportItem(map, viewPort, report)

Конструктор

Параметры:
  • map (Map) – Элемент типа карта, на основании которой создается элемент отчета.
  • viewPort (MapViewport) – Задание MapViewport области видимости карты и ее размер в отчете.
  • report (Report) – Отчет, к которому относится создаваемый элемент.
scale()

Текущее значение масштаба карты

Результат:Значение масштаба
Тип результата:float
name(scale)

Установка нового значения масштаба карты

Параметры:scale (float) – Масштаб
map()

Элемент типа карта, на основании которой создается элемент отчета.

Результат:Карта
Тип результата:Map
rectMap()

Ограничивающий прямоугольник карты

Результат:Прямоугольник
Тип результата:QRectF
setCenter(pnt)

Установка нового центра карты в координатах карты

Параметры:pnt (QPointF) – Новое значение центра
coordSystem()

Текущая координатная система карты

Результат:Координатная система
Тип результата:CoordSystem
viewport()

Установленное соотношение области карты и его размеров в отчете

Результат:Установленное значение MapViewport
Тип результата:MapViewport
setViewport(vp)

Установка нового значения MapViewport для элемента отчета

Параметры:vp (MapViewport) – Новое значение
viewportChanged(vp)

[signal] Сигнал, возникающий при смене области видимости

Параметры:vp (MapViewport) – Значение MapViewport

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

# Создание элемента отчета типа карта. Берем первую из открытых
# Так же возможно создать элемент отчета не на базе MapView, создав временную карту (см. renderer.py)
def createMapItem(report):
    print('Карта...')
    if axioma.app.mainWindow.mapViewManager().mapViewCount():
        try:
            mapview =  axioma.app.mainWindow.mapViewManager().currentMapView() # Берем текущую открытую карту в системе
            r_map = mapview.viewport().sceneRect()
            w = 350;
            r_item = QRectF(2, 150, w, w * r_map.height() / r_map.width())
            viewport = MapViewport(r_item, r_map, mapview.viewport().coordSystem())

            #находим слой
            lay = mapview.map().rootLayerGroup().findChildByName("world")
            if lay is not None:
                props = lay.featureLayerProperties() #Свойства слоя
                props.setLabelingAttributeName("Страна")   # устанавливаем выражение для метки
                props.setShowLabels(True) # Показ меток
                props.setCentroidsVisible(True) # Показ центроидов
                lay.setProperties(props)

            mapItem = MapReportItem(mapview.map(), viewport, report)
            report.addItem(mapItem) # Добавляем в отчет
            print('Масштабная линейка...')
# Создание масштабной линейки
            ws = 30
            bar_rect = QRectF(r_item.right() - ws, r_item.bottom(), ws,15)
            scaleBarReportItem = ScaleBarReportItem(mapview.map(), mapItem.viewport(), bar_rect, report)
            report.addItem(scaleBarReportItem) # Добавляем в отчет
        except Exception as ex:
            print(ex)