PieSizeParam ================= .. currentmodule:: axioma.render .. class:: PieSizeParam Параметры масштабирования диаграммы. Содержит соответствие между масштабом карты, суммой значений по заданному выражению и диаметром диаграммы .. py:attribute:: mapScale Значение масштаба карты :type: :class:`float` .. py:attribute:: sumValue Сумма значений, соответствующая масштабу карты и диаметру диаграммы :type: :class:`float` .. py:attribute:: diameter Диаметр диаграммы :type: :class:`~axioma.render.UnitValue` PieThematicStyleProvider ========================= .. currentmodule:: axioma.render .. class:: PieThematicStyleProvider Класс провайдера стилей для тематического слоя :class:`PieThematicLayer` в виде круговой диаграммы. Унаследован от: :class:`ThematicStyleProvider`, :class:`AllocationThematic` .. py:method:: PieThematicStyleProvider(layer) Конструктор :param layer: Ссылка на тематический слой, к которому привязан данный провайдер стилей. :type layer: :class:`~axioma.render.ThematicLayer` .. py:method:: setExpressions(list) Задание списка выражений и соответствующих им стилей для каждого результирующего сегмента :param list: Список, содержащий параметры. :type list: :class:`list` [:class:`ThematicColorExpressionParam`] .. py:method:: setStartAngle(angle) Задание начального угла, от которого строится первый сегмент круговой диаграммы :param angle: Значение угла. :type angle: :class:`float` .. py:method:: startAngle() Начальный угол, от которого строится первый сегмент круговой диаграммы :return: Значение угла :rtype: :class:`float` .. py:method:: setSizeParam(v) Задание параметров масштабирования :param v: Новое значение. :type v: :class:`PieSizeParam` .. py:method:: sizeParam() Текущие параметры масштабирования :param v: Новое значение. :type v: :class:`PieSizeParam` :return: Установленные параметры масштабирования :rtype: :class:`PieSizeParam` .. py:method:: pixelDiameter(mapViewport, dpi) Расчет максимального диметра в пикселях, исходя из переданного MapViewport и требуемого dpi устройства :param mapViewport: Значение MapViewport. :type mapViewport: :class:`MapViewport` :param dpi: dpi устройства. :type dpi: :class:`int` :return: Рассчитанное значение :rtype: :class:`float` .. py:method:: calculateMaxSum(table) Расчет максимального значения суммы результатов по заданным выражениям по всем записям таблицы :param table: Анализируемая таблица :type table: :class:`~axioma.core.dp.Table` :return: Рассчитанное значение :rtype: :class:`float` .. py:method:: isClockwise() Порядок отрисовки сегментов диаграммы :return: True, если по часовой стрелке, False если против :rtype: :class:`bool` .. py:method:: setIsClockwise(value) Установка порядка отрисовки сегментов диаграммы :param value: Если задано True, то сегменты будут отрисовываться в порядке по часовой стрелке. False - против :type value: :class:`bool` .. py:method:: thematicColorExpressionParams() Список параметров по анализируемым сегментам :return: Список :rtype: :class:`list` [:class:`ThematicColorExpressionParam`] .. py:method:: setThematicStyleParam(ind, param) Задание нового значения ( замена существующего ) параметра по его индексу :param ind: Индекс параметра :type ind: :class:`int` :param param: Параметр :type param: :class:`~axioma.render.ThematicColorExpressionParam` .. py:method:: thematicStyleParam(index) Запрос параметров сегмента по его индексу :param index: Индекс :type index: :class:`int` :return: Полученный по индексу параметр :rtype: :class:`~axioma.render.ThematicColorExpressionParam` .. py:method:: isGraduired() Является ли диаграмма масштабируемой в зависимости от полученного значения выражения :return: True, если размеры всех диаграмм тематического слоя имеют одинаковый размер. False, если размер масштабируется по выражению :rtype: :class:`bool` .. py:method:: setIsGraduired(value) Установить признак необходимости масштабирования диаграммы :param value: True, если производить масштабирование не требуется. False в противном случае :type value: :class:`bool` PieThematicLayer ================= .. currentmodule:: axioma.render .. class:: PieThematicLayer Тематический слой в виде круговой диаграммы Унаследован от: :class:`~axioma.render.ThematicLayer` .. py:method:: PieThematicLayer(parent) Конструктор :param parent: Ссылка на слой, на базе которого создается данный тематический слой. :type parent: :class:`FeatureLayer` .. py:method:: PieThematicLayer(other) Копирующий конструктор :param other: Исходный слой, на базе которого создается новый слой. :type other: :class:`PieThematicLayer` .. py:method:: styleProvider() Возвращает текущий провайдер стилей для слоя. :return: Копия провайдера стиля, установленного для слоя на данный момент :rtype: :class:`~axioma.render.PieThematicStyleProvider` .. py:method:: setStyleProvider(provider) Устанавливает новый провайдер стилей для слоя. :param provider: Новый провайдер стилей. :type provider: :class:`PieThematicStyleProvider` Пример использования: .. 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 # Создание пар стиль - выражение def makeStylePair(layer, color, attr): style = polygonStyleForColor(color) expr = makeExpressionForWorld(layer, attr) return ThematicColorExpressionParam(style, expr) # Создание списка выражений по цветам def makeExpressionListForWorld(layer): list = [] list.append(makeStylePair(layer, Qt.red, QObject().tr("Население"))) list.append(makeStylePair(layer, Qt.blue, QObject().tr("Pop_Male"))) list.append(makeStylePair(layer, Qt.green, QObject().tr("Pop_Fem"))) return list # Круговая диаграмма. layer - базовый слой, на основе которого строится тематика def addPieThematic(layer): pieLayer = PieThematicLayer(layer) pieStyleProvider = PieThematicStyleProvider(pieLayer) pieStyleProvider.setStartAngle(30) pieStyleProvider.setExpressions(makeExpressionListForWorld(layer)) # Установим выражения if len(pieStyleProvider.thematicColorExpressionParams()) > 1: sizeParam = pieStyleProvider.sizeParam() sizeParam.sumValue = pieStyleProvider.calculateMaxSum(layer.table()) # максимальное значение sizeParam.mapScale = 160000000 # для масштаба sizeParam.diameter = UnitValue(Unit.cm(), 1.0) # размер в сантиметрах pieStyleProvider.setSizeParam(sizeParam) pieLayer.setStyleProvider(pieStyleProvider) # Установка провайдера стиля addLayer(layer, pieLayer)