PieSizeParam

class axioma.render.PieSizeParam

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

mapScale

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

type:float
sumValue

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

type:float
diameter

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

type:UnitValue

PieThematicStyleProvider

class axioma.render.PieThematicStyleProvider

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

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

PieThematicStyleProvider(layer)

Конструктор

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

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

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

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

Параметры:angle (float) – Значение угла.
startAngle()

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

Результат:Значение угла
Тип результата:float
setSizeParam(v)

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

Параметры:v (PieSizeParam) – Новое значение.
sizeParam()

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

Параметры:v (PieSizeParam) – Новое значение.
Результат:Установленные параметры масштабирования
Тип результата:PieSizeParam
pixelDiameter(mapViewport, dpi)

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

Параметры:
  • mapViewport (MapViewport) – Значение MapViewport.
  • dpi (int) – dpi устройства.
Результат:

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

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

float

calculateMaxSum(table)

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

Параметры:table (Table) – Анализируемая таблица
Результат:Рассчитанное значение
Тип результата:float
isClockwise()

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

Результат:True, если по часовой стрелке, False если против
Тип результата:bool
setIsClockwise(value)

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

param value:Если задано True, то сегменты будут отрисовываться в порядке по часовой стрелке. False - против
type value:bool
thematicColorExpressionParams()

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

Результат:Список
Тип результата:list [ThematicColorExpressionParam]
setThematicStyleParam(ind, param)

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

Параметры:
thematicStyleParam(index)

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

Параметры:index (int) – Индекс
Результат:Полученный по индексу параметр
Тип результата:ThematicColorExpressionParam
isGraduired()

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

Результат:True, если размеры всех диаграмм тематического слоя имеют одинаковый размер. False, если размер масштабируется по выражению
Тип результата:bool
setIsGraduired(value)

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

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

PieThematicLayer

class axioma.render.PieThematicLayer

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

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

PieThematicLayer(parent)

Конструктор

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

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

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

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

Результат:Копия провайдера стиля, установленного для слоя на данный момент
Тип результата:PieThematicStyleProvider
setStyleProvider(provider)

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

Параметры:provider (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)