Отобразить объекты на карте с помощью standalone скрипта

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
alexdtst
Новоприбывший
Сообщения: 6
Зарегистрирован: 31 июл 2017, 12:33
Репутация: 0

Отобразить объекты на карте с помощью standalone скрипта

Сообщение alexdtst » 31 июл 2017, 12:49

Здравствуйте, подскажите, пожалуйста, как можно отобразить объекты на карте с помощью standalone скрипта на Питоне?
Стоит задача из внешней программы выделить определённые объекты на карте по заданным атрибутам. Пока создал тестовую карту и написал скрипт.
Спойлер

Код: Выделить всё

# coding=UTF-8
from qgis.core import *
from PyQt4.QtCore import QFileInfo
from qgis.core import QgsMapLayerRegistry
from qgis.core import QgsMapLayer
from qgis.gui import QgsMapCanvas,QgsLayerTreeMapCanvasBridge
import os.path

qgis = QgsApplication([], True)
qgis.initQgis()

project = QgsProject.instance()
canvas = QgsMapCanvas()
if project.fileName() == "": 
    my_file = os.path.isfile(os.path.join('c:\qgis_test','test.qgs'))
    if my_file:
      project.read(QFileInfo(os.path.join('c:\qgis_test','test.qgs')))

bridge = QgsLayerTreeMapCanvasBridge(project.layerTreeRoot(), canvas, qgis)
layers = QgsMapLayerRegistry.instance().mapLayers()
expr = QgsExpression( "\"name\"='{}'".format('Gothenburg'))

selLayer = layers.items()[0][1]

it = selLayer.getFeatures(QgsFeatureRequest(expr))
ids = [i.id() for i in it]
selLayer.setSelectedFeatures(ids)
box = selLayer.boundingBoxOfSelected()

canvas.setExtent(box)
canvas.refresh()
canvas.zoomToFeatureIds(selLayer,ids)
canvas.refresh()
canvas.show()
qgis.exec_()
скрипт отрабатывает нормально, но на запущенной карте это никак не отражается. В таком виде он открывает питоновское окно с картой. Если убрать последнюю строчку, то просто мелькает окошко консоли и также ничего не происходит на запущенной карте. Как можно связать скрипт с открытой картой?

Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 22 гостя