Map

class axioma.render.Map

Класс карты. Предназначен для предоставления доступа к своим элементам: слоям и группам слоев.

Map(parent=None)

Конструктор

Параметры:parent (QObject) – Родительский объект. При удалении владельца так же удаляется и сам элемент
Map(layers, parent=None)

Конструктор

Параметры:
  • layers (list [ Layer ]) – Первоначальный список слоев для инициализации карты
  • parent (QObject) – Родительский объект. При удалении владельца так же удаляется и сам элемент
rootLayerGroup()

Корневая группа слоев карты.

Результат:Группа слоев
Тип результата:RootLayerGroup
renderSelection(context)

Отрисовка выделения в карте

Параметры:context (Context) – Контекст, в котором будет отрисовано выделение
findBestCoordSys()

Возвращает координатную систему, в которой может быть нарисовано наибольшее число слоев.

Результат:Координатная система
Тип результата:CoordSystem
boundingRect(cs)

Определение области карты.

Параметры:cs (CoordSystem) – КС для области
Результат:Область карты, в которую попадают все слои
Тип результата:GeoRect
canRenderAllLayersInCS(cs)

Определение, могут ли все слои карты быть отображены в переданной координатной системе.

Параметры:cs (CoordSystem) – КС для проверки
Результат:True, если да. В противном случае False
Тип результата:bool
editableLayer()

Редактируемый слой карты

Результат:Слой или None, если таковой отсутствует
Тип результата:Layer
setEditableLayer(layer)

Установка редактируемого слоя.

Параметры:layer (Layer) – Слой, который нужно сделать редактируемым.
flatLayerList()

Список слоев карты.

Результат:“Плоский” список слоев карты со всех уровней вложенности
Тип результата:list [ Layer ]
mapProperties()

Текущие настройки карты.

Результат:Настройки
Тип результата:MapProperties
setMapProperties(mapProperties)

Установка настроек карты.

Параметры:mapProperties (MapProperties) – Новый набор настроек
labelContainer()

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

Результат:контейнер параметров подписывания
Тип результата:FeatureLabelContainer
needRedraw()

[signal] Сигнал испускается, когда необходимо перерисовать содержимое карты.

visibilityChanged()

[signal] Сигнал испускается, когда меняются параметры видимости содержимого карты.

editableLayerChanged()

[signal] Сигнал испускается, когда производится смена редактируемого слоя.

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

def renderMap(table): # Рисование карты c одним слоем
try:
    layer = axioma.app.gui.createLayerForDataObject(table) # временный слой
    br = layer.boundingRect() # rect слоя
    baseSize = 800
    imRect = QRect (0, 0, baseSize, baseSize * br.height() / br.width()) # размер растра
    image = QImage(imRect.size(), QImage.Format_ARGB32_Premultiplied) # Сам растр, куда будем рисовать
    image.fill(Qt.white)
    painter = QPainter(image)
    sceneRect = QRectF(br.left(), br.top(), br.width(), br.height()) # Будем рисовать всю область слоя
    viewport = MapViewport(QRectF(imRect), sceneRect, layer.coordSystem())
    context = MapContext (painter,viewport) # контекст, куда рисуем
    #layer.render(context) # Если мы хотим просто отрисовать существующий слой, не создавая карты (Вместо следующих строчек с созданием карты)
    map = Map() # Создаем карту
    renderer = ConcurrentMapRenderer() # Объект, занимающийся многопоточной отрисовкой
    props = layer.featureLayerProperties() # Свойства слоя

    #Если мы хотим управлять видимостью
    #constraints = props.visibilityConstraints() # Ограничение по видимости
    #print(constraints.zoomMin(), constraints.zoomMax()) # Текущие значения
    #constraints.setZoomMax(2) #
    #constraints.setEnabled(True) # Включаем
    #props.setVisibilityConstraints(constraints) # Подменяем

    props.setLabelingAttributeName(self.tr("Страна"))   # устанавливаем выражение для метки
    props.setShowLabels(True) # Показ меток
    props.setCentroidsVisible(True) # Показ центроидов
    layer.setProperties(props) # Устанавливаем новые свойства слоя

    map.rootLayerGroup() .append(layer) # добавляем слой в карту
    renderer.blockingRender(map, context) # отрисовка
    #self.image.save("/tmp/out.png") # Если мы хотим сохранить как растр в файловой системе
except Exception as ex:
    print(ex)