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 Mon 08 July 2019 17:31

zakarya2626
Participant occasionnel
Date d'inscription: 9 May 2019
Messages: 13

QGIS: comment recuperer les Elts selectionnes dans une "listview"?

Je suis en train de développer un plugin sur QGIS 2.8.2 en utilisant Pyqt 4.
L'idée est d'utiliser la fonction 'qgis:extractbylocation' afin d'extraire la zone d'étude.

Code:

 # Récupérer tous les iris qui s'intersectent avec la zone d'étude
    res = processing.runalg('qgis:extractbylocation', irisLayer, layerZone, u'intersects', 0, None)

    # Créer une couche vector issue de l'extraction des IRIS dans la zone
    ObjectifVilleExtract.irisLayer = QgsVectorLayer(res['OUTPUT'], "IRIS dans la zone d'etude", "ogr")
    QgsMapLayerRegistry.instance().addMapLayer(ObjectifVilleExtract.irisLayer)

    # Définir un ecodage Windows compatible avec le français
    ObjectifVilleExtract.irisLayer.setProviderEncoding(u'iso-8859-1')

    # Modifier l'encoage
    ObjectifVilleExtract.irisLayer.dataProvider().setEncoding(u'iso-8859-1')

    # Vérifier que le couche est valide sinon afficher que la couche est erronée
    if not ObjectifVilleExtract.irisLayer.isValid():
        print "Layer failed to load!"

Après afficher les résultats dans la listeview :

Code:

ObjectifVilleExtract.features = ObjectifVilleExtract.irisLayer.getFeatures()
    ObjectifVilleExtract.model = QStandardItemModel(ObjectifVilleExtract.features)
    for feature in ObjectifVilleExtract.features:
        item = QStandardItem(feature['nom_iris'])
        item.setCheckable(True)
        ObjectifVilleExtract.model.appendRow(item)
        self.dlg.listView_3.setModel(ObjectifVilleExtract.model)
        self.dlg.listView_3.show()

Maintenat je veux récupérer les éléments sélectionnés sur la listeview (qui sont des entités) afin d'en appliquer la requête suivante :

Code:

  iter = ObjectifVilleExtract.features.getFeatures()
    for feature in iter :
        q1 = "SELECT nom_com FROM france_full_data.contours_iris WHERE code_iris='" + feature['code_iris'] + "' "

I tried to use the following code :

    for feature in ObjectifVilleExtract.features:
        while ObjectifVilleExtract.model.item(feature['nom_iris']) :
            if ObjectifVilleExtract.model.item(feature['nom_iris']).ischecked():
                ObjectifVilleExtract.iter = ObjectifVilleExtract.irisLayer.getFeatures()
                irisTab=[]
                for feature in ObjectifVilleExtract.iter :
                    q1 = "SELECT nom_com FROM france_full_data.contours_iris WHERE code_iris='" + feature['code_iris'] + "' "

le résultat toujours est vide !

Hors ligne

 

Pied de page des forums

Powered by FluxBB