RasterReportItem
=================

.. currentmodule:: axioma.render

.. class:: RasterReportItem

	Элемент отчета, основанный на созданной растровом слое. Т.е. перед созданием элемента отчета необходимо предварительно создать растровый слой на базе локального файла или же растра, размещенного на Web ресурсе. И уже на основе этого слоя создать элемент отчета.

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

		.. py:method:: RasterReportItem(layer, rect, report, perserveAspectRatio=True)

			Конструктор

			:param layer: Растровый слой, на основании которого создается элемент отчета. 
			:type layer: :class:`RasterLayer`
			:param rect: Прямоугольник элемента отчета в координатах отчета. 
			:type rect: :class:`~PyQt5.QtCore.QRectF`
			:param report: Отчет, к которому относится создаваемый элемент. 
			:type report: :class:`~axioma.render.Report`
			:param perserveAspectRatio: Сохранять исходное соотношение размеров растра.  По умолчанию True
			:type perserveAspectRatio: :class:`bool`

		.. py:method:: RasterReportItem(layer, rect, report, perserveAspectRatio=True)

			Конструктор

			:param layer: Растровый слой, на основании которого создается элемент отчета. 
			:type layer: :class:`RasterLayer`
			:param viewPort: Задание Viewport области видимости растра и его размер в отчете. 
			:type viewPort: :class:`~axioma.render.Viewport`
			:param report: Отчет, к которому относится создаваемый элемент. 
			:type report: :class:`~axioma.render.Report`
			:param perserveAspectRatio: Сохранять исходное соотношение размеров растра.  По умолчанию True
			:type perserveAspectRatio: :class:`bool`

		.. py:method:: rectRaster()

			Прямоугольник исходного растра

			:return: Прямоугольник
			:rtype: :class:`~PyQt5.QtCore.QRect`

		.. py:method:: viewport()

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

			:return: Установленное значение Viewport
			:rtype: :class:`~axioma.render.Viewport`

		.. py:method:: setViewport(vp)

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

			:param vp: Новое значение
			:type vp: :class:`~axioma.render.Viewport`

		.. py:method:: layer()

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

			:return: Ссылка на переданный в конструктор растровый слой
			:rtype: :class:`RasterLayer`

		.. py:method:: preserveAspectRatio()

			Сохранять пропорции исходного растра для элемента отчета

			:return: True, если да. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: setPreserveAspectRatio(preserveAspectRatio)

			Установка режима сохранения пропорций исходного растра. Если установлено True, при задании ограничивающего прямоугольника элемента отчета, его пропорции подгоняются исходя из пропорций базового растра.

			:param preserveAspectRatio: Значение
			:type preserveAspectRatio: :class:`bool`

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

  .. code-block:: python
  
     # Импорт
    from axioma.render import *
    from axioma.mapinfo import *
    from axioma.core.dp import *
  
    # Создание элемента отчета типа растр из URL. Для локального файла использовать FileDefinition вместо WebDefinition
    def createRasterItem(report):
        print('Растр...')
        dp = axioma.app.gui.dataProviderById("GdalDataProvider") # находим необходимый провайдер
        url = "https://upload.wikimedia.org/wikipedia/en/7/72/World_Map_WSF.svg.png" # Исходный растр
        if dp is not None:
            try:
                definition = WebDefinition(QUrl(url))
                rds = dp.openDataSource(definition) # Создаем источник данных
                obj = rds.openDataObject() # Создаем объект типа растр
                if (isinstance(obj, Raster)):
                    lay = RasterLayer(obj) # Создаем растровый слой на базе существующего объекта
                    rraster = QRectF(130, 0, 210, 145)
                    rasterItem = RasterReportItem(lay, rraster, report)
                    report.addItem(rasterItem) # Добавляем в отчет
                else:
                    print('Объект не является растром. Что то пошло не так')
            except Exception as ex:
                print(ex)
  

