axioma.render.
Map
¶Класс карты. Предназначен для предоставления доступа к своим элементам: слоям и группам слоев.
Map
(parent=None)¶Конструктор
Параметры: parent ( QObject
) – Родительский объект. При удалении владельца так же удаляется и сам элемент
Map
(layers, parent=None)Конструктор
Параметры:
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)