Відповіді:
Отримайте посилання на шар:
layer = iface.activeLayer()
Виберіть функції за виразом:
layer.selectByExpression( "\"ogc_fid\"=482" )
Виконайте такі дії:
Отримайте посилання на шар:
cLayer = iface.mapCanvas().currentLayer()
Отримати функціюIterator з виразу:
expr = QgsExpression( "\"ogc_fid\"=482" )
it = cLayer.getFeatures( QgsFeatureRequest( expr ) )
Створіть список ідентифікаторів функцій з результату, отриманого в 2 .:
ids = [i.id() for i in it]
Виберіть функції за допомогою ідентифікаторів, отриманих у 3 .:
cLayer.setSelectedFeatures( ids )
ПРИМІТКА. Якщо ви хочете встановити вираз зі значенням рядка , вам потрібно додати такі лапки таким чином:
expr = QgsExpression( " \"name\" = 'my string' " )
Якщо значення рядка походить від змінної, ви можете зробити це:
myVariable = 'my string'
expr = QgsExpression( " \"name\" = '{}' ".format(myVariable) )
"\"ogc_fid\"=482 AND \"name\"='hello world'"
. До речі, посилання, яке ви включили у свій коментар, насправді вказує, що статичний атрибут BinaryOperatorText
недоступний у прив'язках Python, але оператори працюють QgsExpression
, навіть якщо вони використовуються через прив'язки Python.
expr = QgsExpression("\"police_ref\" = 'P0580996'")
. Я спробував додати пошуковий знак до пошукового терміну (для одинарних лапок), але це не має значення. Цікаво, що якщо я відкрию таблицю атрибутів, яку я запитую, і використовую там конструктор виразів, він робить вибір, якщо поліція_ref, яку я використовую як приклад, знаходиться в першому ряду, але не інакше
Це працювало для мене на консолі QGIS Python
layer = qgis.utils.iface.activeLayer()
layer .selectByExpression(" \"ogc_fid\" = '{}' ".format(482))
Вам потрібно лише протестувати його в інтерфейсі GUI: "Вибрати за виразом". Якщо він працює, ви можете вставити його у свій код Python в оточенні подвійних лапок.
exp = QgsExpression("ogc_fid=482")
Якщо ви порівнюєте з рядком, ви можете додати одну цитату ''.
exp = QgsExpression("ogc_fid='482'")
Це той самий принцип у python, він може зробити різницю між подвійною цитатою та одиничною цитатою.
"\"ogc_fid\"=482 AND name=\"hello world\""
? Тут написано, що це не доступно в python: qgis.org/api/… . Може бути, ви знаєте спосіб обійти це обмеження?