PieSizeParam

class axioma.render.PieSizeParam

Параметры масштабирования диаграммы. Содержит соответствие между масштабом карты, суммой значений по заданному выражению и диаметром диаграммы

mapScale

Значение масштаба карты

type

float

sumValue

Сумма значений, соответствующая масштабу карты и диаметру диаграммы

type

float

diameter

Диаметр диаграммы

type

UnitValue

PieThematicStyleProvider

class axioma.render.PieThematicStyleProvider

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

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

Установка порядка отрисовки сегментов диаграммы

param value

Если задано True, то сегменты будут отрисовываться в порядке по часовой стрелке. False - против

type value

bool

PieThematicStyleProvider(layer)

Конструктор

Параметры

layer (ThematicLayer) – Ссылка на тематический слой, к которому привязан данный провайдер стилей.

calculateMaxSum(table)

Расчет максимального значения суммы результатов по заданным выражениям по всем записям таблицы

Параметры

table (Table) – Анализируемая таблица

Результат

Рассчитанное значение

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

float

isClockwise()

Порядок отрисовки сегментов диаграммы

Результат

True, если по часовой стрелке, False если против

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

bool

isGraduired()

Является ли диаграмма масштабируемой в зависимости от полученного значения выражения

Результат

True, если размеры всех диаграмм тематического слоя имеют одинаковый размер. False, если размер масштабируется по выражению

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

bool

pixelDiameter(mapViewport, dpi)

Расчет максимального диаметра в пикселях, исходя из переданного MapViewport и требуемого dpi устройства

Параметры
  • mapViewport (MapViewport) – Значение MapViewport.

  • dpi (int) – dpi устройства.

Результат

Рассчитанное значение

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

float

setExpressions(list)

Задание списка выражений и соответствующих им стилей для каждого результирующего сегмента

Параметры

list (list [ThematicColorExpressionParam]) – Список, содержащий параметры.

setIsClockwise(value)
setIsGraduired(value)

Установить признак необходимости масштабирования диаграммы

Параметры

value (bool) – True, если производить масштабирование не требуется. False в противном случае

setSizeParam(v)

Задание параметров масштабирования

Параметры

v (PieSizeParam) – Новое значение.

setStartAngle(angle)

Задание начального угла, от которого строится первый сегмент круговой диаграммы

Параметры

angle (float) – Значение угла.

setThematicStyleParam(ind, param)

Задание нового значения ( замена существующего ) параметра по его индексу

Параметры
sizeParam()

Текущие параметры масштабирования

Параметры

v (PieSizeParam) – Новое значение.

Результат

Установленные параметры масштабирования

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

PieSizeParam

startAngle()

Начальный угол, от которого строится первый сегмент круговой диаграммы

Результат

Значение угла

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

float

thematicColorExpressionParams()

Список параметров по анализируемым сегментам

Результат

Список

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

list [ThematicColorExpressionParam]

thematicStyleParam(index)

Запрос параметров сегмента по его индексу

Параметры

index (int) – Индекс

Результат

Полученный по индексу параметр

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

ThematicColorExpressionParam

PieThematicLayer

class axioma.render.PieThematicLayer

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

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

PieThematicLayer(parent)

Конструктор

Параметры

parent (FeatureLayer) – Ссылка на слой, на базе которого создается данный тематический слой.

PieThematicLayer(other)

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

Параметры

other (PieThematicLayer) – Исходный слой, на базе которого создается новый слой.

setStyleProvider(provider)

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

Параметры

provider (PieThematicStyleProvider) – Новый провайдер стилей.

styleProvider()

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

Результат

Копия провайдера стиля, установленного для слоя на данный момент

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

PieThematicStyleProvider

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

# Импорт
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)