MapReportItem

class axioma.render.MapReportItem

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

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

MapReportItem(map, viewPort, report)

Конструктор

Параметры
  • map (Map) – Элемент типа карта, на основании которой создается элемент отчета.

  • viewPort (MapViewport) – Задание MapViewport области видимости карты и ее размер в отчете.

  • report (Report) – Отчет, к которому относится создаваемый элемент.

coordSystem()

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

Результат

Координатная система

Тип результата

CoordSystem

map()

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

Результат

Карта

Тип результата

Map

rectMap()

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

Результат

Прямоугольник

Тип результата

QRectF

scale()

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

Результат

Значение масштаба

Тип результата

float

setCenter(pnt)

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

Параметры

pnt (QPointF) – Новое значение центра

setScale(scale)

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

Параметры

scale (float) – Масштаб

setViewport(vp)

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

Параметры

vp (MapViewport) – Новое значение

viewport()

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

Результат

Установленное значение MapViewport

Тип результата

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) # Показ центроидов
                # Сделаем так, чтобы метки не перекрывали друг друга
                policy = props.labelPlacementPolicy()
                policy.labelingType = LabelPlacementPolicy.DisallowOverlap
                props.setLabelPlacementPolicy(policy)
                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)