Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 3 sur 3
  1. #1

    Date d'inscription
    juillet 2013
    Messages
    21

    Par défaut Multiple Tris : QgsFeatureRequest OrderBy?

    Bonjour,

    Je dispose d'un Shape avec ses attributs à partir desquels je souhaite créer une liste combinée avec trois champs (cette liste alimentera une Combobox dans un formulaire Qt). Donc je suis parti là dessus :

    Code:
    Liste = []
    for elem in sortie.getFeatures():
        Ligne = elem['si'] + " | " + elem['uu'] + " | " + elem['nom_poche']
        Liste.append(Ligne)
    Mais ma liste n'est pas triée :

    Code:
    for l in Liste:
        print(l)
    >>>
    ZRD-003 | AVIGNON | CAVALLION
    ZRD-004 | AVIGNON | CHATEAURENARD
    ZRD-043 | RENNES | RENNES NORD
    ZRD-043 | RENNES | RENNES NORD
    SI654321 | STRASBOURG | Schulmeister
    SI123456 | C1 | LaDefense_2
    SI123456 | C1 | LaDefense_1
    J'aimerais pouvoir faire un double trie sur 'nom_poche' et 'uu', de préférence sur les Features de ma couche en amont plutôt que sur la liste retournée pour cet exercice.

    Je crois tenir une piste avec QgsFeatureRequest et OrderBy, OrderByClause, ou addOrderBy mais je ne comprends pas leur fonctionnement (en dépit de mes lectures sur l'API, le Cookbook, GIS Exchange ou autre).

    Pour commencer si je fais cela :
    Code:
    for elem in sortie.getFeatures(QgsFeatureRequest().OrderByClause('si',True)):
         coucou = elem['si']
    Traceback (most recent call last):
      File "C:\PROGRA~2\QGIS3~1.2\apps\Python36\lib\code.py", line 91, in runcode
        exec(code, self.locals)
      File "<input>", line 1, in <module>
    TypeError: QgsVectorLayer.getFeatures(): arguments did not match any overloaded call:
      overload 1: argument 1 has unexpected type 'OrderByClause'
      overload 2: argument 1 has unexpected type 'OrderByClause'
      overload 3: argument 1 has unexpected type 'OrderByClause'
      overload 4: argument 1 has unexpected type 'OrderByClause'
    Je ne comprends pas pourquoi mais j'y arrive avec 'addOrderBy' sur un seul champ :

    Code:
    for elem in sortie.getFeatures(QgsFeatureRequest().addOrderBy('si',True)):
    Mais là je ne vois pas du tout comment combiner plusieurs addOrderBy, ou comment l'utiliser avec OrderByClause
    Pourtant l'API déclare clairement cette possibilité (ici) :
    "The OrderByClause class represents an order by clause for a QgsFeatureRequest.It can be a simple field or an expression. Multiple order by clauses can be added to a QgsFeatureRequest to fine tune the behavior if a single field or expression is not enough to completely specify the required behavior."


    QgsFeatureRequest est-il le meilleur moyen d'arriver à mes fins? (il existe un moyen le faire en python pure, j'aimerais le faire via la bibliothèque QGis mais si c'est aberrant je prendrais note)
    Une âme charitable pourrait-elle me venir en aide svp ?

  2. #2
    Modérateur
    Date d'inscription
    novembre 2012
    Localisation
    Angers
    Messages
    676

    Par défaut Re : Multiple Tris : QgsFeatureRequest OrderBy?

    Bonjour,
    Quid de
    Code:
    for elem in sortie.getFeatures(QgsFeatureRequest().addOrderBy('si',True).addOrderBy('uu'))
    Ps: il y a aussi une doc Python à https://qgis.org/pyqgis/master/core/...reRequest.html
    "Les maisons sont proches pour qu'on puisse aller chercher du feu." Proverbe Moba
    Avant de poster, lire au moins une fois : De la bonne manière de poser les questions

  3. #3

    Date d'inscription
    juillet 2013
    Messages
    21

    Par défaut Re : Multiple Tris : QgsFeatureRequest OrderBy?

    Bonjour Santanna,

    Merci beaucoup pour cette réponse, il suffisait donc de leur mettre à la suite
    Et merci pour ce lien, effectivement je suis passé à coté!


 

 

Discussions similaires

  1. [ArcGIS 9.x] Symbologie multiple
    Par Laeti24 dans le forum Assistance Technique
    Réponses: 3
    Dernier message: 26/03/2014, 08h14
  2. [QGIS 1.x] Jointure multiple
    Par sigdu80 dans le forum Assistance et Programmation
    Réponses: 15
    Dernier message: 23/03/2012, 09h38
  3. [QGIS 1.x] Questions multiple
    Par valdorant dans le forum Assistance et Programmation
    Réponses: 7
    Dernier message: 18/01/2011, 13h18
  4. [ArcGIS 9.x] Condition multiple
    Par Erz' dans le forum Programmation
    Réponses: 2
    Dernier message: 13/05/2010, 11h27
  5. [Logiciel] Recherche logiciel pour requêtes/tris sur des tables
    Par Quef dans le forum Assistance Logiciel
    Réponses: 18
    Dernier message: 14/09/2006, 13h06

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •