ThematicRangeStyleParam ======================== .. currentmodule:: axioma.render .. class:: ThematicRangeStyleParam Параметры для одного интервала у тематического слоя с распределением по интервалам. Унаследован от: :class:`ThematicColoredStyleParam` .. py:method:: ThematicRangeStyleParam(min_value, max_value, style) Конструктор. Инициализирует интервал с заданным стилем. См. :meth:`~axioma.render.ThematicColoredStyleParam.ThematicColoredStyleParam` :param min_value: Минимальное значение для интервала :type min_value: :class:`~PyQt5.QtCore.QVariant` :param max_value: Максимальное значение для интервала :type max_value: :class:`~PyQt5.QtCore.QVariant` :param style: Стиль для интервала :type style: :class:`~axioma.render.Style` .. py:attribute:: minValue Минимальное значение для интервала типа QVariant .. py:attribute:: maxValue Максимальное значение для интервала типа QVariant .. py:attribute:: objects Количество объектов, попадающих в данный интервал. .. py:method:: checkValue(value, bool) Проверка значения на попадание в данный интервал :param value: Проверяемое значение. :type value: :class:`~PyQt5.QtCore.QVariant` :return: True, если проверяемое значение попадает в интервал. :rtype: :class:`bool` RangeThematicStyleProvider ========================== .. currentmodule:: axioma.render .. class:: RangeThematicStyleProvider Класс провайдера стилей для тематического слоя :class:`RangeThematicLayer` с распределением по интервалам. Унаследован от: :class:`ThematicStyleProvider`, :class:`SplittingThematic` .. csv-table:: Тип распределения значений :data:`TypeSplitting`: :header: "Наименование величины", "Значение", "Описание" TS_EUQUAL_INTERVAL, 1, "Равномерный разброс значений" TS_EUQUAL_COUNT, 2, "Равное количество записей" TS_MANUAL, 3, "Ручное задание интервалов" .. py:method:: RangeThematicStyleProvider(layer) Конструктор :param layer: Ссылка на тематический слой, к которому привязан данный провайдер стилей. :type layer: :class:`~axioma.render.ThematicLayer` .. py:method:: RangeThematicStyleProvider(other) Копирующий конструктор :param other: Исходный экземпляр, на базе которого создается текущий экземпляр объекта. :type other: :class:`RangeThematicStyleProvider` .. py:method:: typeSplitting() Возвращает установленный тип распределения значений :return: Значение. :rtype: :data:`TypeSplitting` .. py:method:: setTypeSplitting(value) Установка типа распределения значений. :param value: Допустимые значения см. в таблице выше. :type value: :class:`TypeSplitting` .. py:method:: initIntervals(ranges, preservedExistedStyle = False) Автоматическое разбиение на интервалы в соответствие с ранее заданными параметрами оформления. :param ranges: Количество интервалов. :type ranges: :class:`int` :param preservedExistedStyle: Если стили уже установлены, постараться их сохранить. :type preservedExistedStyle: :class:`bool` .. py:method:: splitValuesToIntervals() Задание минимума и максимума для каждого интервала посредством анализа полученных ранее из источника данных. .. py:method:: colorMin() Возвращается цвет для минимального значения. Используется как одна из базовых величин при распределении значений по интервалам. :return: Цвет для минимального значения. :rtype: :class:`QColor` .. py:method:: setColorMin(color) Задается цвет для минимального значения. После задания необходимо повторно инициализировать, выполнив initIntervals :param color: Новое значение для цвета. :type color: :class:`QColor` .. py:method:: colorMax() Возвращается цвет для максимального значения. Используется как одна из базовых величин при распределении значений по интервалам. :return: Цвет для максимального значения. :rtype: :class:`QColor` .. py:method:: setColorMax(color) Задается цвет для максимального значения. После задания необходимо повторно инициализировать, выполнив initIntervals :param color: Новое значение для цвета. :type color: :class:`QColor` .. py:method:: colorBreak() Возвращается промежуточный цвет, если таковой был задан ранее. :return: Цвет. :rtype: :class:`QColor` .. py:method:: breakRange() Возвращается номер интервала, для которого задан промежуточный цвет. :return: Интервал. :rtype: :class:`int` .. py:method:: setBreakParameters(color, range) Задается промежуточный цвет и номер интервала, которому он соответствует. Далее, при распределении цветов, он устанавливается для интервала range, остальные цвета получаются в виде градиента от установленных. После задания необходимо повторно инициализировать, выполнив initIntervals :param color: Новое значение для цвета. :type color: :class:`QColor` :param range: Номер интервала. :type range: :class:`int` .. py:method:: thematicStyleParamsList() Возвращается список параметров по существующим интервалам. :return: Список параметров. :rtype: :class:`list` [:class:`ThematicRangeStyleParam`] .. py:method:: setThematicStyleParamsList(list) Замена существующего списка параметров по интервалам новым. :param list: Новый список с параметрами. :type list: :class:`ThematicRangeStyleParam` .. py:method:: thematicStyleParam(index) Получение параметров интервала по его индексу. :param index: Индекс требуемого параметра. :type index: :class:`int` :return: Параметры запрашиваемого интервала. :rtype: :class:`ThematicRangeStyleParam` .. py:method:: setThematicStyleParam(index, param) Замена существующего набора параметров конкретного интервала по его индексу. :param index: Индекс параметра. :type index: :class:`int` :param param: Новые параметры заданного интервала. :type param: :class:`ThematicRangeStyleParam` .. py:method:: rangesCount() Количество интервалов. :return: Количество интервалов. :rtype: :class:`int` .. py:method:: reallocateColorBySettingParams() Перераспределение по цветам существующего списка параметров исходя из заданных новых значений по цветам. .. py:method:: calculateValuesCountByIntervals() Перераспределение полученных ранее из таблицы значений после смены типа распределения TypeSplitting. .. py:method:: defaultStyle() Возвращает коллекцию стилей оформления (по типам объектов), заданный по умолчанию. В дальнейшем для каждого значения стиль можно переопределить :return: Коллекцию стилей :rtype: :class:`~axioma.render.CollectionStyle` .. py:method:: setDefaultStyle(style) Переопределение стилей по-умолчанию :param style: Новый набор стилей оформления :type style: :class:`CollectionStyle` RangeThematicLayer =================== .. currentmodule:: axioma.render .. class:: RangeThematicLayer Тематический слой с распределением по интервалам и с распределением по цветовой гамме Унаследован от: :class:`~axioma.render.ThematicLayer` .. py:method:: RangeThematicLayer(parent) Конструктор :param parent: Ссылка на слой, на базе которого создается данный тематический слой. :type parent: :class:`FeatureLayer` .. py:method:: RangeThematicLayer(other) Копирующий конструктор :param other: Исходный слой, на базе которого создается новый слой. :type other: :class:`RangeThematicLayer` .. py:method:: styleProvider() Возвращает текущий провайдер стилей для слоя. :return: Копия провайдера стиля, установленного для слоя на данный момент :rtype: :class:`RangeThematicStyleProvider` .. py:method:: setStyleProvider(provider) Устанавливает новый провайдер стилей для слоя. :param provider: Новый провайдер стилей. :type provider: :class:`RangeThematicStyleProvider` Пример использования: .. 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 addRangeThematic(layer): rangeLayer = RangeThematicLayer(layer) # Создание самого слоя rangeStyleProvider = RangeThematicStyleProvider(rangeLayer) # Стиль оформления evaluator = makeExpressionForWorld(layer, QObject().tr("Население")) if not evaluator.hasError(): rangeStyleProvider.setEvaluator(evaluator); rangeStyleProvider.setTypeSplitting(RangeThematicStyleProvider.TS_EUQUAL_COUNT); rangeStyleProvider.initValuesFromTable( layer.table()) # чтение из таблицы rangeStyleProvider.setColorMin(Qt.red) # цвет минимума rangeStyleProvider.setBreakParameters(Qt.green, 6) # Разрыв по цвету rangeStyleProvider.setColorMax(Qt.yellow) # цвет максимума rangeStyleProvider.initIntervals(12); # Количество интервалов rangeStyleProvider.splitValuesToIntervals() # Разбиение полученых значений по интервалам rangeLayer.setStyleProvider(rangeStyleProvider) # Установка провайдера стиля addLayer(layer, rangeLayer) Пример с явным указанием параметров каждого интервала: .. code-block:: python ... def colorToMapbasic(color): return QColor(color).rgb() - 0xFF000000 def addRangeThematicManual(layer): print("Range manual range thematic..." ) rangeLayer = RangeThematicLayer(layer) # Создание самого слоя rangeStyleProvider = RangeThematicStyleProvider(rangeLayer) # Стиль оформления evaluator = makeExpressionForWorld(layer, QObject().tr("Население")) if not evaluator.hasError(): rangeStyleProvider.setEvaluator(evaluator); rangeStyleProvider.setTypeSplitting(RangeThematicStyleProvider.TS_EUQUAL_COUNT); rangeStyleProvider.initValuesFromTable( layer.table()) # чтение из таблицы # Явно устанавливаем интервалы и соотвествующие им стили style1 = MapBasicStyle().styleFromString("Pen (1, 2, 0) Brush (2, %d)" % ( colorToMapbasic(Qt.red))) style2 = MapBasicStyle().styleFromString("Pen (1, 2, 0) Brush (2, %d)" % ( colorToMapbasic(Qt.blue))) style3 = MapBasicStyle().styleFromString("Pen (1, 2, 0) Brush (2, %d)" % ( colorToMapbasic(Qt.green))) p1 = ThematicRangeStyleParam(0, 1326796, style1) p2 = ThematicRangeStyleParam(1326796, 8954000, style2) p3 = ThematicRangeStyleParam(8954000, 1130510638, style3) pars = [p1, p2, p3] # Массив с параметрами интервалов rangeStyleProvider.setThematicStyleParamsList(pars) rangeLayer.setStyleProvider(rangeStyleProvider) # Установка провайдера стиля rangeLayer.setName('Интервалы по параметрам') addLayer(layer, rangeLayer)