Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 17 March 2021 19:12

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

QGIS 3: pyqgis filtrer un vector layer

Bonjour,

Avec pyqgis, j'ouvre un layer de format geojson.
Je filtre les entités suivant un attribut et je crée un layer  avec les entités filtrées, et j'affiche ce layer.

Voici mon code:

Code:

vlayer = QgsVectorLayer(filename, "myLayer", "ogr")
features = vlayer.getFeatures('"code" = \''+ma_valeur+'\'')
layer = QgsVectorLayer('Point?crs=epsg:4326', unique_value , 'memory')
prov = layer.dataProvider()
prov.addFeatures(features)
QgsProject.instance().addMapLayer(layer)

Mais sur le layer des entités filtrées, je n'ai pas accès aux attributs (quand je fait clic droit > ouvrir la table d'attributs, elle vide).
Pourquoi? Comment résoudre?

Merci, Nico

Hors ligne

 

#2 Thu 18 March 2021 09:51

Olivier Pompier
Participant occasionnel
Date d'inscription: 8 Sep 2013
Messages: 49

Re: QGIS 3: pyqgis filtrer un vector layer

Bonjour Nico,

Et avec ce script :

Code:

vlayer = QgsVectorLayer(filename, "myLayer", "ogr")
features = vlayer.getFeatures('"code" = \''+ma_valeur+'\'')
fields = vlayer.fields()
layer = QgsVectorLayer('Point?crs=epsg:4326', unique_value , 'memory')
prov = layer.dataProvider()
prov.addAttributes(fields.toList())
layer.updateFields()
prov.addFeatures(features)
QgsProject.instance().addMapLayer(layer)

?
Cordialement

Dernière modification par Olivier Pompier (Thu 18 March 2021 09:51)

Hors ligne

 

Pied de page des forums

Powered by FluxBB