MapReportItem ================= .. currentmodule:: axioma.render .. class:: MapReportItem Элемент отчета, основанный на созданной ранее карте. Т.е. перед созданием элемента отчета необходимо предварительно создать карту, на основе которой будет создан элемент отчета. Унаследован от: :class:`ReportItem` .. py:method:: MapReportItem(map, viewPort, report) Конструктор :param map: Элемент типа карта, на основании которой создается элемент отчета. :type map: :class:`~axioma.render.Map` :param viewPort: Задание MapViewport области видимости карты и ее размер в отчете. :type viewPort: :class:`MapViewport` :param report: Отчет, к которому относится создаваемый элемент. :type report: :class:`~axioma.render.Report` .. py:method:: scale() Текущее значение масштаба карты :return: Значение масштаба :rtype: :class:`float` .. py:method:: name(scale) Установка нового значения масштаба карты :param scale: Масштаб :type scale: :class:`float` .. py:method:: map() Элемент типа карта, на основании которой создается элемент отчета. :return: Карта :rtype: :class:`~axioma.render.Map` .. py:method:: rectMap() Ограничивающий прямоугольник карты :return: Прямоугольник :rtype: :class:`~PyQt5.QtCore.QRectF` .. py:method:: setCenter(pnt) Установка нового центра карты в координатах карты :param pnt: Новое значение центра :type pnt: :class:`~PyQt5.QtCore.QPointF` .. py:method:: coordSystem() Текущая координатная система карты :return: Координатная система :rtype: :class:`~axioma.cs.CoordSystem` .. py:method:: viewport() Установленное соотношение области карты и его размеров в отчете :return: Установленное значение MapViewport :rtype: :class:`MapViewport` .. py:method:: setViewport(vp) Установка нового значения MapViewport для элемента отчета :param vp: Новое значение :type vp: :class:`MapViewport` .. method:: viewportChanged(vp) [signal] Сигнал, возникающий при смене области видимости :param vp: Значение MapViewport :type vp: :class:`MapViewport` Пример использования: .. code-block:: python # Создание элемента отчета типа карта. Берем первую из открытых # Так же возможно создать элемент отчета не на базе 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)