Стоит задача из внешней программы выделить определённые объекты на карте по заданным атрибутам. Пока создал тестовую карту и написал скрипт.
Спойлер
Код: Выделить всё
# 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_()