Réponses:
Il y a en fait une astuce très simple. Supposons que vous vouliez d'abord trier par champ "A", puis par champ "B" dans "A". Cliquez d'abord avec le bouton gauche de la souris sur l'en-tête du champ "B" (cliquez une fois pour trier par ordre croissant, une deuxième fois pour trier par ordre décroissant) dans la table des attributs. Faites ensuite un clic gauche sur l'en-tête du champ "A" (une fois pour ASC, 2ème fois pour DESC). Cette dernière action aura trié le champ "A", tout en conservant le tri du champ "B" dans des valeurs identiques de "A". Je l'ai essayé avec 3 champs et ça marche aussi (puis je me suis ennuyé). J'utilise QGIS 3.6.3-Noosa.
Vous pouvez utiliser le plugin Trier et numéroter. Il vous permet de trier une table attributaire jusqu'à 3 champs, puis il crée un champ supplémentaire qui contient l'ordre des entités triées.
Avertissement: je suis l'auteur du plugin.
sort()
fonction de Python , je me demande pourquoi il est si lent. Je vais essayer de trouver une astuce pour accélérer le processus dans une future version.
Si est OK pour enregistrer le résultat de façon permanente, vous pouvez trier le fichier de formes avec GDAL
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "SELECT *
FROM my_shapefile ORDER BY attr_1, attr_2, attr_3" sorted.shp my_shapefile.shp
Cela a pris moins de 3 minutes avec un fichier de formes contenant un million de polygones.
Le plug-in DB Manager dans QGIS possède désormais un nœud «Couches virtuelles» qui vous permet d'écrire des commandes SQL sur des fichiers de formes chargés dans votre projet QGIS.
Alors maintenant que vous avez cette capacité, la logique SQL pour trier par plusieurs champs se trouve dans l'instruction ORDER BY, en utilisant asc (ascendant), desc (décroissant), et vous pouvez les enchaîner pour trier par plusieurs colonnes:
Un bonus supplémentaire est que vous en apprendrez plus sur SQL, donc quand vous en aurez marre des fichiers de formes et la plupart de PostGIS, le saut ne sera pas si grand !!!
Cela peut maintenant être fait sans plugins ni travaux spécifiques à la base de données, au moins pour la version 3.2+. Pour trier par plusieurs colonnes:
concat()
avec les champs que vous souhaitez trier, dans le bon ordre (ex. concat("column1", "column2")
). Un aperçu de sortie doit être affiché sous votre code.Cette fonctionnalité a été ajoutée via le numéro # 1137 et couverte dans la dernière version (développement) du manuel de l'utilisateur .
concat("col1", right( ('000' || tostring( "col2" )), 4))
Eh bien, c'est maintenant 2018, donc je ne peux pas croire que ce n'est pas encore répondu.
Ouvrez la vue de la table des attributs et cliquez avec le bouton droit sur n'importe quelle colonne, puis choisissez Trier ...
La fenêtre de dialogue Configurer l'ordre de tri de la table d'attributs est désormais ouverte avec l'éditeur d'expression complète
Utilisez la fonction COALESCE avec les colonnes souhaitées, par exemple, cela triera un tableau par 3 colonnes (d'abord par ID puis VERSION puis fid)
coalesce("ID","VERSION","fid" )
Cliquez sur OK pour trier le tableau
Vous ne pouvez pas (du moins pas pour le moment). Pardon!
Consultez la documentation QGIS et faites défiler jusqu'à la toute dernière ligne.
Une solution de rechange désagréable serait de tirer le DBF du Shapefile dans Excel. Triez-le et enregistrez le résultat. Vous pouvez également importer votre fichier Shapefile dans PostGIS ou SpatialLite où vous disposez d'une plus grande fonctionnalité de tri. Fondamentalement, vous devrez contourner QGIS pour un tri avancé.
Comme suggéré par @Sylvester Sneekly, si vos données sont chargées dans un SGBDR comme PosGIS ou SpatialLite, vous pouvez envisager de créer une vue de base de données dans le SGBDR qui pré-trie les données tabulaires, puis chargez la vue pré-triée dans QGIS en tant que couche.