#1 Tue 18 June 2019 14:29
- aknleo
- Participant occasionnel
- Lieu: Libreville
- Date d'inscription: 15 Apr 2014
- Messages: 22
QGIS: code pyqgis filtrer sur couche
Bonjour,
Je suis nouveau dans qgis et pyqgis.
Je suis à la recherche du code pyqgis qui me permet de filtrer sur une couche de mon projet.
J'ai essayé le code suivant:
FParcel = QgsMapLayerRegistry.instance().mapLayersByName('Parcelles voisines')[0]
Parcel = iface.setActiveLayer(FParcel)
Ch_SPC = 'SPC'
field = FParcel.fieldNameIndex(Ch_SPC)
##
SPC_Pcl = '10111'
expr = QgsExpression(Ch_SPC + ' LIKE ' + SPC_Pcl)
request.setFilterExpression(expr)
iface.showAttributeTable(FParcel)
Fin de mon code
Mais j'ai toujours toutes les données de ma couche.
Merci d'avance pour vos réponses.
Hors ligne
#2 Wed 19 June 2019 15:50
- trovez
- Participant occasionnel
- Lieu: Nantes
- Date d'inscription: 17 Sep 2007
- Messages: 24
Re: QGIS: code pyqgis filtrer sur couche
Bonjour,
Si le champ est de type texte,
expr = QgsExpression(Ch_SPC + ' LIKE ' + SPC_Pcl)
renvoie
<QgsExpression: 'SPC LIKE 10111'>
ce qui n'est pas la forme pour un filtre sur un champ texte.
Il faudrait obtenir
"SPC LIKE '10111'"
la valeur étant entourée par des guillemets simples.
essaye avec :
expr = QgsExpression("Ch_SPC LIKE ' %s '" % (SPC_Pcl))
Bonne journée.
Hors ligne
#3 Thu 20 June 2019 08:56
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: code pyqgis filtrer sur couche
Bonjour,
Au delà de la remarque de trovez,
quel est le but ? Afficher la table attributaire filtrée?
Code:
filter = "Ch_SPC LIKE ' %s '" % (SPC_Pcl) iface.showAttributeTable(FParcel, filter)
Ceci doit permettre de filtrer le contenu de la table attributaire filtrée.
Votre code sert surtout à boucler sur les éléments qui répondent aux critères.
Hors ligne
#4 Thu 20 June 2019 12:56
- aknleo
- Participant occasionnel
- Lieu: Libreville
- Date d'inscription: 15 Apr 2014
- Messages: 22
Re: QGIS: code pyqgis filtrer sur couche
Merci à tous,
j'ai essayé la proposition de trovez et ça marche.
Hors ligne