SymbolLimits
=================

.. currentmodule:: axioma.render

.. class:: SymbolLimits

	Лимиты значений (интервал) для рассматриваемого символа

		.. py:attribute:: minimum

			Минимальное значение

			:type: :class:`~PyQt5.QtCore.QVariant`

		.. py:attribute:: maximum

			Максимальное значение

			:type: :class:`~PyQt5.QtCore.QVariant` 


SymbolThematicStyleProvider
===========================

.. currentmodule:: axioma.render

.. class:: SymbolThematicStyleProvider

	Класс провайдера стилей для тематического слоя :class:`SymbolThematicLayer` в виде круговой диаграммы.

	Унаследован от:  :class:`ThematicStyleProvider`, :class:`AllocationThematic`

		.. py:method:: SymbolThematicStyleProvider(layer, hmin=6, hmax=20)

			Конструктор

			:param layer: Ссылка на тематический слой, к которому привязан данный провайдер стилей.
			:type layer: :class:`~axioma.render.ThematicLayer`
			:param hmin: Минимальная высота символа. По умолчанию равно 6
			:type hmin: :class:`int`
			:param hmax: Максимальная высота символа. По умолчанию равно 20
			:type hmax: :class:`int`

		.. py:method:: defaultStyle()

			Стиль символа для отображения тематики

			:return: Стиль
			:rtype: PointStyle

		.. py:method:: setDefaultStyle(style)

			Установка стиля оформления для тематики

			:param style: Стиль
			:type style: :class:`PointStyle`

		.. py:method:: minHeight()

			Минимальная высота символа

			:return: Значение
			:rtype: :class:`int`

		.. py:method:: setMaxHeight(value)

			Задание минимальной высоты символа

			:param value: Новое значение
			:type value: :class:`float`

		.. py:method:: maxHeight()

			Максимальная высота символа

			:return: Значение
			:rtype: :class:`int`

		.. py:method:: setMaxHeight(value)

			Задание максимальной высоты символа

			:param value: Новое значение
			:type value: :class:`float`

		.. py:method:: evaluator()

			Заданное выражение для вычисления значения по данным таблицы

			:return: Выражение
			:rtype: :class:`~axioma.core.sql.FeatureExpressionEvaluator`

		.. py:method:: setEvaluator(expression)

			Задание выражение для вычисления значения по данным таблицы

			:param expression: Задание выражения, по которому будут вычисляться значения при анализе таблицы.
			:type expression: :class:`~axioma.core.sql.FeatureExpressionEvaluator`

		.. py:method:: calculateLimitsValues(table)

			Чтение значений из таблицы и расчет интервала значений по выражению. Результат выполнения используется для задания интервалов посредством метода setLimitsValues

			:param table: Таблица, из которой читаются значения по заданному ранее выражению.
			:type table: :class:`~axioma.core.dp.Table`
			:return: Существующие пределы по выражению по результатам анализа
			:rtype: :class:`SymbolLimits`

		.. py:method:: limitValues()

			Установленные пределы значений по данным.

			:return: Значения
			:rtype: :class:`SymbolLimits`

		.. py:method:: setLimitsValues(values)

			Установка пределов значений. Для расчета можно воспользоваться методом calculateLimitsValues

			:param values: Новые ограничения
			:type values: :class:`SymbolLimits`

	
SymbolThematicLayer
====================

.. currentmodule:: axioma.render

.. class:: SymbolThematicLayer

	Тематический слой с распределением по интервалам и с градуировкой символа по размеру

	Унаследован от: :class:`~axioma.render.ThematicLayer`

		.. py:method:: SymbolThematicLayer(parent)

			Конструктор

			:param parent: Ссылка на слой, на базе которого создается данный тематический слой.
			:type parent: :class:`FeatureLayer`

		.. py:method:: SymbolThematicLayer(other)

			Копирующий конструктор

			:param other: Исходный слой, на базе которого создается новый слой.
			:type other: :class:`SymbolThematicLayer`

		.. py:method:: styleProvider()

			Возвращает текущий провайдер стилей для слоя.

			:return: Копия провайдера стиля, установленного для слоя на данный момент
			:rtype: :class:`~axioma.render.SymbolThematicStyleProvider`

		.. py:method:: setStyleProvider(provider)

			Устанавливает новый провайдер стилей для слоя.

			:param provider: Новый провайдер стилей.
			:type provider: :class:`SymbolThematicStyleProvider`

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

  .. code-block:: python
  
      # Импорт
      from axioma.render import *
      from axioma.core.sql import *
      from axioma.mapinfo import *

      # Создание переменной для обеспечения возможности вычисления выражений
      runtime = SqlRuntime()
      
      # Добавление слоя в конец списка
      def addLayer(layer, thematic):
          layer.appendLayer(thematic);

      # Создание выражения по полю
      def makeExpressionForWorld(layer, attr):
          evaluator = FeatureExpressionEvaluator(runtime, layer.tableSchema())
          if not evaluator.setExpression(axioma.app.mainWindow.tr(attr)):
              print(evaluator.errorString())
          return evaluator

      # Символы. layer - базовый слой, на основе которого строится тематика
      def addSymbolThematic(layer):
          symbolLayer = SymbolThematicLayer(layer) # Создание самого слоя
          symbolStyleProvider =  SymbolThematicStyleProvider(symbolLayer) # Стиль оформления
          evaluator = makeExpressionForWorld(layer, QObject().tr("Население"))
          if not evaluator.hasError():
              symbolStyleProvider.setEvaluator(evaluator);
              limitsValues = symbolStyleProvider.calculateLimitsValues( layer.table()) # Расчет предельных значений
              symbolStyleProvider.setLimitsValues(limitsValues)
              fs = FontSymbolStyle()
              fs.setColor(Qt.red)
              symbolStyleProvider.setDefaultStyle(fs) # Стиль точечного объекта
              symbolStyleProvider.setMaxHeight(24) # Максимальная высота символа
              symbolLayer.setStyleProvider(symbolStyleProvider)  # Установка провайдера стиля
              addLayer(layer, symbolLayer)
	
