Не отображается слой на программно созданной компоновке

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
DaryaNeko
Новоприбывший
Сообщения: 2
Зарегистрирован: 27 окт 2016, 13:26
Репутация: 0

Не отображается слой на программно созданной компоновке

Сообщение DaryaNeko » 27 окт 2016, 13:38

Добрый день!

Я использую QGis 2.14.5

Мне необходимо написать скрипт на питоне, который бы выполнял следующие шаги:
1. Создание нового слоя
2. Создание новой компоновки
3. Добавление карты на компоновку

Проблема в следующем - новый слой не отображается в компоновке, пока пользователь не выполнит руками какое-либо действие (обновление, изменение масштаба и т.д.)
Т.е. как будто компоновка рисуется ДО того, как слой попал на карту.

Код:
layer = QgsMapLayerRegistry.instance().mapLayersByName('parcellayout_polygon')[0]
crs = layer.crs().toWkt()
point_layer = QgsVectorLayer('Point?crs=' + crs, 'tmp', 'memory')

pr = point_layer.dataProvider()
point_layer.startEditing()

fet = QgsFeature()
fet.setGeometry(QgsGeometry.fromPoint(QgsPoint(5162404, 4977332)))
pr.addFeatures([fet])

point_layer.commitChanges()
point_layer.updateExtents()

QgsMapLayerRegistry.instance().addMapLayer(point_layer)
iface.mapCanvas().refresh()

QgsMapLayerRegistry.instance().reloadAllLayers()

view = iface.createNewComposer()
c = view.composition()

x, y = 0, 0
w, h = c.paperWidth() - 100, c.paperHeight()
composer_map = QgsComposerMap(c, x, y, w, h)
c.addComposerMap(composer_map)
composer_map.setPreviewMode(QgsComposerMap.Render)
composer_map.updateItem()

c.refreshItems()

Подскажите, пожалуйста, как программно показать актуальную компоновку, с новым слоем?

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: _taras_, Amazon [Bot] и 21 гость