Добрый день!
Я использую 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()
Подскажите, пожалуйста, как программно показать актуальную компоновку, с новым слоем?
Не отображается слой на программно созданной компоновке
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 27 окт 2016, 13:26
- Репутация: 0
Кто сейчас на конференции
Сейчас этот форум просматривают: _taras_, Amazon [Bot] и 21 гость